From 2b57c019cb08b78755fbd773bfe3f52ac05a892f Mon Sep 17 00:00:00 2001 From: Refosel Date: Mon, 30 Mar 2026 10:39:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BB=D0=B8=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamemodes/cod_custom/cod_custom.txt | 7 + .../cod_custom/entities/effects/base.lua | 39 + .../cod_custom/entities/effects/dof_node.lua | 55 + .../entities/effects/tooltracer.lua | 58 + .../entities/entities/aoc_spawnpoint.lua | 10 + .../entities/entities/base_ai/cl_init.lua | 25 + .../entities/entities/base_ai/init.lua | 131 + .../entities/entities/base_ai/schedules.lua | 199 + .../entities/entities/base_ai/shared.lua | 44 + .../entities/entities/base_ai/tasks.lua | 81 + .../entities/entities/base_anim.lua | 104 + .../entities/entities/base_brush.lua | 56 + .../entities/entities/base_entity/cl_init.lua | 24 + .../entities/entities/base_entity/init.lua | 77 + .../entities/entities/base_entity/outputs.lua | 80 + .../entities/entities/base_entity/shared.lua | 6 + .../entities/entities/base_filter.lua | 44 + .../entities/entities/base_gmodentity.lua | 140 + .../entities/entities/base_nextbot/shared.lua | 55 + .../entities/base_nextbot/sv_nextbot.lua | 403 ++ .../entities/entities/base_point.lua | 45 + .../entities/diprip_start_team_blue.lua | 10 + .../entities/diprip_start_team_red.lua | 10 + .../entities/entities/dys_spawn_point.lua | 10 + .../entities/entities/env_skypaint.lua | 135 + .../entities/entities/gmod_hands.lua | 67 + .../entities/entities/gmod_player_start.lua | 81 + .../entities/entities/info_player_allies.lua | 10 + .../entities/entities/info_player_axis.lua | 10 + .../entities/entities/info_player_blue.lua | 10 + .../entities/entities/info_player_coop.lua | 10 + .../entities/info_player_counterterrorist.lua | 10 + .../entities/info_player_deathmatch.lua | 10 + .../entities/info_player_desperado.lua | 10 + .../entities/entities/info_player_fof.lua | 10 + .../entities/entities/info_player_human.lua | 10 + .../entities/entities/info_player_knight.lua | 10 + .../entities/entities/info_player_pirate.lua | 10 + .../entities/entities/info_player_red.lua | 10 + .../entities/info_player_terrorist.lua | 10 + .../entities/info_player_vigilante.lua | 10 + .../entities/entities/info_player_viking.lua | 10 + .../entities/entities/info_player_zombie.lua | 10 + .../entities/info_player_zombiemaster.lua | 10 + .../entities/entities/info_spawnpoint.lua | 10 + .../entities/info_survivor_position.lua | 10 + .../entities/info_survivor_rescue.lua | 10 + .../entities/entities/ins_spawnpoint.lua | 10 + .../cod_custom/entities/entities/lua_run.lua | 63 + .../entities/mwii_down_npc/shared.lua | 267 ++ .../entities/mwii_sequence_npc/shared.lua | 126 + .../entities/mwii_takedown_npc/shared.lua | 160 + .../entities/entities/npc_tf2_ghost.lua | 72 + .../entities/entities/prop_effect.lua | 178 + .../entities/entities/ragdoll_motion.lua | 304 ++ .../entities/entities/tdm_ah64/shared.lua | 410 ++ .../entities/tdm_ah64_rocket1/shared.lua | 39 + .../entities/tdm_ah64_rocket2/shared.lua | 37 + .../entities/entities/tdm_cmine/shared.lua | 102 + .../entities/entities/tdm_cmine2/shared.lua | 90 + .../entities/entities/tdm_deathanim/init.lua | 126 + .../entities/tdm_deathanim/shared.lua | 21 + .../entities/tdm_domination_flag/shared.lua | 281 ++ .../entities/entities/tdm_drone/shared.lua | 308 ++ .../entities/entities/tdm_flash/shared.lua | 75 + .../entities/entities/tdm_frag/shared.lua | 38 + .../entities/entities/tdm_harrier/shared.lua | 229 ++ .../entities/entities/tdm_infil/cl_init.lua | 5 + .../entities/entities/tdm_infil/init.lua | 4 + .../entities/entities/tdm_infil/shared.lua | 266 ++ .../entities/tdm_infil_soundproxy.lua | 56 + .../entities/entities/tdm_mi24/shared.lua | 292 ++ .../entities/entities/tdm_package/shared.lua | 78 + .../entities/tdm_player_infil/shared.lua | 415 ++ .../entities/entities/tdm_sentry/shared.lua | 251 ++ .../vj_tdm_invasion_soldier1/init.lua | 238 ++ .../vj_tdm_invasion_soldier1/shared.lua | 22 + .../vj_tdm_invasion_soldier2/init.lua | 242 ++ .../vj_tdm_invasion_soldier2/shared.lua | 22 + .../entities/entities/vj_tdm_k9/init.lua | 59 + .../entities/entities/vj_tdm_k9/shared.lua | 22 + .../entities/entities/vj_tdm_npc/init.lua | 70 + .../entities/entities/vj_tdm_npc/shared.lua | 22 + .../entities/weapons/tdm_grenade.lua | 69 + .../entities/weapons/tdm_infection_knife.lua | 101 + .../cod_custom/entities/weapons/tdm_knife.lua | 86 + .../cod_custom/entities/weapons/tdm_radio.lua | 111 + .../weapons/weapon_base/ai_translations.lua | 192 + .../entities/weapons/weapon_base/cl_init.lua | 212 + .../entities/weapons/weapon_base/init.lua | 104 + .../entities/weapons/weapon_base/sh_anim.lua | 87 + .../entities/weapons/weapon_base/shared.lua | 273 ++ .../weapons/weapon_vj_tdm_ak47/shared.lua | 54 + .../weapons/weapon_vj_tdm_m14/shared.lua | 54 + .../weapons/weapon_vj_tdm_m24/shared.lua | 57 + .../weapons/weapon_vj_tdm_m249/shared.lua | 54 + .../weapons/weapon_vj_tdm_m4a1/shared.lua | 54 + .../weapons/weapon_vj_tdm_m9/shared.lua | 54 + .../weapons/weapon_vj_tdm_makarov/shared.lua | 54 + .../weapons/weapon_vj_tdm_r870/shared.lua | 58 + .../weapons/weapon_vj_tdm_ump/shared.lua | 54 + gamemodes/cod_custom/gamemode/cl_init.lua | 13 + .../gamemode/client/cl_abilities.lua | 109 + .../gamemode/client/cl_cutscenes.lua | 58 + .../cod_custom/gamemode/client/cl_error.lua | 46 + .../cod_custom/gamemode/client/cl_hud.lua | 1368 +++++++ .../cod_custom/gamemode/client/cl_killcam.lua | 225 + .../gamemode/client/cl_killfeed.lua | 84 + .../cod_custom/gamemode/client/cl_menu.lua | 1233 ++++++ .../cod_custom/gamemode/client/cl_outline.lua | 164 + .../cod_custom/gamemode/client/cl_radar.lua | 213 + .../gamemode/client/cl_scoreboard.lua | 238 ++ .../gamemode/client/cl_takedown.lua | 132 + gamemodes/cod_custom/gamemode/init.lua | 33 + .../cod_custom/gamemode/lang/brazilian.lua | 100 + .../cod_custom/gamemode/lang/english.lua | 169 + gamemodes/cod_custom/gamemode/lang/german.lua | 99 + .../cod_custom/gamemode/lang/hungarian.lua | 100 + .../cod_custom/gamemode/lang/lithuanian.lua | 100 + gamemodes/cod_custom/gamemode/lang/polish.lua | 166 + .../cod_custom/gamemode/lang/russian.lua | 169 + .../cod_custom/gamemode/lang/spanish.lua | 166 + .../cod_custom/gamemode/lang/turkish.lua | 166 + .../cod_custom/gamemode/lang/ukrainian.lua | 166 + gamemodes/cod_custom/gamemode/languages.lua | 34 + .../cod_custom/gamemode/other/sh_fixes.lua | 144 + .../cod_custom/gamemode/other/sv_mwii_npc.lua | 486 +++ gamemodes/cod_custom/gamemode/post_shared.lua | 2 + .../gamemode/server/sv_abilities.lua | 279 ++ .../gamemode/server/sv_domination.lua | 40 + .../gamemode/server/sv_functions.lua | 1220 ++++++ .../gamemode/server/sv_infected.lua | 172 + .../gamemode/server/sv_invasion.lua | 335 ++ .../cod_custom/gamemode/server/sv_killcam.lua | 168 + .../gamemode/server/sv_killstreaks.lua | 1091 +++++ .../gamemode/server/sv_knockout.lua | 93 + .../gamemode/server/sv_takedown.lua | 237 ++ gamemodes/cod_custom/gamemode/shared.lua | 609 +++ gamemodes/cod_custom/gamemode/takedowns.lua | 3619 +++++++++++++++++ gamemodes/cod_custom/icon24.png | Bin 0 -> 3090 bytes gamemodes/cod_custom/logo.png | Bin 0 -> 28097 bytes lua/autorun/mw_assets/attachments.lua | 104 + lua/autorun/mw_assets/favorites.lua | 10 + lua/autorun/mw_assets/injectors.lua | 29 + lua/autorun/mw_assets/presets.lua | 68 + lua/autorun/mw_assets/rigs.lua | 35 + lua/autorun/mw_loader.lua | 89 + lua/autorun/mw_ltl.lua | 52 + lua/autorun/mw_matproxy.lua | 77 + lua/effects/mwb_shelleject.lua | 89 + lua/effects/mwb_shelleject_127.lua | 29 + lua/effects/mwb_shelleject_12g.lua | 29 + lua/effects/mwb_shelleject_12g_black.lua | 5 + lua/effects/mwb_shelleject_12g_green.lua | 5 + lua/effects/mwb_shelleject_308.lua | 28 + lua/effects/mwb_shelleject_338.lua | 29 + lua/effects/mwb_shelleject_45.lua | 29 + lua/effects/mwb_shelleject_458.lua | 29 + lua/effects/mwb_shelleject_50bmg.lua | 29 + lua/effects/mwb_shelleject_545.lua | 28 + lua/effects/mwb_shelleject_556.lua | 29 + lua/effects/mwb_shelleject_57.lua | 29 + lua/effects/mwb_shelleject_762.lua | 29 + lua/effects/mwb_shelleject_7625x.lua | 29 + lua/effects/mwb_shelleject_939.lua | 29 + lua/effects/mwb_shelleject_9mm.lua | 29 + lua/effects/mwb_shelleject_comp.lua | 20 + lua/entities/mg_40mm/cl_init.lua | 44 + lua/entities/mg_40mm/init.lua | 134 + lua/entities/mg_40mm/shared.lua | 39 + .../mg_aoe_arrow_explosion/cl_init.lua | 52 + lua/entities/mg_aoe_arrow_explosion/init.lua | 59 + .../mg_aoe_arrow_explosion/shared.lua | 23 + lua/entities/mg_aoe_arrow_gas/cl_init.lua | 44 + lua/entities/mg_aoe_arrow_gas/init.lua | 83 + lua/entities/mg_aoe_arrow_gas/shared.lua | 36 + lua/entities/mg_aoe_arrow_smoke/cl_init.lua | 45 + lua/entities/mg_aoe_arrow_smoke/init.lua | 69 + lua/entities/mg_aoe_arrow_smoke/shared.lua | 57 + .../mg_aoe_arrow_thermite/cl_init.lua | 27 + lua/entities/mg_aoe_arrow_thermite/init.lua | 105 + lua/entities/mg_aoe_arrow_thermite/shared.lua | 36 + lua/entities/mg_arrow/cl_init.lua | 17 + lua/entities/mg_arrow/init.lua | 229 ++ lua/entities/mg_arrow/shared.lua | 39 + lua/entities/mg_arrow_bone/cl_init.lua | 10 + lua/entities/mg_arrow_bone/init.lua | 6 + lua/entities/mg_arrow_bone/shared.lua | 16 + lua/entities/mg_arrow_emp/cl_init.lua | 11 + lua/entities/mg_arrow_emp/init.lua | 81 + lua/entities/mg_arrow_emp/shared.lua | 16 + lua/entities/mg_arrow_explosive/cl_init.lua | 3 + lua/entities/mg_arrow_explosive/init.lua | 7 + lua/entities/mg_arrow_explosive/shared.lua | 2 + lua/entities/mg_arrow_flashbang/cl_init.lua | 3 + lua/entities/mg_arrow_flashbang/init.lua | 83 + lua/entities/mg_arrow_flashbang/shared.lua | 16 + lua/entities/mg_arrow_gas/cl_init.lua | 3 + lua/entities/mg_arrow_gas/init.lua | 14 + lua/entities/mg_arrow_gas/shared.lua | 5 + lua/entities/mg_arrow_knockback/cl_init.lua | 3 + lua/entities/mg_arrow_knockback/init.lua | 33 + lua/entities/mg_arrow_knockback/shared.lua | 14 + lua/entities/mg_arrow_smoke/cl_init.lua | 3 + lua/entities/mg_arrow_smoke/init.lua | 7 + lua/entities/mg_arrow_smoke/shared.lua | 5 + lua/entities/mg_arrow_stim/cl_init.lua | 3 + lua/entities/mg_arrow_stim/init.lua | 49 + lua/entities/mg_arrow_stim/shared.lua | 16 + lua/entities/mg_arrow_thermite/cl_init.lua | 3 + lua/entities/mg_arrow_thermite/init.lua | 7 + lua/entities/mg_arrow_thermite/shared.lua | 4 + lua/entities/mg_attachment.lua | 74 + lua/entities/mg_bullet/cl_init.lua | 69 + lua/entities/mg_bullet/init.lua | 112 + lua/entities/mg_bullet/shared.lua | 5 + lua/entities/mg_frag_grenade/cl_init.lua | 7 + lua/entities/mg_frag_grenade/init.lua | 55 + lua/entities/mg_frag_grenade/shared.lua | 6 + .../mg_javelin_airstrike_warhead/cl_init.lua | 84 + .../mg_javelin_airstrike_warhead/init.lua | 239 ++ .../mg_javelin_airstrike_warhead/shared.lua | 79 + lua/entities/mg_javelin_warhead/cl_init.lua | 84 + lua/entities/mg_javelin_warhead/init.lua | 224 + lua/entities/mg_javelin_warhead/shared.lua | 79 + lua/entities/mg_slug/cl_init.lua | 9 + lua/entities/mg_slug/init.lua | 8 + lua/entities/mg_slug/shared.lua | 1 + lua/entities/mg_sniper_bullet/cl_init.lua | 29 + lua/entities/mg_sniper_bullet/init.lua | 55 + lua/entities/mg_sniper_bullet/shared.lua | 5 + lua/entities/mg_submunition/cl_init.lua | 84 + lua/entities/mg_submunition/init.lua | 175 + lua/entities/mg_submunition/shared.lua | 56 + lua/entities/mg_viewmodel/cl_init.lua | 216 + .../mg_viewmodel/client/cl_animation.lua | 275 ++ .../mg_viewmodel/client/cl_calcview.lua | 461 +++ .../mg_viewmodel/client/cl_events.lua | 298 ++ .../mg_viewmodel/client/cl_render.lua | 273 ++ lua/entities/mg_viewmodel/init.lua | 9 + lua/entities/mg_viewmodel/shared.lua | 186 + lua/entities/mg_warhead/cl_init.lua | 84 + lua/entities/mg_warhead/init.lua | 278 ++ lua/entities/mg_warhead/shared.lua | 62 + lua/includes/modules/mw_math.lua | 220 + lua/includes/modules/mw_utils.lua | 392 ++ lua/weapons/mg_357/animations.lua | 227 ++ lua/weapons/mg_357/customization.lua | 405 ++ lua/weapons/mg_357/shared.lua | 157 + lua/weapons/mg_aalpha12/animations.lua | 382 ++ lua/weapons/mg_aalpha12/customization.lua | 898 ++++ lua/weapons/mg_aalpha12/shared.lua | 179 + lua/weapons/mg_akilo47/animations.lua | 419 ++ lua/weapons/mg_akilo47/customization.lua | 1168 ++++++ lua/weapons/mg_akilo47/shared.lua | 167 + lua/weapons/mg_alpha50/animations.lua | 475 +++ lua/weapons/mg_alpha50/customization.lua | 49 + lua/weapons/mg_alpha50/shared.lua | 183 + lua/weapons/mg_anovember94/animations.lua | 502 +++ lua/weapons/mg_anovember94/customization.lua | 1039 +++++ lua/weapons/mg_anovember94/shared.lua | 228 ++ lua/weapons/mg_asierra12/animations.lua | 309 ++ lua/weapons/mg_asierra12/customization.lua | 897 ++++ lua/weapons/mg_asierra12/shared.lua | 168 + lua/weapons/mg_augolf/animations.lua | 564 +++ lua/weapons/mg_augolf/customization.lua | 1031 +++++ lua/weapons/mg_augolf/shared.lua | 169 + lua/weapons/mg_base/cl_init.lua | 94 + lua/weapons/mg_base/init.lua | 92 + .../attachments/attachments_ar_akilo47.lua | 216 + .../attachments_ar_anovember94.lua | 219 + .../attachments/attachments_ar_falima.lua | 119 + .../attachments/attachments_ar_falpha.lua | 138 + .../attachments/attachments_ar_g3a3.lua | 24 + .../attachments/attachments_ar_galima.lua | 191 + .../attachments/attachments_ar_kilo433.lua | 148 + .../attachments/attachments_ar_mcharlie.lua | 150 + .../attachments/attachments_ar_mike4.lua | 245 ++ .../attachments/attachments_ar_oden.lua | 162 + .../attachments/attachments_ar_scharlie.lua | 125 + .../attachments/attachments_ar_sierra552.lua | 180 + .../attachments/attachments_ar_tango21.lua | 148 + .../attachments/attachments_ar_valpha.lua | 194 + .../attachments/attachments_pi_cpapa.lua | 81 + .../attachments/attachments_pi_decho.lua | 110 + .../attachments/attachments_pi_golf21.lua | 109 + .../attachments/attachments_pi_mike.lua | 164 + .../attachments/attachments_pi_mike1911.lua | 105 + .../attachments/attachments_pi_mike9.lua | 172 + .../attachments/attachments_pi_papa320.lua | 85 + .../attachments/attachments_sh_aalpha12.lua | 142 + .../attachments/attachments_sh_charlie725.lua | 265 ++ .../attachments/attachments_sh_dpapa12.lua | 218 + .../attachments/attachments_sh_mike26.lua | 142 + .../attachments/attachments_sh_oscar12.lua | 217 + .../attachments/attachments_sh_romeo870.lua | 167 + .../attachments/attachments_sm_augolf.lua | 182 + .../attachments/attachments_sm_beta.lua | 94 + .../attachments/attachments_sm_charlie9.lua | 142 + .../attachments/attachments_sm_mpapa5.lua | 162 + .../attachments/attachments_sm_mpapa7.lua | 124 + .../attachments/attachments_sm_papa90.lua | 99 + .../attachments/attachments_sm_secho.lua | 194 + .../attachments/attachments_sm_smgolf45.lua | 169 + .../attachments/attachments_sm_uzulu.lua | 183 + .../attachments/attachments_sm_victor.lua | 187 + .../attachments/attachments_sn_kilo98.lua | 137 + .../attachments/attachments_sn_mike14.lua | 148 + .../attachments/attachments_sn_sbeta.lua | 104 + .../attachments/attachments_sn_sksierra.lua | 165 + .../attachment_vm_sh_aalpha12_barhvy.lua | 18 + .../attachment_vm_sh_aalpha12_barlong.lua | 15 + .../attachment_vm_sh_aalpha12_barrel.lua | 2 + .../attachment_vm_sh_aalpha12_barshort.lua | 20 + ...attachment_vm_sh_aalpha12_angledgrip01.lua | 10 + ...attachment_vm_sh_aalpha12_angledgrip02.lua | 10 + ...attachment_vm_sh_aalpha12_stubbygrip01.lua | 10 + ...attachment_vm_sh_aalpha12_stubbygrip02.lua | 10 + .../attachment_vm_sh_aalpha12_vertgrip01.lua | 10 + .../attachment_vm_sh_aalpha12_vertgrip02.lua | 10 + .../attachment_vm_sh_aalpha12_vertgrip03.lua | 10 + .../attachment_vm_sh_aalpha12_laser01.lua | 10 + .../attachment_vm_sh_aalpha12_laser02.lua | 10 + .../attachment_vm_sh_aalpha12_laser03.lua | 10 + .../attachment_vm_sh_aalpha12_drummag.lua | 31 + .../mags/attachment_vm_sh_aalpha12_mag.lua | 8 + .../attachment_vm_sh_aalpha12_slugmag.lua | 25 + .../mags/attachment_vm_sh_aalpha12_xmags.lua | 27 + .../attachment_vm_sh_aalpha12_perk_soh.lua | 9 + .../attachment_vm_sh_aalpha12_stockh.lua | 15 + .../attachment_vm_sh_aalpha12_stockl.lua | 14 + .../attachment_vm_sh_aalpha12_stocks.lua | 13 + .../attachment_vm_ar_akilo47_barrel.lua | 2 + .../attachment_vm_ar_akilo47_custombarrel.lua | 13 + .../attachment_vm_ar_akilo47_lmgbarrel.lua | 16 + ...ttachment_vm_ar_akilo47_lmgbarrel_grip.lua | 28 + .../attachment_vm_ar_akilo47_smgbarcust.lua | 27 + .../attachment_vm_ar_akilo47_smgbarrel.lua | 21 + .../attachment_vm_ar_akilo47_angledgrip01.lua | 16 + .../attachment_vm_ar_akilo47_angledgrip02.lua | 16 + .../attachment_vm_ar_akilo47_bipodgrip.lua | 10 + .../attachment_vm_ar_akilo47_stubbygrip01.lua | 16 + .../attachment_vm_ar_akilo47_stubbygrip02.lua | 16 + .../attachment_vm_ar_akilo47_vertgrip01.lua | 16 + .../attachment_vm_ar_akilo47_vertgrip02.lua | 16 + .../attachment_vm_ar_akilo47_vertgrip03.lua | 16 + .../attachment_vm_ar_akilo47_laser01.lua | 11 + ...achment_vm_ar_akilo47_laser01_cylinder.lua | 11 + .../attachment_vm_ar_akilo47_laser02.lua | 11 + ...achment_vm_ar_akilo47_laser02_cylinder.lua | 11 + .../attachment_vm_ar_akilo47_laser03.lua | 11 + ...achment_vm_ar_akilo47_laser03_cylinder.lua | 11 + .../attachment_vm_ar_akilo47_drum_mag.lua | 24 + .../mags/attachment_vm_ar_akilo47_mag.lua | 14 + .../mags/attachment_vm_ar_akilo47_smgmag.lua | 44 + .../mags/attachment_vm_ar_akilo47_xmags.lua | 21 + .../muzzles/attachment_vm_bayonet_akilo47.lua | 19 + .../attachment_vm_ar_akilo47_perk_soh.lua | 11 + .../sights/attachment_vm_ar_akilo47_rail.lua | 11 + .../attachment_vm_ar_akilo47_lmgstock.lua | 17 + .../attachment_vm_ar_akilo47_smgstock.lua | 23 + ...chment_vm_ar_akilo47_smgstock_unfolded.lua | 20 + .../stock/attachment_vm_ar_akilo47_stock.lua | 3 + ...attachment_vm_ar_akilo47_stock_light01.lua | 7 + ...ttachment_vm_ar_akilo47_stock_medium01.lua | 7 + .../attachment_vm_ar_akilo47_stock_v12.lua | 7 + .../attachment_vm_ar_akilo47_stock_v21.lua | 7 + .../attachment_vm_ar_akilo47_stockno.lua | 16 + .../attachment_vm_sn_alpha50_barlong.lua | 17 + .../attachment_vm_sn_alpha50_barmid.lua | 16 + .../attachment_vm_sn_alpha50_barrel.lua | 2 + .../attachment_vm_sn_alpha50_barshort.lua | 16 + .../attachment_vm_sn_alpha50_laser01.lua | 4 + .../attachment_vm_sn_alpha50_laser02.lua | 4 + .../attachment_vm_sn_alpha50_laser03.lua | 4 + .../mags/attachment_vm_sn_alpha50_mag.lua | 8 + .../mags/attachment_vm_sn_alpha50_mmags.lua | 27 + .../mags/attachment_vm_sn_alpha50_xmags.lua | 19 + .../muzzles/att_vm_alpha50_compensator01.lua | 2 + .../muzzles/att_vm_alpha50_flashhider01.lua | 2 + .../muzzles/att_vm_alpha50_muzzlebrake01.lua | 3 + .../muzzles/att_vm_alpha50_muzzlebrake02.lua | 2 + .../muzzles/att_vm_alpha50_silencer01.lua | 2 + .../muzzles/att_vm_alpha50_silencer02.lua | 2 + .../muzzles/att_vm_alpha50_silencer03.lua | 2 + .../attachment_vm_sn_alpha50_perk_bolt.lua | 8 + .../attachment_vm_sn_alpha50_perk_soh.lua | 11 + .../sights/attachment_vm_sn_alpha50_scope.lua | 24 + .../stock/attachment_vm_sn_alpha50_stock.lua | 2 + .../stock/attachment_vm_sn_alpha50_stockh.lua | 16 + .../stock/attachment_vm_sn_alpha50_stockl.lua | 15 + .../stock/attachment_vm_sn_alpha50_stocks.lua | 19 + .../modules/attachmentss/ammo/att_ammo_db.lua | 28 + .../attachmentss/ammo/att_ammo_default.lua | 10 + .../attachmentss/ammo/att_ammo_flechette.lua | 15 + .../modules/attachmentss/ammo/att_ammo_he.lua | 26 + .../attachmentss/ammo/att_ammo_slugs.lua | 24 + .../attachment_vm_ar_anovember94_barhvy.lua | 16 + .../attachment_vm_ar_anovember94_barlong.lua | 16 + .../attachment_vm_ar_anovember94_barrel.lua | 2 + .../attachment_vm_ar_anovember94_barshort.lua | 14 + ...achment_vm_ar_anovember94_angledgrip01.lua | 7 + ...achment_vm_ar_anovember94_angledgrip02.lua | 7 + ...attachment_vm_ar_anovember94_bipodgrip.lua | 7 + ...achment_vm_ar_anovember94_stubbygrip01.lua | 7 + ...achment_vm_ar_anovember94_stubbygrip02.lua | 7 + ...ttachment_vm_ar_anovember94_vertgrip01.lua | 7 + ...ttachment_vm_ar_anovember94_vertgrip02.lua | 7 + ...ttachment_vm_ar_anovember94_vertgrip03.lua | 7 + .../attachment_vm_ar_anovember94_laser01.lua | 10 + .../attachment_vm_ar_anovember94_laser02.lua | 10 + .../attachment_vm_ar_anovember94_laser03.lua | 10 + .../mags/attachment_vm_ar_anovember94_mag.lua | 36 + .../attachment_vm_ar_anovember94_xmags.lua | 25 + .../attachment_vm_ar_anovember94_xmagslrg.lua | 28 + ...tachment_vm_ar_anovember94_muzzlebrake.lua | 19 + .../attachment_vm_ar_anovember94_perk_soh.lua | 11 + ...ttachment_vm_ar_anovember94_thermal_v3.lua | 33 + .../attachment_vm_ar_anovember94_stock.lua | 3 + .../attachment_vm_ar_anovember94_stockh.lua | 17 + .../attachment_vm_ar_anovember94_stockl.lua | 18 + .../attachment_vm_ar_anovember94_stockno.lua | 14 + .../attachment_vm_ar_anovember94_stocks.lua | 15 + ...attachment_vm_ar_anovember94_stockskel.lua | 17 + .../attachment_vm_ar_asierra12_barlong.lua | 14 + .../attachment_vm_ar_asierra12_barlong2.lua | 15 + .../attachment_vm_ar_asierra12_barrel.lua | 2 + .../attachment_vm_ar_asierra12_barshort.lua | 13 + ...ttachment_vm_ar_asierra12_angledgrip01.lua | 7 + ...ttachment_vm_ar_asierra12_angledgrip02.lua | 7 + .../attachment_vm_ar_asierra12_bipodgrip.lua | 7 + ...ttachment_vm_ar_asierra12_stubbygrip01.lua | 7 + ...ttachment_vm_ar_asierra12_stubbygrip02.lua | 7 + .../attachment_vm_ar_asierra12_vertgrip01.lua | 7 + .../attachment_vm_ar_asierra12_vertgrip02.lua | 7 + .../attachment_vm_ar_asierra12_vertgrip03.lua | 7 + .../attachment_vm_ar_asierra12_laser01.lua | 8 + .../attachment_vm_ar_asierra12_laser02.lua | 8 + .../attachment_vm_ar_asierra12_laser03.lua | 8 + .../mags/attachment_vm_ar_asierra12_mag.lua | 2 + .../attachment_vm_ar_asierra12_mag_sniper.lua | 31 + .../mags/attachment_vm_ar_asierra12_xmags.lua | 15 + .../attachment_vm_ar_asierra12_xxmags.lua | 17 + ...achment_vm_ar_asierra12_longsuppressor.lua | 18 + .../attachment_vm_ar_asierra12_perk_soh.lua | 11 + .../attachment_vm_ar_asierra12_scope.lua | 21 + .../attachment_vm_ar_asierra12_stock.lua | 1 + .../attachment_vm_ar_asierra12_stockh.lua | 16 + .../attachment_vm_ar_asierra12_stockl.lua | 16 + .../attachment_vm_sm_augolf_arbarrel.lua | 15 + .../attachment_vm_sm_augolf_lmgbarrel.lua | 22 + .../attachment_vm_sm_augolf_smgbarrel.lua | 2 + .../attachment_vm_sm_augolf_angledgrip01.lua | 16 + .../attachment_vm_sm_augolf_angledgrip02.lua | 17 + .../attachment_vm_sm_augolf_bipodgrip.lua | 17 + .../attachment_vm_sm_augolf_stubbygrip01.lua | 17 + .../attachment_vm_sm_augolf_stubbygrip02.lua | 17 + .../attachment_vm_sm_augolf_vertgrip01.lua | 17 + .../attachment_vm_sm_augolf_vertgrip02.lua | 17 + .../attachment_vm_sm_augolf_vertgrip03.lua | 17 + ...tachment_vm_sm_augolf_laser01_cylinder.lua | 11 + ...tachment_vm_sm_augolf_laser02_cylinder.lua | 11 + ...tachment_vm_sm_augolf_laser03_cylinder.lua | 11 + .../mags/attachment_vm_sm_augolf_armag.lua | 29 + .../mags/attachment_vm_sm_augolf_drummag.lua | 30 + .../mags/attachment_vm_sm_augolf_mag.lua | 2 + .../mags/attachment_vm_sm_augolf_smg_xmag.lua | 17 + .../attachment_vm_sm_augolf_perk_soh.lua | 13 + .../rails/attachment_vm_sm_augolf_arrail.lua | 9 + .../attachment_vm_sm_augolf_lmgrail.lua | 22 + ...attachment_vm_sm_augolf_stock_tactical.lua | 13 + .../stock/attachment_vm_sm_augolf_stockl.lua | 14 + .../stock/attachment_vm_sm_augolf_stocks.lua | 15 + .../attachmentss/base/att_accessory.lua | 4 + .../modules/attachmentss/base/att_ammo.lua | 5 + .../modules/attachmentss/base/att_arm.lua | 3 + .../modules/attachmentss/base/att_arrow.lua | 3 + .../modules/attachmentss/base/att_barrel.lua | 3 + .../modules/attachmentss/base/att_base.lua | 84 + .../modules/attachmentss/base/att_bolt.lua | 3 + .../attachmentss/base/att_conversion.lua | 100 + .../modules/attachmentss/base/att_forend.lua | 3 + .../modules/attachmentss/base/att_grip.lua | 7 + .../modules/attachmentss/base/att_hybrid.lua | 14 + .../modules/attachmentss/base/att_laser.lua | 154 + .../attachmentss/base/att_magazine.lua | 127 + .../attachmentss/base/att_magazine_dual.lua | 55 + .../attachmentss/base/att_miscellaneous.lua | 4 + .../modules/attachmentss/base/att_muzzle.lua | 3 + .../modules/attachmentss/base/att_optic.lua | 269 ++ .../modules/attachmentss/base/att_perk.lua | 16 + .../attachmentss/base/att_pistolgrip.lua | 3 + .../modules/attachmentss/base/att_pump.lua | 3 + .../modules/attachmentss/base/att_rail.lua | 3 + .../attachmentss/base/att_receiver.lua | 3 + .../modules/attachmentss/base/att_sight.lua | 4 + .../attachmentss/base/att_sight_reticle.lua | 51 + .../modules/attachmentss/base/att_stock.lua | 3 + .../attachmentss/base/att_suppressor.lua | 2 + .../modules/attachmentss/base/att_toprail.lua | 3 + .../modules/attachmentss/base/att_wire.lua | 3 + .../barrels/attachment_vm_sm_beta_barlong.lua | 21 + .../barrels/attachment_vm_sm_beta_barmid.lua | 14 + .../barrels/attachment_vm_sm_beta_barrel.lua | 2 + .../attachment_vm_sm_beta_barshort.lua | 11 + .../lasers/attachment_vm_sm_beta_laser01.lua | 10 + .../lasers/attachment_vm_sm_beta_laser02.lua | 10 + .../lasers/attachment_vm_sm_beta_laser03.lua | 10 + .../beta/mags/attachment_vm_sm_beta_mag.lua | 2 + .../beta/mags/attachment_vm_sm_beta_xmags.lua | 24 + .../perks/attachment_vm_sm_beta_perk_soh.lua | 9 + .../attachment_vm_sm_augolf_stock_v2.lua | 12 + .../stock/attachment_vm_sm_beta_stock.lua | 2 + .../stock/attachment_vm_sm_beta_stockmrkt.lua | 16 + .../attachment_vm_sh_charlie725_barrel.lua | 2 + ...ttachment_vm_sh_charlie725_barrel_long.lua | 22 + ...attachment_vm_sh_charlie725_barrel_mid.lua | 22 + ...chment_vm_sh_charlie725_barrel_sawnoff.lua | 17 + ...tachment_vm_sh_charlie725_foreendlight.lua | 13 + ...tachment_vm_sh_charlie725_forendstable.lua | 18 + ...chment_vm_sh_charlie725_forendtactical.lua | 19 + .../attachment_vm_sh_charlie725_guard.lua | 2 + ...tachment_vm_sh_charlie725_angledgrip01.lua | 13 + ...tachment_vm_sh_charlie725_angledgrip02.lua | 13 + ...tachment_vm_sh_charlie725_stubbygrip01.lua | 13 + ...tachment_vm_sh_charlie725_stubbygrip02.lua | 13 + ...attachment_vm_sh_charlie725_vertgrip01.lua | 13 + ...attachment_vm_sh_charlie725_vertgrip02.lua | 13 + ...attachment_vm_sh_charlie725_vertgrip03.lua | 13 + .../attachment_vm_sh_charlie725_laser01.lua | 10 + .../attachment_vm_sh_charlie725_laser02.lua | 10 + .../attachment_vm_sh_charlie725_laser03.lua | 10 + .../attachment_vm_sh_charlie725_comp.lua | 10 + ...attachment_vm_sh_charlie725_flashhider.lua | 10 + ...ttachment_vm_sh_charlie725_muzzlebrake.lua | 10 + ...ttachment_vm_sh_charlie725_muzzlemelee.lua | 10 + ...attachment_vm_sh_charlie725_silencer01.lua | 10 + ...attachment_vm_sh_charlie725_silencer02.lua | 10 + ...attachment_vm_sh_charlie725_silencer03.lua | 10 + .../attachment_vm_sh_charlie725_perk_soh.lua | 9 + .../sights/att_vm_charlie725_2x_west01.lua | 8 + .../sights/att_vm_charlie725_scope_mike14.lua | 8 + .../sights/att_vm_charlie725_scope_vz.lua | 8 + .../attachment_vm_sn_charlie725_scope.lua | 30 + .../attachment_vm_sh_charlie725_stock.lua | 3 + ...achment_vm_sh_charlie725_stock_sawnoff.lua | 14 + ...attachment_vm_sh_charlie725_stocklight.lua | 14 + ...ttachment_vm_sh_charlie725_stockstable.lua | 15 + ...achment_vm_sh_charlie725_stocktactical.lua | 15 + .../attachment_vm_sm_charlie9_barrel.lua | 2 + .../attachment_vm_sm_charlie9_barsil.lua | 18 + .../attachment_vm_sm_charlie9_longbarrel.lua | 23 + .../attachment_vm_sm_charlie9_medbarrel.lua | 22 + .../attachment_vm_sm_charlie9_shortbarrel.lua | 21 + ...attachment_vm_sm_charlie9_angledgrip01.lua | 16 + ...attachment_vm_sm_charlie9_angledgrip02.lua | 17 + .../attachment_vm_sm_charlie9_bipodgrip.lua | 17 + ...attachment_vm_sm_charlie9_stubbygrip01.lua | 17 + ...attachment_vm_sm_charlie9_stubbygrip02.lua | 17 + .../attachment_vm_sm_charlie9_vertgrip01.lua | 17 + .../attachment_vm_sm_charlie9_vertgrip02.lua | 17 + .../attachment_vm_sm_charlie9_vertgrip03.lua | 17 + .../attachment_vm_sm_charlie9_laser01.lua | 10 + .../attachment_vm_sm_charlie9_laser02.lua | 10 + .../attachment_vm_sm_charlie9_laser03.lua | 10 + .../attachment_vm_sm_charlie9_drummag.lua | 20 + .../mags/attachment_vm_sm_charlie9_mag.lua | 5 + .../mags/attachment_vm_sm_charlie9_xmag.lua | 20 + .../attachment_vm_sm_charlie9_perk_soh.lua | 11 + .../attachment_vm_sm_charlie9_fullstock.lua | 16 + .../attachment_vm_sm_charlie9_nostock.lua | 18 + .../stock/attachment_vm_sm_charlie9_stock.lua | 2 + .../barrels/att_vm_pi_cpapa_barrel01.lua | 3 + .../barrels/att_vm_pi_cpapa_barrel02.lua | 11 + .../barrels/att_vm_pi_cpapa_barrel_long.lua | 16 + .../barrels/att_vm_pi_cpapa_barrel_short.lua | 15 + .../cpapa/lasers/att_vm_pi_cpapa_laser01.lua | 5 + .../cpapa/lasers/att_vm_pi_cpapa_laser02.lua | 5 + .../cpapa/lasers/att_vm_pi_cpapa_laser03.lua | 5 + .../attachment_vm_pi_cpapa_loader_snake.lua | 17 + .../cpapa/mags/attachment_vm_pi_cpapa_mag.lua | 8 + .../cpapa/perks/att_vm_pi_cpapa_soh.lua | 12 + .../sights/attachment_vm_pi_cpapa_scope.lua | 25 + .../cpapa/stocks/att_vm_pi_cpapa_grip.lua | 3 + .../cpapa/stocks/att_vm_pi_cpapa_stock01.lua | 27 + .../cpapa/stocks/att_vm_pi_cpapa_stock02.lua | 27 + .../arms/attachment_vm_sn_crossbow_arms.lua | 2 + .../attachment_vm_sn_crossbow_arms_heavy.lua | 19 + .../attachment_vm_sn_crossbow_arms_light.lua | 15 + .../attachment_vm_sn_crossbow_arms_tac.lua | 16 + .../arrows/attachment_vm_sn_crossbow_mag.lua | 2 + .../attachment_vm_sn_crossbow_mag_empbolt.lua | 15 + .../attachment_vm_sn_crossbow_mag_expbolt.lua | 15 + ...attachment_vm_sn_crossbow_mag_firebolt.lua | 15 + ...ttachment_vm_sn_crossbow_mag_flashbolt.lua | 14 + ...tachment_vm_sn_crossbow_mag_gordonbolt.lua | 19 + ...ttachment_vm_sn_crossbow_mag_knockbolt.lua | 14 + ...ttachment_vm_sn_crossbow_mag_skullbolt.lua | 18 + ...ttachment_vm_sn_crossbow_mag_smokebolt.lua | 15 + ...attachment_vm_sn_crossbow_mag_stimbolt.lua | 14 + ...attachment_vm_sn_crossbow_mag_stunbolt.lua | 15 + ...attachment_vm_sn_crossbow_angledgrip01.lua | 19 + ...attachment_vm_sn_crossbow_angledgrip02.lua | 16 + ...attachment_vm_sn_crossbow_stubbygrip01.lua | 17 + ...attachment_vm_sn_crossbow_stubbygrip02.lua | 16 + .../attachment_vm_sn_crossbow_vertgrip01.lua | 20 + .../attachment_vm_sn_crossbow_vertgrip02.lua | 16 + .../attachment_vm_sn_crossbow_vertgrip03.lua | 16 + .../attachment_vm_sn_crossbow_laser01.lua | 10 + .../attachment_vm_sn_crossbow_laser02.lua | 9 + .../attachment_vm_sn_crossbow_laser03.lua | 9 + .../attachment_vm_sn_crossbow_perk_ammo.lua | 10 + .../attachment_vm_sn_crossbow_perk_none.lua | 7 + .../attachment_vm_sn_crossbow_perk_soh.lua | 10 + .../attachment_vm_sn_crossbow_scope.lua | 21 + .../stock/attachment_vm_sn_crossbow_stock.lua | 2 + .../attachment_vm_sn_crossbow_stock_heavy.lua | 15 + .../attachment_vm_sn_crossbow_stock_light.lua | 14 + .../attachment_vm_sn_crossbow_stock_tac.lua | 15 + .../wires/attachment_vm_sn_crossbow_wire.lua | 2 + .../attachment_vm_sn_crossbow_wire_heavy.lua | 13 + .../attachment_vm_sn_crossbow_wire_light.lua | 14 + .../attachment_vm_sn_crossbow_wire_tac.lua | 14 + .../barrels/attachment_vm_pi_decho_slide.lua | 2 + .../attachment_vm_pi_decho_slide_extended.lua | 14 + ...ttachment_vm_pi_decho_slide_extended02.lua | 11 + .../attachment_vm_pi_decho_cust_grip.lua | 13 + .../grips/attachment_vm_pi_decho_grip.lua | 8 + .../decho/lasers/att_vm_pi_decho_laser01.lua | 1 + .../decho/lasers/att_vm_pi_decho_laser02.lua | 1 + .../decho/lasers/att_vm_pi_decho_laser03.lua | 1 + .../decho/mags/attachment_vm_pi_decho_mag.lua | 8 + .../mags/attachment_vm_pi_decho_xmags.lua | 19 + .../mags/attachment_vm_pi_decho_xmags2.lua | 21 + .../attachment_vm_pi_decho_muzzlebrake.lua | 13 + .../decho/perks/att_vm_pi_decho_soh.lua | 12 + .../attachment_vm_sn_delta_barlong.lua | 17 + .../barrels/attachment_vm_sn_delta_barrel.lua | 3 + .../attachment_vm_sn_delta_barshort.lua | 16 + .../lasers/attachment_vm_sn_delta_laser01.lua | 5 + .../lasers/attachment_vm_sn_delta_laser02.lua | 5 + .../lasers/attachment_vm_sn_delta_laser03.lua | 5 + .../delta/mags/attachment_vm_sn_delta_mag.lua | 10 + .../mags/attachment_vm_sn_delta_xmags.lua | 23 + .../mags/attachment_vm_sn_delta_xmags2.lua | 26 + .../attachment_vm_ar_delta_perk_fullauto.lua | 27 + .../perks/attachment_vm_sn_delta_perk_soh.lua | 11 + .../attachment_vm_sn_delta_receiver.lua | 2 + .../attachment_vm_sn_delta_receiver_v2.lua | 13 + .../sights/attachment_vm_sn_delta_irons.lua | 11 + .../sights/attachment_vm_sn_delta_scope.lua | 23 + .../attachment_vm_sn_delta_scope_v2.lua | 17 + ...achment_vm_thermalsnpr_west01_delta_v3.lua | 15 + .../stock/attachment_vm_sn_delta_stock.lua | 3 + .../attachment_vm_sn_delta_stock_light.lua | 16 + .../attachment_vm_sn_delta_stock_short.lua | 17 + .../ammo/attachment_vm_sh_dpapa12_ammo.lua | 11 + .../attachment_vm_sh_dpapa12_barlong.lua | 16 + .../attachment_vm_sh_dpapa12_barmid.lua | 16 + .../attachment_vm_sh_dpapa12_barrel.lua | 2 + .../attachment_vm_sh_dpapa12_barshort.lua | 17 + .../grips/attachment_vm_sh_dpapa12_grip.lua | 7 + .../attachment_vm_sh_dpapa12_stubbygrip01.lua | 9 + .../attachment_vm_sh_dpapa12_stubbygrip02.lua | 9 + .../attachment_vm_sh_dpapa12_vertgrip02.lua | 9 + .../attachment_vm_sh_dpapa12_vertgrip03.lua | 9 + .../attachment_vm_sh_dpapa12_laser01.lua | 10 + .../attachment_vm_sh_dpapa12_laser02.lua | 10 + .../attachment_vm_sh_dpapa12_laser03.lua | 10 + .../attachment_vm_sh_dpapa12_choke.lua | 12 + .../muzzles/attachment_vm_sh_dpapa12_comp.lua | 9 + .../attachment_vm_sh_dpapa12_flashhider.lua | 9 + .../attachment_vm_sh_dpapa12_muzzlebrake.lua | 9 + .../attachment_vm_sh_dpapa12_muzzlemelee.lua | 9 + .../attachment_vm_sh_dpapa12_silencer01.lua | 10 + .../attachment_vm_sh_dpapa12_silencer02.lua | 10 + .../attachment_vm_sh_dpapa12_silencer03.lua | 10 + ...attachment_vm_sh_dpapa12_perk_slamfire.lua | 16 + .../attachment_vm_sh_dpapa12_perk_soh.lua | 10 + .../pumps/attachment_vm_sh_dpapa12_pump.lua | 2 + .../attachment_vm_sh_dpapa12_pump_light.lua | 15 + .../attachment_vm_sh_dpapa12_pump_stable.lua | 16 + ...attachment_vm_sh_dpapa12_pump_tactical.lua | 16 + .../attachment_vm_ar_falima_barlong.lua | 13 + .../attachment_vm_ar_falima_barrel.lua | 2 + .../attachment_vm_ar_falima_barsmg.lua | 15 + .../forend/attachment_vm_ar_falima_forend.lua | 2 + .../attachment_vm_ar_falima_forend_v2.lua | 6 + .../attachment_vm_ar_falima_forend_v4.lua | 6 + .../attachment_vm_ar_falima_angledgrip01.lua | 7 + .../attachment_vm_ar_falima_angledgrip02.lua | 7 + .../attachment_vm_ar_falima_bipodgrip.lua | 7 + .../attachment_vm_ar_falima_stubbygrip01.lua | 7 + .../attachment_vm_ar_falima_stubbygrip02.lua | 7 + .../attachment_vm_ar_falima_vertgrip01.lua | 7 + .../attachment_vm_ar_falima_vertgrip02.lua | 7 + .../attachment_vm_ar_falima_vertgrip03.lua | 7 + .../attachment_vm_ar_falima_laser01.lua | 12 + .../attachment_vm_ar_falima_laser02.lua | 11 + .../attachment_vm_ar_falima_laser03.lua | 11 + .../mags/attachment_vm_ar_falima_mag.lua | 12 + .../mags/attachment_vm_ar_falima_mmags.lua | 17 + .../mags/attachment_vm_ar_falima_xmags.lua | 21 + .../attachment_vm_ar_falima_perk_fullauto.lua | 20 + .../attachment_vm_ar_falima_perk_soh.lua | 11 + .../attachment_vm_ar_falima_receiver.lua | 2 + .../attachment_vm_ar_falima_receiver_v2.lua | 15 + .../stock/attachment_vm_ar_falima_stock.lua | 2 + .../attachment_vm_ar_falima_stock_v2.lua | 6 + .../attachment_vm_ar_falima_stock_v4.lua | 6 + .../stock/attachment_vm_ar_falima_stockl.lua | 20 + .../stock/attachment_vm_ar_falima_stockno.lua | 9 + .../attachment_vm_ar_falpha_barlong2.lua | 13 + .../attachment_vm_ar_falpha_barrel.lua | 2 + ...attachment_vm_ar_falpha_barrellong_alt.lua | 15 + .../attachment_vm_ar_falpha_barshort.lua | 15 + .../attachment_vm_ar_falpha_angledgrip01.lua | 10 + .../attachment_vm_ar_falpha_angledgrip02.lua | 10 + .../attachment_vm_ar_falpha_bipodgrip.lua | 7 + .../attachment_vm_ar_falpha_stubbygrip01.lua | 10 + .../attachment_vm_ar_falpha_stubbygrip02.lua | 10 + .../attachment_vm_ar_falpha_vertgrip01.lua | 10 + .../attachment_vm_ar_falpha_vertgrip02.lua | 10 + .../attachment_vm_ar_falpha_vertgrip03.lua | 10 + .../attachment_vm_ar_falpha_laser01.lua | 12 + .../attachment_vm_ar_falpha_laser02.lua | 12 + .../attachment_vm_ar_falpha_laser03.lua | 12 + .../mags/attachment_vm_ar_falpha_mag.lua | 2 + .../mags/attachment_vm_ar_falpha_xmags.lua | 17 + .../mags/attachment_vm_ar_falpha_xmags2.lua | 19 + .../attachment_vm_ar_falpha_perk_burst.lua | 16 + .../attachment_vm_ar_falpha_perk_soh.lua | 13 + .../attachment_vm_ar_falpha_railcust.lua | 19 + .../sights/attachment_vm_ar_falpha_irons.lua | 7 + .../stock/attachment_vm_ar_falpha_stock.lua | 1 + .../attachment_vm_ar_falpha_stock_light.lua | 17 + .../attachment_vm_ar_falpha_stock_stable.lua | 14 + ...achment_vm_ar_falpha_stock_tactical_v1.lua | 13 + .../attachment_vm_ar_g3a3_barrel_carbine.lua | 10 + .../attachment_vm_ar_g3a3_barrel_cqc.lua | 16 + .../attachment_vm_ar_g3a3_barrel_default.lua | 2 + .../attachment_vm_ar_g3a3_barrel_sniper.lua | 14 + .../attachment_vm_ar_g3a3_angledgrip01.lua | 15 + .../attachment_vm_ar_g3a3_angledgrip02.lua | 15 + .../attachment_vm_ar_g3a3_stubbygrip01.lua | 15 + .../attachment_vm_ar_g3a3_stubbygrip02.lua | 15 + .../attachment_vm_ar_g3a3_vertgrip01.lua | 15 + .../attachment_vm_ar_g3a3_vertgrip02.lua | 15 + .../attachment_vm_ar_g3a3_vertgrip03.lua | 15 + ...attachment_vm_ar_g3a3_laser01_cylinder.lua | 13 + ...attachment_vm_ar_g3a3_laser02_cylinder.lua | 13 + ...attachment_vm_ar_g3a3_laser03_cylinder.lua | 13 + ...attachment_vm_ar_g3a3_magazine_default.lua | 2 + .../attachment_vm_ar_g3a3_magazine_drum.lua | 9 + .../attachment_vm_magazine_ext_g3_custom.lua | 16 + .../perks/attachment_vm_ar_g3a3_perk_soh.lua | 11 + .../attachment_vm_ar_g3a3_pgrip_default.lua | 2 + .../attachment_vm_ar_g3a3_pgrip_sniper.lua | 4 + .../sights/attachment_vm_ar_g3a3_sight.lua | 2 + .../attachment_vm_ar_g3a3_stock_default.lua | 2 + .../attachment_vm_ar_g3a3_stock_fixed.lua | 4 + .../attachment_vm_ar_g3a3_stock_foldable.lua | 4 + .../stocks/attachment_vm_ar_g3a3_stock_no.lua | 4 + ...ttachment_vm_ar_g3a3_stock_retractable.lua | 4 + .../attachment_vm_ar_g3a3_stock_sniper.lua | 4 + .../attachment_vm_ar_galima_barlight.lua | 14 + .../attachment_vm_ar_galima_barlong.lua | 15 + .../attachment_vm_ar_galima_barrel.lua | 2 + .../attachment_vm_ar_galima_barshort.lua | 15 + .../attachment_vm_ar_galima_angledgrip01.lua | 10 + .../attachment_vm_ar_galima_angledgrip02.lua | 10 + .../attachment_vm_ar_galima_bipodgrip.lua | 10 + .../attachment_vm_ar_galima_stubbygrip01.lua | 10 + .../attachment_vm_ar_galima_stubbygrip02.lua | 10 + .../attachment_vm_ar_galima_vertgrip01.lua | 10 + .../attachment_vm_ar_galima_vertgrip02.lua | 10 + .../attachment_vm_ar_galima_vertgrip03.lua | 10 + .../attachment_vm_ar_galima_laser01.lua | 10 + .../attachment_vm_ar_galima_laser02.lua | 10 + .../attachment_vm_ar_galima_laser03.lua | 10 + .../mags/attachment_vm_ar_galima_mag.lua | 2 + .../mags/attachment_vm_ar_galima_smag.lua | 32 + .../mags/attachment_vm_ar_galima_xmag.lua | 19 + .../attachment_vm_ar_galima_perk_soh.lua | 11 + .../stock/attachment_vm_ar_galima_stock.lua | 5 + .../stock/attachment_vm_ar_galima_stockh.lua | 19 + .../stock/attachment_vm_ar_galima_stockl.lua | 17 + .../stock/attachment_vm_ar_galima_stockno.lua | 16 + .../stock/attachment_vm_ar_galima_stocks.lua | 19 + .../attachment_vm_ar_galima_stockskel.lua | 19 + .../stock/attachment_vm_ar_galima_stocksn.lua | 19 + .../golf21/att_vm_pi_golf21_soh.lua | 12 + .../golf21/att_vm_pi_golf21_stock.lua | 21 + .../golf21/mags/att_vm_pi_golf21_mag.lua | 3 + .../mags/att_vm_pi_golf21_mag_xxmags.lua | 20 + .../sights/att_vm_pi_golf21_minireddot01.lua | 7 + .../sights/att_vm_pi_golf21_minireddot02.lua | 7 + .../sights/att_vm_pi_golf21_minireddot03.lua | 7 + .../golf21/slides/att_vm_pi_golf21_slide.lua | 3 + .../slides/att_vm_pi_golf21_slide_auto.lua | 14 + .../slides/att_vm_pi_golf21_slide_black.lua | 14 + .../slides/att_vm_pi_golf21_slide_long.lua | 15 + .../slides/att_vm_pi_golf21_slide_v2.lua | 10 + .../grips/att_vm_angledgrip01.lua | 14 + .../grips/att_vm_angledgrip01_smg.lua | 2 + .../grips/att_vm_angledgrip02.lua | 17 + .../attachmentss/grips/att_vm_bipodgrip.lua | 17 + .../grips/att_vm_stubbygrip01.lua | 12 + .../grips/att_vm_stubbygrip02.lua | 16 + .../attachmentss/grips/att_vm_vertgrip01.lua | 13 + .../attachmentss/grips/att_vm_vertgrip02.lua | 16 + .../attachmentss/grips/att_vm_vertgrip03.lua | 16 + .../attachment_vm_sn_hdromeo_barrel_long.lua | 15 + .../attachment_vm_sn_hdromeo_barrel_mid.lua | 15 + .../attachment_vm_sn_hdromeo_barrel_short.lua | 14 + ...attachment_weapon_vm_sn_hdromeo_barrel.lua | 2 + .../attachment_vm_sn_hdromeo_laser01.lua | 5 + .../attachment_vm_sn_hdromeo_laser02.lua | 4 + .../attachment_vm_sn_hdromeo_laser03.lua | 4 + .../mags/attachment_vm_sn_hdromeo_xmag.lua | 25 + .../mags/attachment_vm_sn_hdromeo_xmag2.lua | 26 + .../attachment_weapon_vm_sn_hdromeo_mag.lua | 8 + .../muzzles/att_vm_hdromeo_compensator01.lua | 3 + .../muzzles/att_vm_hdromeo_flashhider01.lua | 2 + .../muzzles/att_vm_hdromeo_muzzlebrake01.lua | 3 + .../muzzles/att_vm_hdromeo_muzzlebrake02.lua | 2 + .../muzzles/att_vm_hdromeo_silencer01.lua | 2 + .../muzzles/att_vm_hdromeo_silencer02.lua | 2 + .../muzzles/att_vm_hdromeo_silencer03.lua | 2 + .../attachment_vm_sn_hdromeo_perk_bolt.lua | 8 + .../attachment_vm_sn_hdromeo_perk_soh.lua | 9 + ...tachment_weapon_vm_sn_hdromeo_receiver.lua | 2 + .../attachment_vm_sn_hdromeo_snprscope.lua | 24 + .../stock/attachment_vm_sn_hdromeo_stockh.lua | 19 + .../stock/attachment_vm_sn_hdromeo_stockl.lua | 18 + .../attachment_weapon_vm_sn_hdromeo_stock.lua | 2 + .../attachment_vm_lm_kilo121_barrel.lua | 2 + .../attachment_vm_lm_kilo121_barrel_long.lua | 20 + .../attachment_vm_lm_kilo121_barrel_mid.lua | 18 + .../attachment_vm_lm_kilo121_barrel_short.lua | 21 + .../attachment_vm_lm_kilo121_angledgrip01.lua | 11 + .../attachment_vm_lm_kilo121_angledgrip02.lua | 11 + .../grips/attachment_vm_lm_kilo121_bipod.lua | 5 + .../attachment_vm_lm_kilo121_stubbygrip01.lua | 11 + .../attachment_vm_lm_kilo121_stubbygrip02.lua | 11 + .../attachment_vm_lm_kilo121_vertgrip01.lua | 11 + .../attachment_vm_lm_kilo121_vertgrip02.lua | 11 + .../attachment_vm_lm_kilo121_vertgrip03.lua | 11 + ...achment_vm_lm_kilo121_laser01_cylinder.lua | 11 + ...achment_vm_lm_kilo121_laser02_cylinder.lua | 11 + ...achment_vm_lm_kilo121_laser03_cylinder.lua | 11 + .../mags/attachment_vm_lm_kilo121_mag.lua | 27 + .../mags/attachment_vm_lm_kilo121_mag_ext.lua | 37 + .../attachment_vm_lm_kilo121_perk_soh.lua | 9 + .../stock/attachment_vm_lm_kilo121_stock.lua | 3 + .../attachment_vm_ar_kilo433_barrel.lua | 2 + .../attachment_vm_ar_kilo433_barshort.lua | 17 + .../attachment_vm_ar_kilo433_barsil.lua | 23 + .../attachment_vm_ar_kilo433_long_barrel.lua | 14 + .../attachment_vm_ar_kilo433_angledgrip01.lua | 7 + .../attachment_vm_ar_kilo433_angledgrip02.lua | 7 + .../attachment_vm_ar_kilo433_bipodgrip.lua | 7 + .../attachment_vm_ar_kilo433_stubbygrip01.lua | 7 + .../attachment_vm_ar_kilo433_stubbygrip02.lua | 7 + .../attachment_vm_ar_kilo433_vertgrip01.lua | 7 + .../attachment_vm_ar_kilo433_vertgrip02.lua | 7 + .../attachment_vm_ar_kilo433_vertgrip03.lua | 7 + .../attachment_vm_ar_kilo433_laser01.lua | 11 + .../attachment_vm_ar_kilo433_laser02.lua | 11 + .../attachment_vm_ar_kilo433_laser03.lua | 11 + .../attachment_vm_ar_kilo433_drum_mag.lua | 20 + .../mags/attachment_vm_ar_kilo433_mag.lua | 2 + .../mags/attachment_vm_ar_kilo433_xmags.lua | 15 + .../mags/attachment_vm_ar_kilo433_xmags2.lua | 16 + .../attachment_vm_ar_kilo433_perk_soh.lua | 11 + .../stock/attachment_vm_ar_kilo433_stock.lua | 2 + .../attachment_vm_ar_kilo433_stock_heavy.lua | 16 + .../attachment_vm_ar_kilo433_stock_v2.lua | 11 + .../attachment_vm_ar_kilo433_stockno.lua | 9 + .../attachment_vm_sn_kilo98_barlong.lua | 14 + .../attachment_vm_sn_kilo98_barmid.lua | 16 + .../attachment_vm_sn_kilo98_barrel.lua | 2 + .../attachment_vm_sn_kilo98_barshort.lua | 16 + .../attachment_vm_sn_kilo98_laser01.lua | 4 + .../attachment_vm_sn_kilo98_laser02.lua | 4 + .../attachment_vm_sn_kilo98_laser03.lua | 4 + .../attachment_vm_sn_kilo98_perk_bolt.lua | 12 + .../attachment_vm_sn_kilo98_perk_soh.lua | 12 + .../attachment_vm_sn_kilo98_nostrip.lua | 12 + .../attachment_vm_sn_kilo98_sling.lua | 14 + .../kilo98/sights/att_vm_scope_kilo98.lua | 11 + .../kilo98/sights/att_vm_scope_vz_kilo98.lua | 11 + .../kilo98/sights/weapon_vm_scope_kilo98.lua | 35 + ...attachment_vm_sn_kilo98_stock_tactical.lua | 15 + .../stock/attachment_vm_sn_kilo98_stockl.lua | 17 + .../stock/attachment_vm_sn_kilo98_stocks.lua | 13 + .../attachmentss/lasers/att_vm_laser01.lua | 26 + .../lasers/att_vm_laser01_cylinder.lua | 3 + .../lasers/att_vm_laser01_pstl.lua | 3 + .../lasers/att_vm_laser01_shoothouse.lua | 11 + .../attachmentss/lasers/att_vm_laser02.lua | 25 + .../lasers/att_vm_laser02_cylinder.lua | 3 + .../lasers/att_vm_laser02_pstl.lua | 3 + .../attachmentss/lasers/att_vm_laser03.lua | 25 + .../lasers/att_vm_laser03_cylinder.lua | 3 + .../lasers/att_vm_laser03_pstl.lua | 3 + .../attachment_vm_lm_lima86_barrel.lua | 2 + .../attachment_vm_lm_lima86_barrel_long.lua | 16 + .../attachment_vm_lm_lima86_barrel_mid.lua | 18 + .../attachment_vm_lm_lima86_barrel_short.lua | 18 + .../attachment_vm_lm_lima86_angledgrip01.lua | 11 + .../attachment_vm_lm_lima86_angledgrip02.lua | 11 + .../grips/attachment_vm_lm_lima86_bipod.lua | 5 + .../attachment_vm_lm_lima86_stubbygrip01.lua | 11 + .../attachment_vm_lm_lima86_stubbygrip02.lua | 11 + .../attachment_vm_lm_lima86_vertgrip01.lua | 11 + .../attachment_vm_lm_lima86_vertgrip02.lua | 11 + .../attachment_vm_lm_lima86_vertgrip03.lua | 11 + ...tachment_vm_lm_lima86_laser01_cylinder.lua | 10 + ...tachment_vm_lm_lima86_laser02_cylinder.lua | 10 + ...tachment_vm_lm_lima86_laser03_cylinder.lua | 10 + .../mags/attachment_vm_lm_lima86_mag.lua | 12 + .../mags/attachment_vm_lm_lima86_xmags.lua | 11 + .../mags/attachment_vm_lm_lima86_xmags2.lua | 10 + .../attachment_vm_lm_lima86_perk_soh.lua | 9 + .../attachment_vm_lm_lima86_4x_west.lua | 22 + ...attachment_vm_lm_lima86_stock_tactical.lua | 8 + .../stock/attachment_vm_lm_lima86_stockl.lua | 8 + .../stock/attachment_vm_lm_lima86_stocks.lua | 5 + .../magazines/att_vm_45rnd_mag_eastern.lua | 17 + .../magazines/att_vm_50rnd_mag.lua | 21 + .../magazines/att_vm_60rnd_mag.lua | 29 + .../attachment_vm_ar_mcharlie_barrel.lua | 2 + .../attachment_vm_ar_mcharlie_barrel_v17.lua | 6 + .../attachment_vm_ar_mcharlie_longbarrel.lua | 15 + .../attachment_vm_ar_mcharlie_shortbarrel.lua | 20 + ...chment_vm_ar_mcharlie_suppressorbarrel.lua | 22 + ...attachment_vm_ar_mcharlie_angledgrip01.lua | 13 + ...attachment_vm_ar_mcharlie_angledgrip02.lua | 13 + .../attachment_vm_ar_mcharlie_bipodgrip.lua | 12 + ...attachment_vm_ar_mcharlie_stubbygrip01.lua | 13 + ...attachment_vm_ar_mcharlie_stubbygrip02.lua | 13 + .../attachment_vm_ar_mcharlie_vertgrip01.lua | 13 + .../attachment_vm_ar_mcharlie_vertgrip02.lua | 13 + .../attachment_vm_ar_mcharlie_vertgrip03.lua | 13 + .../attachment_vm_ar_mcharlie_laser01.lua | 13 + .../attachment_vm_ar_mcharlie_laser02.lua | 13 + .../attachment_vm_ar_mcharlie_laser03.lua | 13 + .../mags/attachment_vm_ar_mcharlie_mag.lua | 36 + .../attachment_vm_ar_mcharlie_mag_v17.lua | 6 + .../mags/attachment_vm_ar_mcharlie_magsub.lua | 27 + .../mags/attachment_vm_ar_mcharlie_xmags.lua | 26 + .../mags/attachment_vm_ar_mcharlie_xmags2.lua | 29 + .../attachment_vm_ar_mcharlie_perk_soh.lua | 11 + .../attachment_vm_ar_mcharlie_receiver.lua | 15 + ...attachment_vm_ar_mcharlie_receiver_v17.lua | 19 + .../attachment_vm_ar_mcharlie_lightstock.lua | 20 + .../stock/attachment_vm_ar_mcharlie_stock.lua | 2 + .../attachment_vm_ar_mcharlie_stock_v2.lua | 19 + .../attachment_vm_lm_mgolf34_ironsight.lua | 8 + .../attachment_vm_lm_mgolf34_barrel.lua | 2 + .../attachment_vm_lm_mgolf34_barrel_long.lua | 16 + .../attachment_vm_lm_mgolf34_barrel_mid.lua | 19 + .../attachment_vm_lm_mgolf34_barrel_short.lua | 17 + .../attachment_vm_lm_mgolf34_angledgrip01.lua | 11 + .../attachment_vm_lm_mgolf34_angledgrip02.lua | 11 + .../grips/attachment_vm_lm_mgolf34_bipod.lua | 6 + .../attachment_vm_lm_mgolf34_stubbygrip01.lua | 11 + .../attachment_vm_lm_mgolf34_stubbygrip02.lua | 11 + .../attachment_vm_lm_mgolf34_vertgrip01.lua | 11 + .../attachment_vm_lm_mgolf34_vertgrip02.lua | 11 + .../attachment_vm_lm_mgolf34_vertgrip03.lua | 11 + ...achment_vm_lm_mgolf34_laser01_cylinder.lua | 11 + ...achment_vm_lm_mgolf34_laser02_cylinder.lua | 11 + ...achment_vm_lm_mgolf34_laser03_cylinder.lua | 11 + .../mags/attachment_vm_lm_mgolf34_mag.lua | 15 + .../attachment_vm_lm_mgolf34_mag_xlrg.lua | 25 + .../attachment_vm_lm_mgolf34_perk_soh.lua | 7 + .../stock/attachment_vm_lm_mgolf34_stock.lua | 3 + .../attachment_vm_lm_mgolf36_barrel.lua | 3 + .../attachment_vm_lm_mgolf36_barrel_med.lua | 18 + .../attachment_vm_lm_mgolf36_barrel_short.lua | 17 + .../attachment_vm_lm_mgolf36_angledgrip01.lua | 11 + .../attachment_vm_lm_mgolf36_angledgrip02.lua | 11 + .../attachment_vm_lm_mgolf36_stubbygrip01.lua | 11 + .../attachment_vm_lm_mgolf36_stubbygrip02.lua | 11 + .../attachment_vm_lm_mgolf36_vertgrip01.lua | 11 + .../attachment_vm_lm_mgolf36_vertgrip02.lua | 11 + .../attachment_vm_lm_mgolf36_vertgrip03.lua | 11 + .../attachment_vm_lm_mgolf36_laser01.lua | 11 + .../attachment_vm_lm_mgolf36_laser02.lua | 12 + .../attachment_vm_lm_mgolf36_laser03.lua | 12 + .../mags/attachment_vm_lm_mgolf36_50mag.lua | 13 + .../mags/attachment_vm_lm_mgolf36_60mag.lua | 14 + .../mags/attachment_vm_lm_mgolf36_drummag.lua | 18 + .../attachment_vm_lm_mgolf36_drummag200.lua | 11 + .../mags/attachment_vm_lm_mgolf36_mag.lua | 28 + .../attachment_vm_lm_mgolf36_magblackout.lua | 14 + .../attachment_vm_lm_mgolf36_perk_soh.lua | 9 + .../attachment_vm_lm_mgolf36_pistolgrip.lua | 4 + .../sights/attachment_vm_lm_mgolf36_4x.lua | 23 + .../attachment_vm_lm_mgolf36_reflex.lua | 24 + .../stock/attachment_vm_lm_mgolf36_stock.lua | 4 + .../attachment_vm_lm_mgolf36_stock_heavy.lua | 5 + .../attachment_vm_lm_mgolf36_stock_light.lua | 5 + .../attachment_vm_lm_mgolf36_stock_no.lua | 2 + ...ttachment_vm_lm_mgolf36_stock_tactical.lua | 5 + .../attachment_vm_lm_mgolf36_toprail.lua | 2 + .../barrels/attachment_vm_pi_mike_barauto.lua | 19 + .../attachment_vm_pi_mike_barlight.lua | 5 + .../barrels/attachment_vm_pi_mike_barrel.lua | 2 + .../barrels/attachment_vm_pi_mike_barsil.lua | 16 + .../mike/grips/attachment_vm_pi_mike_grip.lua | 8 + .../attachment_vm_pi_mike_pistolgrip01.lua | 13 + .../attachment_vm_pi_mike_pistolgrip02.lua | 12 + .../attachment_vm_pi_mike_pistolgrip03.lua | 12 + .../mike/lasers/att_vm_pi_mike_laser01.lua | 4 + .../mike/lasers/att_vm_pi_mike_laser02.lua | 4 + .../mike/lasers/att_vm_pi_mike_laser03.lua | 4 + .../mags/attachment_vm_pi_mike_drummag.lua | 38 + .../mike/mags/attachment_vm_pi_mike_mag.lua | 22 + .../mike/mags/attachment_vm_pi_mike_xmags.lua | 31 + .../mike/perks/att_vm_pi_mike_soh.lua | 12 + .../stocks/attachment_vm_pi_mike_stockh.lua | 24 + .../stocks/attachment_vm_pi_mike_stockl.lua | 24 + .../attachment_vm_sn_mike14_barlight.lua | 16 + .../attachment_vm_sn_mike14_barlong.lua | 14 + .../attachment_vm_sn_mike14_barlong2.lua | 14 + .../attachment_vm_sn_mike14_barrel.lua | 2 + .../attachment_vm_sn_mike14_angledgrip01.lua | 12 + .../attachment_vm_sn_mike14_angledgrip02.lua | 12 + .../attachment_vm_sn_mike14_bipodgrip.lua | 12 + .../attachment_vm_sn_mike14_stubbygrip01.lua | 12 + .../attachment_vm_sn_mike14_stubbygrip02.lua | 12 + .../attachment_vm_sn_mike14_vertgrip01.lua | 12 + .../attachment_vm_sn_mike14_vertgrip02.lua | 12 + .../attachment_vm_sn_mike14_vertgrip03.lua | 12 + .../attachment_vm_sn_mike14_laser01.lua | 12 + .../attachment_vm_sn_mike14_laser02.lua | 12 + .../attachment_vm_sn_mike14_laser03.lua | 12 + .../mags/attachment_vm_sn_mike14_mag.lua | 8 + .../mags/attachment_vm_sn_mike14_xmags.lua | 24 + .../mags/attachment_vm_sn_mike14_xmags2.lua | 24 + .../attachment_vm_sn_mike14_perk_fullauto.lua | 20 + .../attachment_vm_sn_mike14_perk_soh.lua | 11 + .../attachment_vm_sn_mike14_stock_heavy.lua | 22 + .../attachment_vm_sn_mike14_stock_heavy01.lua | 11 + .../attachment_vm_sn_mike14_stock_heavy02.lua | 11 + .../attachment_vm_sn_mike14_stock_light01.lua | 11 + ...attachment_vm_sn_mike14_stock_medium01.lua | 11 + .../attachment_vm_sn_mike14_stock_no.lua | 11 + ...attachment_vm_sn_mike14_stock_tactical.lua | 13 + .../attachment_vm_sn_mike14_stock_v2_alt.lua | 17 + .../attachment_vm_sn_mike14_stock_v3.lua | 11 + .../attachment_vm_sn_mike14_stockcqb_alt.lua | 23 + .../attachment_vm_pi_mike1911_barlong.lua | 14 + .../attachment_vm_pi_mike1911_barshort.lua | 14 + .../attachment_vm_pi_mike1911_v1_slide.lua | 2 + .../attachment_vm_pi_mike1911_v2_slide.lua | 12 + .../lasers/att_vm_pi_mike1911_laser01.lua | 1 + .../lasers/att_vm_pi_mike1911_laser02.lua | 1 + .../lasers/att_vm_pi_mike1911_laser03.lua | 1 + .../mags/attachment_vm_pi_mike1911_mmags.lua | 19 + .../mags/attachment_vm_pi_mike1911_v1_mag.lua | 8 + .../mags/attachment_vm_pi_mike1911_xmags.lua | 21 + .../attachment_vm_pi_mike1911_muzzlebrake.lua | 14 + .../mike1911/perks/att_vm_pi_mike1911_soh.lua | 12 + .../attachment_vm_sh_mike26_barheavy.lua | 19 + .../attachment_vm_sh_mike26_barlong.lua | 15 + .../attachment_vm_sh_mike26_barrel.lua | 2 + .../attachment_vm_sh_mike26_barshort.lua | 19 + .../attachment_vm_sh_mike26_laser01.lua | 10 + .../attachment_vm_sh_mike26_laser02.lua | 10 + .../attachment_vm_sh_mike26_laser03.lua | 10 + .../mags/attachment_vm_sh_mike26_mag.lua | 2 + .../mags/attachment_vm_sh_mike26_smag.lua | 21 + .../mags/attachment_vm_sh_mike26_xmag.lua | 22 + .../attachment_vm_sh_mike26_perk_slamfire.lua | 20 + .../attachment_vm_sh_mike26_perk_soh.lua | 10 + .../pumps/attachment_vm_sh_mike26_pumph.lua | 12 + .../attachment_vm_sh_mike26_pumphandle.lua | 2 + .../pumps/attachment_vm_sh_mike26_pumpl.lua | 16 + .../stock/attachment_vm_sh_mike26_stock.lua | 3 + .../barrels/attachment_vm_ar_mike4_barrel.lua | 2 + .../attachment_vm_ar_mike4_barrel_v15.lua | 12 + .../attachment_vm_ar_mike4_barrel_v2.lua | 13 + .../attachment_vm_ar_mike4_barrel_v3_alt.lua | 15 + .../attachment_vm_ar_mike4_barrel_v7.lua | 11 + .../barrels/attachment_vm_ar_mike4_barsil.lua | 18 + .../attachment_vm_ar_mike4_custombarrel.lua | 15 + .../attachment_vm_ar_mike4_mike203barrel.lua | 18 + .../attachment_vm_ar_mike4_shortbarrel.lua | 17 + .../attachment_vm_ar_mike4_angledgrip01.lua | 16 + .../attachment_vm_ar_mike4_angledgrip02.lua | 17 + .../attachment_vm_ar_mike4_bipodgrip.lua | 15 + .../attachment_vm_ar_mike4_stubbygrip01.lua | 16 + .../attachment_vm_ar_mike4_stubbygrip02.lua | 16 + .../attachment_vm_ar_mike4_vertgrip01.lua | 16 + .../attachment_vm_ar_mike4_vertgrip02.lua | 16 + .../attachment_vm_ar_mike4_vertgrip03.lua | 16 + .../lasers/attachment_vm_ar_mike4_laser01.lua | 14 + .../lasers/attachment_vm_ar_mike4_laser02.lua | 13 + .../lasers/attachment_vm_ar_mike4_laser03.lua | 13 + .../mags/attachment_vm_ar_mike4_calsmg.lua | 35 + .../mike4/mags/attachment_vm_ar_mike4_mag.lua | 22 + .../mags/attachment_vm_ar_mike4_mag_v15.lua | 13 + .../mags/attachment_vm_ar_mike4_mag_v5.lua | 26 + .../mags/attachment_vm_ar_mike4_xmags.lua | 26 + .../mags/attachment_vm_ar_mike4_xmags2.lua | 27 + .../perks/attachment_vm_ar_mike4_perk_soh.lua | 13 + .../attachment_vm_ar_mike4_receiver.lua | 2 + .../attachment_vm_ar_mike4_receiver_v15.lua | 10 + .../attachment_vm_ar_mike4_receiver_v2.lua | 10 + .../attachment_vm_ar_mike4_receiver_v7.lua | 10 + .../attachment_vm_ar_mike4_carryhandle.lua | 17 + .../attachment_vm_ar_mike4_customstock.lua | 20 + .../stock/attachment_vm_ar_mike4_stock.lua | 2 + .../attachment_vm_ar_mike4_stock_v15.lua | 6 + .../stock/attachment_vm_ar_mike4_stock_v2.lua | 6 + .../stock/attachment_vm_ar_mike4_stockno.lua | 17 + .../attachment_vm_pi_mike9_barauto.lua | 14 + .../attachment_vm_pi_mike9_barlight.lua | 12 + .../attachment_vm_pi_mike9_barlong.lua | 15 + .../barrels/attachment_vm_pi_mike9_barrel.lua | 2 + .../attachment_vm_pi_mike9_barrel_black.lua | 3 + .../grips/attachment_vm_pi_mike9_gripvert.lua | 24 + .../grips/attachment_vm_pi_mike9_pgrip.lua | 2 + .../attachment_vm_pi_mike9_pstlgrpcust.lua | 12 + .../attachment_vm_pi_mike9_pstlgrplght.lua | 14 + .../mike9/lasers/att_vm_pi_mike9_laser01.lua | 2 + .../mike9/lasers/att_vm_pi_mike9_laser02.lua | 2 + .../mike9/lasers/att_vm_pi_mike9_laser03.lua | 2 + .../mike9/mags/attachment_vm_pi_mike9_mag.lua | 13 + .../mags/attachment_vm_pi_mike9_xmags.lua | 22 + .../mags/attachment_vm_pi_mike9_xmagslrg.lua | 26 + .../attachment_vm_pi_mike9_compensator.lua | 15 + .../mike9/perks/att_vm_pi_mike9_soh.lua | 12 + .../sights/attachment_vm_pi_mike9_scope.lua | 25 + .../stocks/attachment_vm_pi_mike9_stock.lua | 21 + .../attachment_vm_lm_mkilo3_barhvy.lua | 18 + .../attachment_vm_lm_mkilo3_barlong.lua | 21 + .../attachment_vm_lm_mkilo3_barrel.lua | 2 + .../attachment_vm_lm_mkilo3_barshort.lua | 18 + .../attachment_vm_lm_mkilo3_angledgrip01.lua | 11 + .../attachment_vm_lm_mkilo3_angledgrip02.lua | 11 + .../grips/attachment_vm_lm_mkilo3_bipod.lua | 5 + .../attachment_vm_lm_mkilo3_stubbygrip01.lua | 11 + .../attachment_vm_lm_mkilo3_stubbygrip02.lua | 11 + .../attachment_vm_lm_mkilo3_vertgrip01.lua | 11 + .../attachment_vm_lm_mkilo3_vertgrip02.lua | 11 + .../attachment_vm_lm_mkilo3_vertgrip03.lua | 11 + ...tachment_vm_lm_mkilo3_laser01_cylinder.lua | 10 + ...tachment_vm_lm_mkilo3_laser02_cylinder.lua | 10 + ...tachment_vm_lm_mkilo3_laser03_cylinder.lua | 10 + .../mags/attachment_vm_lm_mkilo3_mag.lua | 26 + .../mags/attachment_vm_lm_mkilo3_smags.lua | 37 + .../mags/attachment_vm_lm_mkilo3_xbelt.lua | 36 + .../attachment_vm_lm_mkilo3_perk_soh.lua | 9 + .../stock/attachment_vm_lm_mkilo3_stock.lua | 3 + .../stock/attachment_vm_lm_mkilo3_stockl.lua | 16 + .../attachment_vm_sm_mpapa5_barrel.lua | 25 + ...attachment_vm_sm_mpapa5_barrel_noflash.lua | 8 + ...achment_vm_sm_mpapa5_barrel_suppressor.lua | 21 + ...tachment_vm_sm_mpapa5_barrel_suppshort.lua | 14 + .../attachment_vm_sm_mpapa5_barshort.lua | 16 + .../attachment_vm_sm_mpapa5_railgrip.lua | 11 + .../attachment_vm_sm_mpapa5_angledgrip01.lua | 16 + .../attachment_vm_sm_mpapa5_angledgrip02.lua | 17 + .../attachment_vm_sm_mpapa5_bipodgrip.lua | 17 + .../attachment_vm_sm_mpapa5_stubbygrip01.lua | 17 + .../attachment_vm_sm_mpapa5_stubbygrip02.lua | 17 + .../attachment_vm_sm_mpapa5_vertgrip01.lua | 17 + .../attachment_vm_sm_mpapa5_vertgrip02.lua | 17 + .../attachment_vm_sm_mpapa5_vertgrip03.lua | 16 + .../attachment_vm_sm_mpapa5_laser01.lua | 11 + .../attachment_vm_sm_mpapa5_laser02.lua | 11 + .../attachment_vm_sm_mpapa5_laser03.lua | 11 + .../mags/attachment_vm_sm_mpapa5_mag.lua | 2 + .../mags/attachment_vm_sm_mpapa5_mag_xmag.lua | 17 + .../attachment_vm_sm_mpapa5_mag_xmag2.lua | 24 + .../attachment_vm_sm_mpapa5_perk_soh.lua | 10 + .../attachment_vm_sm_mpapa5_receiver.lua | 2 + .../attachment_vm_sm_mpapa5_receiver_v2.lua | 6 + .../stock/attachment_vm_sm_mpapa5_stock.lua | 2 + ...ttachment_vm_sm_mpapa5_stock_fullstock.lua | 17 + .../attachment_vm_sm_mpapa5_stock_nostock.lua | 16 + .../attachment_vm_sm_mpapa7_barlight.lua | 12 + .../attachment_vm_sm_mpapa7_barlong.lua | 14 + .../attachment_vm_sm_mpapa7_barlong2.lua | 15 + .../attachment_vm_sm_mpapa7_barrel.lua | 2 + .../attachment_vm_sm_mpapa7_angledgrip01.lua | 16 + .../attachment_vm_sm_mpapa7_angledgrip02.lua | 17 + .../attachment_vm_sm_mpapa7_bipodgrip.lua | 17 + .../attachment_vm_sm_mpapa7_stubbygrip01.lua | 17 + .../attachment_vm_sm_mpapa7_stubbygrip02.lua | 17 + .../attachment_vm_sm_mpapa7_vertgrip01.lua | 17 + .../attachment_vm_sm_mpapa7_vertgrip02.lua | 17 + .../attachment_vm_sm_mpapa7_vertgrip03.lua | 16 + .../mpapa7/grips/fss_folding_grip.lua | 25 + .../attachment_vm_sm_mpapa7_laser01.lua | 11 + .../attachment_vm_sm_mpapa7_laser02.lua | 11 + .../attachment_vm_sm_mpapa7_laser03.lua | 11 + .../mags/attachment_vm_sm_mpapa7_mag.lua | 2 + .../mags/attachment_vm_sm_mpapa7_mmags.lua | 21 + .../mags/attachment_vm_sm_mpapa7_xmags.lua | 19 + .../attachment_vm_sm_mpapa7_perk_soh.lua | 12 + .../attachment_vm_sm_mpapa7_receiver.lua | 2 + .../attachment_vm_sm_mpapa7_receiver_v2.lua | 6 + .../stock/attachment_vm_sm_mpapa7_stock.lua | 2 + .../mpapa7/stock/xrk_retractable_stock.lua | 18 + .../muzzles/breacher/att_vm_breacher01.lua | 21 + .../muzzles/breacher/att_vm_breacher02.lua | 23 + .../breacher/att_vm_breacher02_shgn.lua | 3 + .../compensator/att_vm_compensator01.lua | 23 + .../compensator/att_vm_compensator01_pstl.lua | 3 + .../compensator/att_vm_compensator02.lua | 26 + .../compensator/att_vm_compensator_shgn01.lua | 23 + .../compensator/att_vm_compensator_shgn02.lua | 25 + .../flashhider/att_vm_flashhider01.lua | 20 + .../flashhider/att_vm_flashhider01_pstl.lua | 3 + .../flashhider/att_vm_flashhider01_shgn.lua | 3 + .../flashhider/att_vm_flashhider02.lua | 20 + .../flashhider/att_vm_flashhider03.lua | 20 + .../flashhider/att_vm_flashhider04.lua | 20 + .../muzzlebrake/att_vm_muzzlebrake01.lua | 25 + .../muzzlebrake/att_vm_muzzlebrake01_pstl.lua | 3 + .../muzzlebrake/att_vm_muzzlebrake02.lua | 27 + .../muzzlebrake/att_vm_muzzlebrake03.lua | 27 + .../muzzlebrake/att_vm_muzzlebrake04.lua | 27 + .../muzzlebrake/att_vm_muzzlebrake_shgn01.lua | 27 + .../att_vm_oil_filter_suppressor.lua | 20 + .../muzzles/suppressors/att_vm_silencer01.lua | 23 + .../suppressors/att_vm_silencer01_pstl.lua | 3 + .../muzzles/suppressors/att_vm_silencer02.lua | 27 + .../suppressors/att_vm_silencer02_pstl.lua | 3 + .../muzzles/suppressors/att_vm_silencer03.lua | 27 + .../muzzles/suppressors/att_vm_silencer04.lua | 27 + .../suppressors/att_vm_silencer04_pstl.lua | 3 + .../muzzles/suppressors/att_vm_silencer05.lua | 14 + .../muzzles/suppressors/att_vm_silencer06.lua | 14 + .../attachment_vm_sh_oscar12_silencer02.lua | 10 + .../attachment_vm_sh_oscar12_silencer03.lua | 10 + .../attachment_vm_sh_oscar12_suppressor.lua | 10 + .../attachment_vm_sh_oscar12_barrel.lua | 2 + .../attachment_vm_sh_oscar12_barrellong.lua | 15 + .../attachment_vm_sh_oscar12_barrelmid.lua | 18 + .../attachment_vm_sh_oscar12_barrelshort.lua | 16 + .../attachment_vm_sh_oscar12_foreendlight.lua | 13 + .../attachment_vm_sh_oscar12_forendstable.lua | 18 + ...ttachment_vm_sh_oscar12_forendtactical.lua | 19 + .../forend/attachment_vm_sh_oscar12_guard.lua | 2 + .../grips/attachment_vm_sh_oscar12_none.lua | 17 + .../attachment_vm_sh_oscar12_sidegrip.lua | 13 + ...attachment_vm_sh_oscar12_sidegrip_long.lua | 11 + .../attachment_vm_sh_oscar12_sidegripang.lua | 16 + .../attachment_vm_sh_oscar12_laser01.lua | 10 + .../attachment_vm_sh_oscar12_laser02.lua | 10 + .../attachment_vm_sh_oscar12_laser03.lua | 10 + .../mags/attachment_vm_sh_oscar12_drummag.lua | 53 + .../mags/attachment_vm_sh_oscar12_mag.lua | 6 + .../mags/attachment_vm_sh_oscar12_xmags.lua | 25 + .../attachment_vm_sh_oscar12_perk_soh.lua | 11 + .../stock/attachment_vm_sh_oscar12_stock.lua | 3 + .../attachment_vm_sh_oscar12_stockhvy.lua | 17 + .../attachment_vm_sh_oscar12_stocklgt.lua | 17 + .../attachment_vm_pi_papa320_barrel_ext.lua | 15 + .../attachment_vm_pi_papa320_slide.lua | 3 + .../attachment_vm_pi_papa320_slide_black.lua | 4 + .../attachment_vm_pi_papa320_slide_vented.lua | 12 + .../lasers/att_vm_pi_papa320_laser01.lua | 1 + .../lasers/att_vm_pi_papa320_laser02.lua | 1 + .../lasers/att_vm_pi_papa320_laser03.lua | 1 + .../attachment_vm_laser_pstl_shoothouse.lua | 27 + .../mags/attachment_vm_pi_papa320_mag.lua | 2 + .../mags/attachment_vm_pi_papa320_mag_ext.lua | 17 + .../attachment_vm_pi_papa320_mag_ext2.lua | 21 + .../attachment_vm_pi_papa320_silencer.lua | 4 + .../papa320/perks/att_vm_pi_papa320_soh.lua | 12 + .../attachment_vm_sm_papa90_barrel.lua | 2 + .../attachment_vm_sm_papa90_custombarrel.lua | 16 + .../attachment_vm_sm_papa90_longbarrel.lua | 14 + .../attachment_vm_sm_papa90_laser01.lua | 16 + .../attachment_vm_sm_papa90_laser02.lua | 16 + .../attachment_vm_sm_papa90_laser03.lua | 16 + .../mags/attachment_vm_sm_papa90_mag.lua | 67 + .../mags/attachment_vm_sm_papa90_mag_v4.lua | 6 + .../attachment_vm_sm_papa90_perk_soh.lua | 7 + .../attachment_vm_sm_papa90_receiver.lua | 2 + .../attachment_vm_sm_papa90_reddotscope.lua | 25 + ...attachment_vm_sm_papa90_stock_tactical.lua | 16 + .../stock/attachment_vm_sm_papa90_stockl.lua | 16 + .../stock/attachment_vm_sm_papa90_stocks.lua | 11 + .../attachmentss/perks/att_perk_bolt.lua | 13 + .../attachmentss/perks/att_perk_fastswap.lua | 12 + .../attachmentss/perks/att_perk_fmj.lua | 14 + .../attachmentss/perks/att_perk_headshot.lua | 13 + .../attachmentss/perks/att_perk_hip.lua | 12 + .../attachmentss/perks/att_perk_launch.lua | 10 + .../perks/att_perk_launch_dmg.lua | 10 + .../attachmentss/perks/att_perk_nodrop.lua | 13 + .../attachmentss/perks/att_perk_ricochet.lua | 13 + .../attachmentss/perks/att_perk_rof.lua | 11 + .../attachmentss/perks/att_perk_scopesway.lua | 10 + .../attachmentss/perks/att_perk_soh.lua | 3 + .../perks/att_perk_steadywalk.lua | 10 + .../barrels/attachment_vm_lm_pkilo_barrel.lua | 2 + .../attachment_vm_lm_pkilo_barrel_heavy.lua | 19 + .../attachment_vm_lm_pkilo_barrel_long.lua | 17 + .../attachment_vm_lm_pkilo_barrel_short.lua | 17 + .../attachment_vm_lm_pkilo_angledgrip01.lua | 11 + .../attachment_vm_lm_pkilo_angledgrip02.lua | 11 + .../grips/attachment_vm_lm_pkilo_bipod.lua | 5 + .../attachment_vm_lm_pkilo_stubbygrip01.lua | 11 + .../attachment_vm_lm_pkilo_stubbygrip02.lua | 11 + .../attachment_vm_lm_pkilo_vertgrip01.lua | 11 + .../attachment_vm_lm_pkilo_vertgrip02.lua | 11 + .../attachment_vm_lm_pkilo_vertgrip03.lua | 11 + ...ttachment_vm_lm_pkilo_laser01_cylinder.lua | 10 + ...ttachment_vm_lm_pkilo_laser02_cylinder.lua | 10 + ...ttachment_vm_lm_pkilo_laser03_cylinder.lua | 10 + .../pkilo/mags/attachment_vm_lm_pkilo_mag.lua | 18 + .../mags/attachment_vm_lm_pkilo_mag_ext.lua | 28 + .../mags/attachment_vm_lm_pkilo_mag_xlrg.lua | 28 + .../perks/attachment_vm_lm_pkilo_perk_soh.lua | 7 + .../stock/attachment_vm_lm_pkilo_stock.lua | 3 + .../attachment_vm_sn_romeo700_barhvy.lua | 16 + .../attachment_vm_sn_romeo700_barlong.lua | 15 + .../attachment_vm_sn_romeo700_barrel.lua | 2 + .../attachment_vm_sn_romeo700_barshort.lua | 18 + .../attachment_vm_sn_romeo700_barsil.lua | 18 + .../bolts/attachment_vm_sn_romeo700_bolt.lua | 2 + .../attachment_vm_sn_romeo700_bolthvy.lua | 11 + .../bolts/attachment_vm_sn_romeo700_boltl.lua | 11 + ...attachment_vm_sn_romeo700_angledgrip01.lua | 15 + ...attachment_vm_sn_romeo700_angledgrip02.lua | 16 + .../attachment_vm_sn_romeo700_bipodgrip.lua | 16 + ...attachment_vm_sn_romeo700_stubbygrip01.lua | 16 + ...attachment_vm_sn_romeo700_stubbygrip02.lua | 16 + .../attachment_vm_sn_romeo700_vertgrip01.lua | 16 + .../attachment_vm_sn_romeo700_vertgrip02.lua | 16 + .../attachment_vm_sn_romeo700_vertgrip03.lua | 16 + .../attachment_vm_sn_romeo700_laser01.lua | 4 + .../attachment_vm_sn_romeo700_laser02.lua | 4 + .../attachment_vm_sn_romeo700_laser03.lua | 4 + .../mags/attachment_vm_sn_romeo700_mag.lua | 8 + .../attachment_vm_sn_romeo700_magcalcust1.lua | 26 + .../attachment_vm_sn_romeo700_magcalcust2.lua | 22 + .../mags/attachment_vm_sn_romeo700_xmags.lua | 26 + .../attachment_vm_sn_romeo700_perk_bolt.lua | 9 + .../attachment_vm_sn_romeo700_perk_soh.lua | 10 + .../attachment_vm_sn_romeo700_irons.lua | 9 + .../attachment_vm_sn_romeo700_scope.lua | 29 + .../stock/attachment_vm_sn_romeo700_stock.lua | 2 + .../attachment_vm_sn_romeo700_stockhvy.lua | 19 + .../attachment_vm_sn_romeo700_stockskel.lua | 25 + .../attachment_vm_sn_romeo700_stocksn.lua | 19 + .../attachment_vm_sn_romeo700_stocktac.lua | 22 + .../attachment_vm_sh_romeo870_barrel.lua | 2 + .../attachment_vm_sh_romeo870_barrel_long.lua | 18 + .../attachment_vm_sh_romeo870_barrel_sawn.lua | 20 + .../attachment_vm_sh_romeo870_barrel_v2.lua | 7 + ...attachment_vm_sh_romeo870_heatguard_mp.lua | 14 + ...attachment_vm_sh_romeo870_angledgrip01.lua | 10 + ...attachment_vm_sh_romeo870_angledgrip02.lua | 10 + ...attachment_vm_sh_romeo870_stubbygrip01.lua | 10 + ...attachment_vm_sh_romeo870_stubbygrip02.lua | 10 + .../attachment_vm_sh_romeo870_vertgrip01.lua | 10 + .../attachment_vm_sh_romeo870_vertgrip02.lua | 10 + .../attachment_vm_sh_romeo870_vertgrip03.lua | 10 + .../attachment_vm_sh_romeo870_laser01.lua | 10 + .../attachment_vm_sh_romeo870_laser02.lua | 10 + .../attachment_vm_sh_romeo870_laser03.lua | 10 + .../mags/attachment_vm_sh_romeo870_mag.lua | 29 + ...ttachment_vm_sh_romeo870_shtgnsilencer.lua | 10 + .../attachment_vm_sh_romeo870_silencer02.lua | 10 + .../attachment_vm_sh_romeo870_silencer03.lua | 10 + ...ttachment_vm_sh_romeo870_perk_slamfire.lua | 22 + .../attachment_vm_sh_romeo870_perk_soh.lua | 12 + .../pumps/attachment_vm_sh_romeo870_pump.lua | 3 + .../attachment_vm_sh_romeo870_pump_custom.lua | 12 + .../attachment_vm_sh_romeo870_pump_v2.lua | 16 + .../attachment_vm_sh_romeo870_pump_wood.lua | 18 + .../attachment_vm_sh_romeo870_pumpalt.lua | 8 + .../attachment_vm_sh_romeo870_receiver.lua | 4 + .../attachment_vm_sh_romeo870_receiver_v2.lua | 10 + .../attachment_vm_sh_romeo870_no_rail.lua | 8 + .../stock/att_vm_romeo870_stock_heavy01.lua | 21 + .../stock/att_vm_romeo870_stock_heavy02.lua | 22 + .../stock/att_vm_romeo870_stock_light01.lua | 20 + .../stock/att_vm_romeo870_stock_medium01.lua | 20 + .../stock/attachment_vm_sh_romeo870_stock.lua | 6 + ...chment_vm_sh_romeo870_stock_pistolgrip.lua | 21 + .../attachment_vm_sh_romeo870_stock_v2.lua | 8 + .../attachment_vm_sh_romeo870_stock_wood.lua | 26 + .../attachment_vm_sn_sbeta_barlong.lua | 16 + .../barrels/attachment_vm_sn_sbeta_barmid.lua | 14 + .../barrels/attachment_vm_sn_sbeta_barrel.lua | 2 + .../attachment_vm_sn_sbeta_barshort.lua | 15 + .../lasers/attachment_vm_sn_sbeta_laser01.lua | 5 + .../lasers/attachment_vm_sn_sbeta_laser02.lua | 5 + .../lasers/attachment_vm_sn_sbeta_laser03.lua | 5 + .../attachment_vm_sn_sbeta_perk_bolt.lua | 8 + .../attachment_vm_sn_sbeta_perk_slamfire.lua | 20 + .../perks/attachment_vm_sn_sbeta_perk_soh.lua | 12 + .../sights/attachment_vm_sn_sbeta_scope.lua | 29 + .../stock/attachment_vm_sn_sbeta_rack.lua | 13 + .../attachment_vm_sn_sbeta_stock_light.lua | 15 + .../attachment_vm_sn_sbeta_stock_stable.lua | 13 + .../attachment_vm_sn_sbeta_stock_tactical.lua | 15 + .../attachment_vm_ar_scharlie_barrel.lua | 2 + .../attachment_vm_ar_scharlie_barrel_long.lua | 16 + .../attachment_vm_ar_scharlie_barrel_mid.lua | 13 + .../attachment_vm_ar_scharlie_barrel_pdw.lua | 15 + .../attachment_vm_ar_scharlie_barrel_v18.lua | 6 + ...attachment_vm_ar_scharlie_angledgrip01.lua | 7 + ...attachment_vm_ar_scharlie_angledgrip02.lua | 7 + .../attachment_vm_ar_scharlie_bipodgrip.lua | 7 + ...attachment_vm_ar_scharlie_stubbygrip01.lua | 7 + ...attachment_vm_ar_scharlie_stubbygrip02.lua | 7 + .../attachment_vm_ar_scharlie_vertgrip01.lua | 7 + .../attachment_vm_ar_scharlie_vertgrip02.lua | 7 + .../attachment_vm_ar_scharlie_vertgrip03.lua | 7 + .../attachment_vm_ar_scharlie_laser01.lua | 14 + .../attachment_vm_ar_scharlie_laser02.lua | 13 + .../attachment_vm_ar_scharlie_laser03.lua | 13 + .../mags/attachment_vm_ar_scharlie_mag.lua | 2 + .../attachment_vm_ar_scharlie_mag_dmr.lua | 39 + .../attachment_vm_ar_scharlie_mag_v18.lua | 6 + .../mags/attachment_vm_ar_scharlie_mmags.lua | 18 + .../mags/attachment_vm_ar_scharlie_xmags.lua | 20 + .../attachment_vm_ar_scharlie_perk_soh.lua | 13 + ...attachment_vm_ar_scharlie_receiver_v18.lua | 20 + .../stock/attachment_vm_ar_scharlie_stock.lua | 2 + .../attachment_vm_ar_scharlie_stock_dmr.lua | 22 + .../attachment_vm_ar_scharlie_stock_light.lua | 20 + .../attachment_vm_ar_scharlie_stock_v18.lua | 6 + .../attachment_vm_sm_secho_barlong.lua | 23 + .../barrels/attachment_vm_sm_secho_barrel.lua | 2 + .../attachment_vm_sm_secho_barshort.lua | 21 + .../attachment_vm_sm_secho_barsillong.lua | 19 + .../attachment_vm_sm_secho_barsilshort.lua | 16 + .../attachment_vm_sm_secho_barxlong.lua | 24 + .../attachment_vm_sm_secho_angledgrip01.lua | 16 + .../attachment_vm_sm_secho_angledgrip02.lua | 17 + .../attachment_vm_sm_secho_bipodgrip.lua | 17 + .../attachment_vm_sm_secho_stubbygrip01.lua | 17 + .../attachment_vm_sm_secho_stubbygrip02.lua | 17 + .../attachment_vm_sm_secho_vertgrip01.lua | 17 + .../attachment_vm_sm_secho_vertgrip02.lua | 17 + .../attachment_vm_sm_secho_vertgrip03.lua | 17 + .../lasers/attachment_vm_sm_secho_laser01.lua | 10 + .../lasers/attachment_vm_sm_secho_laser02.lua | 10 + .../lasers/attachment_vm_sm_secho_laser03.lua | 10 + .../mags/attachment_vm_sm_secho_drummags.lua | 24 + .../secho/mags/attachment_vm_sm_secho_mag.lua | 9 + .../mags/attachment_vm_sm_secho_smags.lua | 40 + .../mags/attachment_vm_sm_secho_xmags.lua | 22 + .../perks/attachment_vm_sm_secho_perk_soh.lua | 11 + .../stock/attachment_vm_sm_secho_stock.lua | 2 + .../stock/attachment_vm_sm_secho_stockh.lua | 15 + .../stock/attachment_vm_sm_secho_stockno.lua | 17 + .../attachment_vm_sm_secho_stockskel.lua | 15 + .../attachment_vm_ar_sierra552_barh.lua | 20 + .../attachment_vm_ar_sierra552_barlight.lua | 21 + .../attachment_vm_ar_sierra552_barlong.lua | 25 + .../attachment_vm_ar_sierra552_barrel.lua | 8 + .../attachment_vm_ar_sierra552_barshort.lua | 24 + .../attachment_vm_ar_sierra552_barxlong.lua | 25 + ...ttachment_vm_ar_sierra552_angledgrip01.lua | 10 + ...ttachment_vm_ar_sierra552_angledgrip02.lua | 10 + .../attachment_vm_ar_sierra552_bipodgrip.lua | 10 + ...ttachment_vm_ar_sierra552_stubbygrip01.lua | 10 + ...ttachment_vm_ar_sierra552_stubbygrip02.lua | 10 + .../attachment_vm_ar_sierra552_vertgrip01.lua | 10 + .../attachment_vm_ar_sierra552_vertgrip02.lua | 10 + .../attachment_vm_ar_sierra552_vertgrip03.lua | 10 + .../attachment_vm_ar_sierra552_laser01.lua | 11 + .../attachment_vm_ar_sierra552_laser02.lua | 11 + .../attachment_vm_ar_sierra552_laser03.lua | 11 + .../mags/attachment_vm_ar_sierra552_mag.lua | 2 + .../mags/attachment_vm_ar_sierra552_xmags.lua | 21 + .../attachment_vm_ar_sierra552_xmagslrg.lua | 21 + .../attachment_vm_ar_sierra552_perk_soh.lua | 11 + .../attachment_vm_ar_sierra552_stock.lua | 2 + .../attachment_vm_ar_sierra552_stockh.lua | 19 + .../attachment_vm_ar_sierra552_stockl.lua | 16 + .../attachment_vm_ar_sierra552_stockno.lua | 19 + .../attachment_vm_lm_sierrax_barhvy.lua | 18 + .../attachment_vm_lm_sierrax_barlight.lua | 18 + .../attachment_vm_lm_sierrax_barlong.lua | 16 + .../attachment_vm_lm_sierrax_barrel.lua | 2 + .../attachment_vm_lm_sierrax_angledgrip01.lua | 11 + .../attachment_vm_lm_sierrax_angledgrip02.lua | 11 + .../attachment_vm_lm_sierrax_stubbygrip01.lua | 11 + .../attachment_vm_lm_sierrax_stubbygrip02.lua | 11 + .../attachment_vm_lm_sierrax_vertgrip01.lua | 11 + .../attachment_vm_lm_sierrax_vertgrip02.lua | 11 + .../attachment_vm_lm_sierrax_vertgrip03.lua | 11 + .../attachment_vm_lm_sierrax_laser01.lua | 10 + .../attachment_vm_lm_sierrax_laser02.lua | 10 + .../attachment_vm_lm_sierrax_laser03.lua | 10 + .../mags/attachment_vm_lm_sierrax_mag.lua | 21 + .../attachment_vm_lm_sierrax_magcalcust1.lua | 33 + .../attachment_vm_lm_sierrax_magcalcust2.lua | 37 + .../mags/attachment_vm_lm_sierrax_xmags.lua | 33 + .../attachment_vm_lm_sierrax_perk_soh.lua | 9 + .../stock/attachment_vm_lm_sierrax_stock.lua | 3 + .../stock/attachment_vm_lm_sierrax_stockh.lua | 5 + .../stock/attachment_vm_lm_sierrax_stockl.lua | 5 + .../attachment_vm_lm_sierrax_stockno.lua | 4 + .../attachment_vm_lm_sierrax_stocksaw.lua | 29 + .../sights/hybrids/att_hybrid_1point5x.lua | 11 + .../sights/hybrids/att_hybrid_2x.lua | 11 + .../sights/hybrids/att_hybrid_3x.lua | 11 + .../sights/hybrids/att_hybrid_4x.lua | 11 + .../hybrids/att_vm_hybrid_eastern02.lua | 40 + .../sights/hybrids/att_vm_hybrid_west01.lua | 34 + .../sights/hybrids/att_vm_hybrid_west02.lua | 40 + .../hybrids/att_vm_hybrid_west02_thermal.lua | 8 + .../sights/hybrids/att_vm_hybrid_west03.lua | 34 + .../hybrids/att_vm_thermal_east01_hybrid.lua | 34 + .../sights/optics/att_optic_10x.lua | 27 + .../sights/optics/att_optic_1point5x.lua | 11 + .../sights/optics/att_optic_20x.lua | 27 + .../sights/optics/att_optic_2x.lua | 11 + .../sights/optics/att_optic_3x.lua | 11 + .../sights/optics/att_optic_4x.lua | 11 + .../sights/optics/att_vm_2x_west01.lua | 28 + .../sights/optics/att_vm_2x_west02.lua | 28 + .../sights/optics/att_vm_2x_west02_holo.lua | 21 + .../sights/optics/att_vm_4x_east01.lua | 28 + .../sights/optics/att_vm_4x_east01_tall.lua | 5 + .../sights/optics/att_vm_4x_west01.lua | 28 + .../sights/optics/att_vm_4x_west01_tall.lua | 5 + .../sights/optics/att_vm_4x_west02.lua | 28 + .../sights/optics/att_vm_4x_west02_tall.lua | 5 + .../sights/optics/att_vm_holo_east01.lua | 27 + .../sights/optics/att_vm_scope_mike14.lua | 30 + .../sights/optics/att_vm_scope_vz.lua | 36 + .../sights/optics/att_vm_thermal_east01.lua | 28 + .../sights/optics/att_vm_thermal_west01.lua | 37 + .../sights/reticles/att_sight_1x.lua | 9 + .../sights/reticles/att_vm_holo_west01.lua | 21 + .../sights/reticles/att_vm_holo_west02.lua | 20 + .../sights/reticles/att_vm_minireddot01.lua | 20 + .../reticles/att_vm_minireddot01_tall.lua | 2 + .../sights/reticles/att_vm_minireddot02.lua | 20 + .../reticles/att_vm_minireddot02_tall.lua | 2 + .../sights/reticles/att_vm_minireddot03.lua | 20 + .../reticles/att_vm_minireddot03_tall.lua | 2 + .../sights/reticles/att_vm_reflex_02.lua | 20 + .../sights/reticles/att_vm_reflex_east01.lua | 20 + .../sights/reticles/att_vm_reflex_east02.lua | 20 + .../reticles/att_vm_reflex_east02_tall.lua | 2 + .../sights/reticles/att_vm_reflex_west02.lua | 30 + .../reticles/att_vm_reflex_west02_tall.lua | 2 + .../sights/reticles/att_vm_reflex_west03.lua | 20 + .../sights/reticles/att_vm_reflex_west04.lua | 20 + .../attachment_vm_sn_sksierra_barhvy.lua | 16 + .../attachment_vm_sn_sksierra_barlong.lua | 16 + .../attachment_vm_sn_sksierra_barrel.lua | 2 + .../attachment_vm_sn_sksierra_barshort.lua | 15 + ...attachment_vm_sn_sksierra_angledgrip01.lua | 15 + ...attachment_vm_sn_sksierra_angledgrip02.lua | 16 + .../attachment_vm_sn_sksierra_bipodgrip.lua | 16 + ...attachment_vm_sn_sksierra_stubbygrip01.lua | 16 + ...attachment_vm_sn_sksierra_stubbygrip02.lua | 16 + .../attachment_vm_sn_sksierra_vertgrip01.lua | 16 + .../attachment_vm_sn_sksierra_vertgrip02.lua | 16 + .../attachment_vm_sn_sksierra_vertgrip03.lua | 16 + .../attachment_vm_sn_sksierra_laser01.lua | 11 + .../attachment_vm_sn_sksierra_laser02.lua | 11 + .../attachment_vm_sn_sksierra_laser03.lua | 11 + .../mags/attachment_vm_sn_sksierra_mag.lua | 8 + .../mags/attachment_vm_sn_sksierra_smag.lua | 26 + .../mags/attachment_vm_sn_sksierra_xmag.lua | 24 + .../attachment_vm_sn_sksierra_perk_soh.lua | 11 + .../attachment_vm_sn_sksierra_scope.lua | 18 + .../attachment_vm_sn_sksierra_sight.lua | 8 + .../stock/attachment_vm_sn_sksierra_stock.lua | 2 + .../attachment_vm_sn_sksierra_stockhvy.lua | 22 + .../attachment_vm_sn_sksierra_stockhvy2.lua | 24 + .../attachment_vm_sn_sksierra_stockno.lua | 11 + .../barrels/attachment_vm_lm_slima_barhvy.lua | 20 + .../attachment_vm_lm_slima_barlight.lua | 21 + .../attachment_vm_lm_slima_barlong.lua | 21 + .../barrels/attachment_vm_lm_slima_barrel.lua | 2 + .../grips/attachment_vm_lm_slima_bipod.lua | 14 + .../grips/attachment_vm_lm_slima_gripside.lua | 16 + .../attachment_vm_lm_slima_gripside02.lua | 16 + .../attachment_vm_lm_slima_gripside03.lua | 16 + .../lasers/attachment_vm_lm_slima_laser01.lua | 10 + .../lasers/attachment_vm_lm_slima_laser02.lua | 10 + .../lasers/attachment_vm_lm_slima_laser03.lua | 10 + .../slima/mags/attachment_vm_lm_slima_mag.lua | 23 + .../mags/attachment_vm_lm_slima_smag.lua | 35 + .../mags/attachment_vm_lm_slima_xmags.lua | 35 + .../perks/attachment_vm_lm_slima_perk_soh.lua | 11 + .../stock/attachment_vm_lm_slima_stock.lua | 3 + .../stock/attachment_vm_lm_slima_stockh.lua | 5 + .../stock/attachment_vm_lm_slima_stockl.lua | 5 + .../stock/attachment_vm_lm_slima_stockno.lua | 5 + .../stock/attachment_vm_lm_slima_stocks.lua | 5 + .../attachment_vm_sm_smgolf45_barlong.lua | 23 + .../attachment_vm_sm_smgolf45_barmid.lua | 15 + .../attachment_vm_sm_smgolf45_barrel.lua | 2 + .../attachment_vm_sm_smgolf45_barshort.lua | 14 + ...attachment_vm_sm_smgolf45_angledgrip01.lua | 16 + ...attachment_vm_sm_smgolf45_angledgrip02.lua | 17 + .../attachment_vm_sm_smgolf45_bipodgrip.lua | 17 + ...attachment_vm_sm_smgolf45_killtheclamp.lua | 12 + ...attachment_vm_sm_smgolf45_stubbygrip01.lua | 17 + ...attachment_vm_sm_smgolf45_stubbygrip02.lua | 17 + .../attachment_vm_sm_smgolf45_vertgrip01.lua | 17 + .../attachment_vm_sm_smgolf45_vertgrip02.lua | 17 + .../attachment_vm_sm_smgolf45_vertgrip03.lua | 17 + .../attachment_vm_sm_smgolf45_laser01.lua | 10 + .../attachment_vm_sm_smgolf45_laser02.lua | 10 + .../attachment_vm_sm_smgolf45_laser03.lua | 10 + .../mags/attachment_vm_sm_smgolf45_mag.lua | 7 + .../mags/attachment_vm_sm_smgolf45_mag_v2.lua | 8 + .../mags/attachment_vm_sm_smgolf45_smags.lua | 25 + .../attachment_vm_sm_smgolf45_xmagslrg.lua | 19 + .../attachment_vm_sm_smgolf45_perk_soh.lua | 11 + .../attachment_vm_sm_smgolf45_receiver.lua | 2 + .../attachment_vm_sm_smgolf45_receiver_v2.lua | 5 + .../stock/attachment_vm_sm_smgolf45_stock.lua | 2 + .../attachment_vm_sm_smgolf45_stock_v2.lua | 5 + .../attachment_vm_sm_smgolf45_stockcqb.lua | 16 + .../attachment_vm_sm_smgolf45_stockh.lua | 17 + .../attachment_vm_sm_smgolf45_stockl.lua | 17 + .../stock/attachment_vm_sm_victor_stocksn.lua | 14 + .../stocks/att_vm_stock_heavy01.lua | 28 + .../stocks/att_vm_stock_heavy02.lua | 29 + .../stocks/att_vm_stock_light01.lua | 27 + .../stocks/att_vm_stock_medium01.lua | 27 + .../attachmentss/stocks/att_vm_stock_no.lua | 30 + .../attachment_vm_ar_tango21_barrel.lua | 2 + .../attachment_vm_ar_tango21_barrel_long.lua | 21 + .../attachment_vm_ar_tango21_barrel_med.lua | 21 + .../attachment_vm_ar_tango21_barrel_short.lua | 15 + .../attachment_vm_ar_tango21_angledgrip01.lua | 10 + .../attachment_vm_ar_tango21_angledgrip02.lua | 10 + .../attachment_vm_ar_tango21_bipodgrip.lua | 10 + .../attachment_vm_ar_tango21_stubbygrip01.lua | 10 + .../attachment_vm_ar_tango21_stubbygrip02.lua | 10 + .../attachment_vm_ar_tango21_vertgrip01.lua | 10 + .../attachment_vm_ar_tango21_vertgrip02.lua | 10 + .../attachment_vm_ar_tango21_vertgrip03.lua | 10 + .../attachment_vm_ar_tango21_laser01.lua | 10 + .../attachment_vm_ar_tango21_laser02.lua | 10 + .../attachment_vm_ar_tango21_laser03.lua | 10 + .../mags/attachment_vm_ar_tango21_drummag.lua | 25 + .../mags/attachment_vm_ar_tango21_mag.lua | 2 + .../mags/attachment_vm_ar_tango21_xmags.lua | 21 + .../attachment_vm_ar_tango21_perk_soh.lua | 11 + .../stock/attachment_vm_ar_tango21_stock.lua | 2 + .../attachment_vm_ar_tango21_stock_heavy.lua | 16 + .../attachment_vm_ar_tango21_stock_light.lua | 15 + ...ttachment_vm_ar_tango21_stock_tactical.lua | 17 + .../attachment_vm_sm_uzulu_barcust.lua | 16 + .../attachment_vm_sm_uzulu_barlong.lua | 14 + .../barrels/attachment_vm_sm_uzulu_barmid.lua | 14 + .../barrels/attachment_vm_sm_uzulu_barrel.lua | 2 + .../attachment_vm_sm_uzulu_barshort.lua | 14 + .../attachment_vm_sm_uzulu_angledgrip01.lua | 16 + .../attachment_vm_sm_uzulu_angledgrip02.lua | 17 + .../attachment_vm_sm_uzulu_bipodgrip.lua | 17 + .../attachment_vm_sm_uzulu_stubbygrip01.lua | 17 + .../attachment_vm_sm_uzulu_stubbygrip02.lua | 17 + .../attachment_vm_sm_uzulu_vertgrip01.lua | 17 + .../attachment_vm_sm_uzulu_vertgrip02.lua | 17 + .../attachment_vm_sm_uzulu_vertgrip03.lua | 16 + .../lasers/attachment_vm_sm_uzulu_laser01.lua | 13 + .../lasers/attachment_vm_sm_uzulu_laser02.lua | 13 + .../lasers/attachment_vm_sm_uzulu_laser03.lua | 13 + .../uzulu/mags/attachment_vm_sm_uzulu_mag.lua | 2 + .../attachment_vm_sm_uzulu_magcalcust.lua | 16 + .../attachment_vm_sm_uzulu_magcalcust9mm.lua | 15 + .../mags/attachment_vm_sm_uzulu_xmag2.lua | 21 + .../mags/attachment_vm_sm_uzulu_xmags.lua | 21 + .../attachment_vm_sm_uzulu_suppressor.lua | 5 + .../perks/attachment_vm_sm_uzulu_perk_soh.lua | 12 + .../attachment_vm_sm_uzulu_receiver.lua | 2 + .../stock/att_vm_uzulu_stock_heavy01.lua | 6 + .../stock/att_vm_uzulu_stock_heavy02.lua | 6 + .../stock/att_vm_uzulu_stock_light01.lua | 6 + .../stock/att_vm_uzulu_stock_medium01.lua | 6 + .../uzulu/stock/att_vm_uzulu_stock_no.lua | 7 + .../stock/attachment_vm_sm_uzulu_stock.lua | 2 + .../attachment_vm_sm_uzulu_stock_folded.lua | 15 + .../stock/attachment_vm_sm_uzulu_stockh.lua | 15 + .../attachment_vm_ar_valpha_barhvy.lua | 19 + .../attachment_vm_ar_valpha_barlight.lua | 20 + .../attachment_vm_ar_valpha_barrel.lua | 2 + .../attachment_vm_ar_valpha_barshort.lua | 22 + .../attachment_vm_ar_valpha_angledgrip01.lua | 7 + .../attachment_vm_ar_valpha_angledgrip02.lua | 7 + .../attachment_vm_ar_valpha_bipodgrip.lua | 7 + .../attachment_vm_ar_valpha_stubbygrip01.lua | 7 + .../attachment_vm_ar_valpha_stubbygrip02.lua | 7 + .../attachment_vm_ar_valpha_vertgrip01.lua | 7 + .../attachment_vm_ar_valpha_vertgrip02.lua | 7 + .../attachment_vm_ar_valpha_vertgrip03.lua | 7 + .../attachment_vm_ar_valpha_laser01.lua | 11 + .../attachment_vm_ar_valpha_laser02.lua | 11 + .../attachment_vm_ar_valpha_laser03.lua | 11 + .../mags/attachment_vm_ar_valpha_mag.lua | 2 + .../mags/attachment_vm_ar_valpha_smags.lua | 28 + .../mags/attachment_vm_ar_valpha_xmags.lua | 21 + .../attachment_vm_ar_valpha_perk_soh.lua | 11 + .../sights/attachment_vm_ar_valpha_scope.lua | 25 + .../stock/attachment_vm_ar_valpha_stock.lua | 3 + .../stock/attachment_vm_ar_valpha_stockh.lua | 20 + .../stock/attachment_vm_ar_valpha_stocks.lua | 15 + .../attachment_vm_ar_valpha_stockskel.lua | 17 + .../stock/attachment_vm_ar_valpha_stocksn.lua | 18 + .../attachment_vm_sm_victor_barlong.lua | 21 + .../attachment_vm_sm_victor_barrel.lua | 2 + .../attachment_vm_sm_victor_barsil.lua | 18 + .../attachment_vm_sm_victor_angledgrip01.lua | 16 + .../attachment_vm_sm_victor_angledgrip02.lua | 17 + .../attachment_vm_sm_victor_bipodgrip.lua | 17 + .../attachment_vm_sm_victor_stubbygrip01.lua | 17 + .../attachment_vm_sm_victor_stubbygrip02.lua | 17 + .../attachment_vm_sm_victor_vertgrip01.lua | 17 + .../attachment_vm_sm_victor_vertgrip02.lua | 17 + .../attachment_vm_sm_victor_vertgrip03.lua | 17 + .../attachment_vm_sm_victor_laser01.lua | 10 + .../attachment_vm_sm_victor_laser02.lua | 10 + .../attachment_vm_sm_victor_laser03.lua | 10 + .../mags/attachment_vm_sm_victor_drummag.lua | 23 + .../mags/attachment_vm_sm_victor_mag.lua | 8 + .../mags/attachment_vm_sm_victor_smags.lua | 30 + .../attachment_vm_sm_victor_suppressor.lua | 18 + .../attachment_vm_sm_victor_perk_soh.lua | 11 + .../stock/attachment_vm_sm_victor_stock.lua | 2 + .../stock/attachment_vm_sm_victor_stockh.lua | 17 + .../stock/attachment_vm_sm_victor_stockno.lua | 16 + .../stock/attachment_vm_sm_victor_stocks.lua | 17 + .../stock/attachment_vm_sm_victor_stocksn.lua | 14 + .../attachmentss/warheads/att_warhead_bp.lua | 24 + .../attachmentss/warheads/att_warhead_dh.lua | 11 + .../warheads/att_warhead_fuel.lua | 16 + .../attachmentss/warheads/att_warhead_he.lua | 15 + .../attachmentss/warheads/att_warhead_mas.lua | 10 + .../warheads/att_warhead_smart.lua | 12 + .../attachment_vm_sn_xmike109_barhvy.lua | 15 + .../attachment_vm_sn_xmike109_barlong.lua | 17 + .../attachment_vm_sn_xmike109_barrel.lua | 2 + .../attachment_vm_sn_xmike109_barshort.lua | 15 + .../attachment_vm_sn_xmike109_laser01.lua | 4 + .../attachment_vm_sn_xmike109_laser02.lua | 4 + .../attachment_vm_sn_xmike109_laser03.lua | 4 + .../attachment_vm_sn_xmike109_calcust1.lua | 15 + .../attachment_vm_sn_xmike109_calcust2.lua | 16 + .../mags/attachment_vm_sn_xmike109_mag.lua | 2 + .../attachment_vm_sn_xmike109_brake.lua | 4 + .../attachment_vm_sn_xmike109_silencerlrg.lua | 3 + .../attachment_vm_sn_xmike109_perk_soh.lua | 7 + .../attachment_vm_sn_xmike109_irons.lua | 9 + .../attachment_vm_sn_xmike109_scope.lua | 22 + .../stock/attachment_vm_sn_xmike109_stock.lua | 2 + .../attachment_vm_sn_xmike109_stockl.lua | 15 + .../attachment_vm_sn_xmike109_stocks.lua | 17 + .../mg_base/modules/client/cl_calcview.lua | 92 + lua/weapons/mg_base/modules/client/cl_hud.lua | 467 +++ .../modules/client/cl_new_customizemenu.lua | 1889 +++++++++ .../mg_base/modules/client/cl_spawnmenu.lua | 573 +++ .../modules/client/cl_worldmodel_render.lua | 53 + lua/weapons/mg_base/modules/languages/de.lua | 183 + lua/weapons/mg_base/modules/languages/en.lua | 211 + .../mg_base/modules/languages/es-ES.lua | 183 + lua/weapons/mg_base/modules/languages/fr.lua | 183 + .../mg_base/modules/languages/pt-BR.lua | 183 + lua/weapons/mg_base/modules/languages/ru.lua | 183 + lua/weapons/mg_base/modules/languages/th.lua | 183 + .../mg_base/modules/languages/zh-CN.lua | 183 + .../mg_base/modules/languages/zh-TW.lua | 183 + .../modules/presets/presets_uzulu_l4d.lua | 4 + .../mg_base/modules/reverb/mw_reverb.lua | 189 + .../mg_base/modules/reverb/mw_reverbimpl.lua | 74 + .../modules/shared/sh_aim_behaviour.lua | 329 ++ .../modules/shared/sh_aim_mode_behavior.lua | 40 + .../modules/shared/sh_bipod_behavior.lua | 69 + .../modules/shared/sh_button_dispatcher.lua | 23 + .../modules/shared/sh_customization.lua | 897 ++++ .../mg_base/modules/shared/sh_datatables.lua | 130 + .../modules/shared/sh_firemode_behaviour.lua | 64 + .../mg_base/modules/shared/sh_holdtypes.lua | 135 + .../modules/shared/sh_inspect_behavior.lua | 70 + .../modules/shared/sh_melee_behaviour.lua | 54 + .../shared/sh_primaryattack_behaviour.lua | 708 ++++ .../modules/shared/sh_reload_behaviour.lua | 202 + .../modules/shared/sh_safety_behavior.lua | 25 + .../modules/shared/sh_sprint_behaviour.lua | 65 + .../mg_base/modules/shared/sh_stats.lua | 250 ++ .../mg_base/modules/shared/sh_think.lua | 89 + .../modules/shared/sh_trigger_behavior.lua | 176 + .../modules/sounds/mw_sounds_ar_akilo47.lua | 474 +++ .../sounds/mw_sounds_ar_anovember94.lua | 696 ++++ .../modules/sounds/mw_sounds_ar_asierra12.lua | 304 ++ .../modules/sounds/mw_sounds_ar_falima.lua | 717 ++++ .../modules/sounds/mw_sounds_ar_falpha.lua | 407 ++ .../modules/sounds/mw_sounds_ar_g3a3.lua | 289 ++ .../modules/sounds/mw_sounds_ar_galima.lua | 606 +++ .../modules/sounds/mw_sounds_ar_kilo433.lua | 533 +++ .../modules/sounds/mw_sounds_ar_mcharlie.lua | 448 ++ .../modules/sounds/mw_sounds_ar_mike4.lua | 664 +++ .../modules/sounds/mw_sounds_ar_scharlie.lua | 530 +++ .../modules/sounds/mw_sounds_ar_sierra552.lua | 595 +++ .../modules/sounds/mw_sounds_ar_tango21.lua | 445 ++ .../modules/sounds/mw_sounds_ar_valpha.lua | 761 ++++ .../mg_base/modules/sounds/mw_sounds_atmo.lua | 413 ++ .../modules/sounds/mw_sounds_casings.lua | 938 +++++ .../modules/sounds/mw_sounds_channels.lua | 2 + .../modules/sounds/mw_sounds_foley.lua | 503 +++ .../modules/sounds/mw_sounds_minigun.lua | 113 + .../modules/sounds/mw_sounds_reflections.lua | 97 + .../modules/sounds/mw_sounds_sh_aalpha12.lua | 468 +++ .../modules/sounds/mw_sounds_sh_mike26.lua | 581 +++ .../modules/sounds/mw_sounds_sm_secho.lua | 620 +++ .../modules/sounds/mw_sounds_sn_crossbow.lua | 269 ++ .../modules/sounds/mw_sounds_sn_kilo98.lua | 424 ++ .../modules/sounds/mw_sounds_sn_mike14.lua | 626 +++ .../modules/sounds/mw_sounds_sn_romeo700.lua | 889 ++++ .../modules/sounds/mw_sounds_sn_sbeta.lua | 249 ++ .../modules/sounds/mw_sounds_sn_sksierra.lua | 575 +++ .../mg_base/modules/sounds/mw_sounds_ui.lua | 18 + .../sounds/mw_sounds_weapons_shared.lua | 31 + .../modules/sounds/weapon_ar_mgolf36.all.lua | 812 ++++ .../modules/sounds/weapon_lm_kilo121.all.lua | 993 +++++ .../modules/sounds/weapon_lm_lima86.all.lua | 552 +++ .../modules/sounds/weapon_lm_mgolf34.all.lua | 1012 +++++ .../modules/sounds/weapon_lm_mkilo3.all.lua | 1365 +++++++ .../modules/sounds/weapon_lm_pkilo.all.lua | 794 ++++ .../modules/sounds/weapon_lm_sierrax.all.lua | 1016 +++++ .../sounds/weapon_lm_slima.all.sabs.lua | 1959 +++++++++ .../modules/sounds/weapon_pi_cpapa.all.lua | 1283 ++++++ .../modules/sounds/weapon_pi_decho.all.lua | 644 +++ .../modules/sounds/weapon_pi_golf21.all.lua | 575 +++ .../sounds/weapon_pi_mike.all.sabs.lua | 2624 ++++++++++++ .../modules/sounds/weapon_pi_mike1911.all.lua | 469 +++ .../modules/sounds/weapon_pi_mike9a3.all.lua | 826 ++++ .../modules/sounds/weapon_pi_papa320.all.lua | 751 ++++ .../sounds/weapon_sh_charlie725.all.lua | 922 +++++ .../modules/sounds/weapon_sh_dpapa12.all.lua | 549 +++ .../modules/sounds/weapon_sh_oscar12.all.lua | 1038 +++++ .../modules/sounds/weapon_sh_romeo870.all.lua | 712 ++++ .../modules/sounds/weapon_sm_augolf.all.lua | 1220 ++++++ .../modules/sounds/weapon_sm_beta.all.lua | 856 ++++ .../modules/sounds/weapon_sm_charlie9.all.lua | 1043 +++++ .../modules/sounds/weapon_sm_mpapa5.all.lua | 659 +++ .../modules/sounds/weapon_sm_mpapa7.all.lua | 857 ++++ .../modules/sounds/weapon_sm_papa90.all.lua | 705 ++++ .../modules/sounds/weapon_sm_smgolf45.all.lua | 1007 +++++ .../modules/sounds/weapon_sm_uzulu.all.lua | 1520 +++++++ .../modules/sounds/weapon_sm_victor.all.lua | 1213 ++++++ .../modules/sounds/weapon_sn_alpha50.all.lua | 517 +++ .../modules/sounds/weapon_sn_delta.all.lua | 692 ++++ .../modules/sounds/weapon_sn_hdromeo.all.lua | 741 ++++ .../modules/sounds/weapon_sn_xmike109.all.lua | 544 +++ lua/weapons/mg_base/shared.lua | 704 ++++ lua/weapons/mg_beta/animations.lua | 366 ++ lua/weapons/mg_beta/customization.lua | 846 ++++ lua/weapons/mg_beta/shared.lua | 169 + lua/weapons/mg_charlie725/animations.lua | 495 +++ lua/weapons/mg_charlie725/customization.lua | 827 ++++ lua/weapons/mg_charlie725/shared.lua | 211 + lua/weapons/mg_charlie9/animations.lua | 464 +++ lua/weapons/mg_charlie9/customization.lua | 959 +++++ lua/weapons/mg_charlie9/shared.lua | 170 + lua/weapons/mg_crossbow/animations.lua | 271 ++ lua/weapons/mg_crossbow/customization.lua | 1019 +++++ lua/weapons/mg_crossbow/shared.lua | 178 + lua/weapons/mg_dblmg/animations.lua | 200 + lua/weapons/mg_dblmg/shared.lua | 152 + lua/weapons/mg_deagle/animations.lua | 365 ++ lua/weapons/mg_deagle/customization.lua | 408 ++ lua/weapons/mg_deagle/shared.lua | 152 + lua/weapons/mg_delta/animations.lua | 381 ++ lua/weapons/mg_delta/customization.lua | 57 + lua/weapons/mg_delta/shared.lua | 169 + lua/weapons/mg_dpapa12/animations.lua | 289 ++ lua/weapons/mg_dpapa12/customization.lua | 740 ++++ lua/weapons/mg_dpapa12/shared.lua | 307 ++ lua/weapons/mg_falima/animations.lua | 447 ++ lua/weapons/mg_falima/customization.lua | 925 +++++ lua/weapons/mg_falima/shared.lua | 168 + lua/weapons/mg_falpha/animations.lua | 500 +++ lua/weapons/mg_falpha/customization.lua | 927 +++++ lua/weapons/mg_falpha/shared.lua | 171 + lua/weapons/mg_g3a3/animations.lua | 360 ++ lua/weapons/mg_g3a3/customization.lua | 846 ++++ lua/weapons/mg_g3a3/shared.lua | 166 + lua/weapons/mg_galima/animations.lua | 497 +++ lua/weapons/mg_galima/customization.lua | 1056 +++++ lua/weapons/mg_galima/shared.lua | 170 + lua/weapons/mg_glock/animations.lua | 376 ++ lua/weapons/mg_glock/customization.lua | 317 ++ lua/weapons/mg_glock/shared.lua | 153 + lua/weapons/mg_hdromeo/animations.lua | 410 ++ lua/weapons/mg_hdromeo/customization.lua | 53 + lua/weapons/mg_hdromeo/shared.lua | 184 + lua/weapons/mg_kilo121/animations.lua | 299 ++ lua/weapons/mg_kilo121/customization.lua | 1162 ++++++ lua/weapons/mg_kilo121/shared.lua | 176 + lua/weapons/mg_kilo433/animations.lua | 432 ++ lua/weapons/mg_kilo433/customization.lua | 872 ++++ lua/weapons/mg_kilo433/shared.lua | 172 + lua/weapons/mg_kilo98/animations.lua | 456 +++ lua/weapons/mg_kilo98/customization.lua | 878 ++++ lua/weapons/mg_kilo98/shared.lua | 183 + lua/weapons/mg_lima86/animations.lua | 306 ++ lua/weapons/mg_lima86/customization.lua | 1163 ++++++ lua/weapons/mg_lima86/shared.lua | 172 + lua/weapons/mg_m1911/animations.lua | 360 ++ lua/weapons/mg_m1911/customization.lua | 336 ++ lua/weapons/mg_m1911/shared.lua | 153 + lua/weapons/mg_m9/animations.lua | 414 ++ lua/weapons/mg_m9/customization.lua | 514 +++ lua/weapons/mg_m9/shared.lua | 155 + lua/weapons/mg_makarov/animations.lua | 409 ++ lua/weapons/mg_makarov/customization.lua | 363 ++ lua/weapons/mg_makarov/shared.lua | 183 + lua/weapons/mg_mcharlie/animations.lua | 506 +++ lua/weapons/mg_mcharlie/customization.lua | 1049 +++++ lua/weapons/mg_mcharlie/shared.lua | 207 + lua/weapons/mg_mgolf34/animations.lua | 266 ++ lua/weapons/mg_mgolf34/customization.lua | 1162 ++++++ lua/weapons/mg_mgolf34/shared.lua | 176 + lua/weapons/mg_mgolf36/animations.lua | 323 ++ lua/weapons/mg_mgolf36/customization.lua | 1166 ++++++ lua/weapons/mg_mgolf36/shared.lua | 167 + lua/weapons/mg_mike14/animations.lua | 505 +++ lua/weapons/mg_mike14/customization.lua | 942 +++++ lua/weapons/mg_mike14/shared.lua | 164 + lua/weapons/mg_mike26/animations.lua | 446 ++ lua/weapons/mg_mike26/customization.lua | 764 ++++ lua/weapons/mg_mike26/shared.lua | 175 + lua/weapons/mg_mike4/animations.lua | 551 +++ lua/weapons/mg_mike4/customization.lua | 1281 ++++++ lua/weapons/mg_mike4/shared.lua | 192 + lua/weapons/mg_mkilo3/animations.lua | 427 ++ lua/weapons/mg_mkilo3/customization.lua | 1162 ++++++ lua/weapons/mg_mkilo3/shared.lua | 162 + lua/weapons/mg_mpapa5/animations.lua | 316 ++ lua/weapons/mg_mpapa5/customization.lua | 1056 +++++ lua/weapons/mg_mpapa5/shared.lua | 168 + lua/weapons/mg_mpapa7/animations.lua | 465 +++ lua/weapons/mg_mpapa7/customization.lua | 946 +++++ lua/weapons/mg_mpapa7/shared.lua | 170 + lua/weapons/mg_oscar12/animations.lua | 509 +++ lua/weapons/mg_oscar12/customization.lua | 767 ++++ lua/weapons/mg_oscar12/shared.lua | 207 + lua/weapons/mg_p320/animations.lua | 379 ++ lua/weapons/mg_p320/customization.lua | 304 ++ lua/weapons/mg_p320/shared.lua | 155 + lua/weapons/mg_papa90/animations.lua | 331 ++ lua/weapons/mg_papa90/customization.lua | 53 + lua/weapons/mg_papa90/shared.lua | 229 ++ lua/weapons/mg_pkilo/animations.lua | 243 ++ lua/weapons/mg_pkilo/customization.lua | 1161 ++++++ lua/weapons/mg_pkilo/shared.lua | 176 + lua/weapons/mg_romeo700/animations.lua | 568 +++ lua/weapons/mg_romeo700/customization.lua | 1021 +++++ lua/weapons/mg_romeo700/shared.lua | 170 + lua/weapons/mg_romeo870/animations.lua | 562 +++ lua/weapons/mg_romeo870/customization.lua | 66 + lua/weapons/mg_romeo870/shared.lua | 181 + lua/weapons/mg_sbeta/animations.lua | 292 ++ lua/weapons/mg_sbeta/customization.lua | 786 ++++ lua/weapons/mg_sbeta/shared.lua | 167 + lua/weapons/mg_scharlie/animations.lua | 467 +++ lua/weapons/mg_scharlie/customization.lua | 831 ++++ lua/weapons/mg_scharlie/shared.lua | 170 + lua/weapons/mg_secho/animations.lua | 516 +++ lua/weapons/mg_secho/customization.lua | 932 +++++ lua/weapons/mg_secho/shared.lua | 181 + lua/weapons/mg_sierra552/animations.lua | 485 +++ lua/weapons/mg_sierra552/customization.lua | 1123 +++++ lua/weapons/mg_sierra552/shared.lua | 172 + lua/weapons/mg_sierrax/animations.lua | 244 ++ lua/weapons/mg_sierrax/customization.lua | 1163 ++++++ lua/weapons/mg_sierrax/shared.lua | 181 + lua/weapons/mg_sksierra/animations.lua | 519 +++ lua/weapons/mg_sksierra/customization.lua | 1020 +++++ lua/weapons/mg_sksierra/shared.lua | 164 + lua/weapons/mg_slima/animations.lua | 356 ++ lua/weapons/mg_slima/customization.lua | 84 + lua/weapons/mg_slima/shared.lua | 164 + lua/weapons/mg_smgolf45/animations.lua | 463 +++ lua/weapons/mg_smgolf45/customization.lua | 932 +++++ lua/weapons/mg_smgolf45/shared.lua | 170 + lua/weapons/mg_tango21/animations.lua | 499 +++ lua/weapons/mg_tango21/customization.lua | 1017 +++++ lua/weapons/mg_tango21/shared.lua | 171 + lua/weapons/mg_uzulu/animations.lua | 461 +++ lua/weapons/mg_uzulu/customization.lua | 1027 +++++ lua/weapons/mg_uzulu/shared.lua | 170 + lua/weapons/mg_valpha/animations.lua | 527 +++ lua/weapons/mg_valpha/customization.lua | 674 +++ lua/weapons/mg_valpha/shared.lua | 170 + lua/weapons/mg_victor/animations.lua | 520 +++ lua/weapons/mg_victor/customization.lua | 878 ++++ lua/weapons/mg_victor/shared.lua | 177 + lua/weapons/mg_xmike109/animations.lua | 288 ++ lua/weapons/mg_xmike109/customization.lua | 55 + lua/weapons/mg_xmike109/shared.lua | 178 + .../registers/wos_mwii_tdm_registers.lua | 17 + 2010 files changed, 185745 insertions(+) create mode 100644 gamemodes/cod_custom/cod_custom.txt create mode 100644 gamemodes/cod_custom/entities/effects/base.lua create mode 100644 gamemodes/cod_custom/entities/effects/dof_node.lua create mode 100644 gamemodes/cod_custom/entities/effects/tooltracer.lua create mode 100644 gamemodes/cod_custom/entities/entities/aoc_spawnpoint.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_ai/cl_init.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_ai/init.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_ai/schedules.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_ai/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_ai/tasks.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_anim.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_brush.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_entity/cl_init.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_entity/init.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_entity/outputs.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_entity/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_filter.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_gmodentity.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_nextbot/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_nextbot/sv_nextbot.lua create mode 100644 gamemodes/cod_custom/entities/entities/base_point.lua create mode 100644 gamemodes/cod_custom/entities/entities/diprip_start_team_blue.lua create mode 100644 gamemodes/cod_custom/entities/entities/diprip_start_team_red.lua create mode 100644 gamemodes/cod_custom/entities/entities/dys_spawn_point.lua create mode 100644 gamemodes/cod_custom/entities/entities/env_skypaint.lua create mode 100644 gamemodes/cod_custom/entities/entities/gmod_hands.lua create mode 100644 gamemodes/cod_custom/entities/entities/gmod_player_start.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_allies.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_axis.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_blue.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_coop.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_counterterrorist.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_deathmatch.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_desperado.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_fof.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_human.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_knight.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_pirate.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_red.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_terrorist.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_vigilante.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_viking.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_zombie.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_player_zombiemaster.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_spawnpoint.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_survivor_position.lua create mode 100644 gamemodes/cod_custom/entities/entities/info_survivor_rescue.lua create mode 100644 gamemodes/cod_custom/entities/entities/ins_spawnpoint.lua create mode 100644 gamemodes/cod_custom/entities/entities/lua_run.lua create mode 100644 gamemodes/cod_custom/entities/entities/mwii_down_npc/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/mwii_sequence_npc/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/mwii_takedown_npc/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/npc_tf2_ghost.lua create mode 100644 gamemodes/cod_custom/entities/entities/prop_effect.lua create mode 100644 gamemodes/cod_custom/entities/entities/ragdoll_motion.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_ah64/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_ah64_rocket1/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_ah64_rocket2/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_cmine/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_cmine2/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_deathanim/init.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_deathanim/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_domination_flag/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_drone/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_flash/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_frag/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_harrier/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_infil/cl_init.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_infil/init.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_infil/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_infil_soundproxy.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_mi24/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_package/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_player_infil/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/tdm_sentry/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier1/init.lua create mode 100644 gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier1/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier2/init.lua create mode 100644 gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier2/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/vj_tdm_k9/init.lua create mode 100644 gamemodes/cod_custom/entities/entities/vj_tdm_k9/shared.lua create mode 100644 gamemodes/cod_custom/entities/entities/vj_tdm_npc/init.lua create mode 100644 gamemodes/cod_custom/entities/entities/vj_tdm_npc/shared.lua create mode 100644 gamemodes/cod_custom/entities/weapons/tdm_grenade.lua create mode 100644 gamemodes/cod_custom/entities/weapons/tdm_infection_knife.lua create mode 100644 gamemodes/cod_custom/entities/weapons/tdm_knife.lua create mode 100644 gamemodes/cod_custom/entities/weapons/tdm_radio.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_base/ai_translations.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_base/cl_init.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_base/init.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_base/sh_anim.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_base/shared.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_ak47/shared.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m14/shared.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m24/shared.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m249/shared.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m4a1/shared.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m9/shared.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_makarov/shared.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_r870/shared.lua create mode 100644 gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_ump/shared.lua create mode 100644 gamemodes/cod_custom/gamemode/cl_init.lua create mode 100644 gamemodes/cod_custom/gamemode/client/cl_abilities.lua create mode 100644 gamemodes/cod_custom/gamemode/client/cl_cutscenes.lua create mode 100644 gamemodes/cod_custom/gamemode/client/cl_error.lua create mode 100644 gamemodes/cod_custom/gamemode/client/cl_hud.lua create mode 100644 gamemodes/cod_custom/gamemode/client/cl_killcam.lua create mode 100644 gamemodes/cod_custom/gamemode/client/cl_killfeed.lua create mode 100644 gamemodes/cod_custom/gamemode/client/cl_menu.lua create mode 100644 gamemodes/cod_custom/gamemode/client/cl_outline.lua create mode 100644 gamemodes/cod_custom/gamemode/client/cl_radar.lua create mode 100644 gamemodes/cod_custom/gamemode/client/cl_scoreboard.lua create mode 100644 gamemodes/cod_custom/gamemode/client/cl_takedown.lua create mode 100644 gamemodes/cod_custom/gamemode/init.lua create mode 100644 gamemodes/cod_custom/gamemode/lang/brazilian.lua create mode 100644 gamemodes/cod_custom/gamemode/lang/english.lua create mode 100644 gamemodes/cod_custom/gamemode/lang/german.lua create mode 100644 gamemodes/cod_custom/gamemode/lang/hungarian.lua create mode 100644 gamemodes/cod_custom/gamemode/lang/lithuanian.lua create mode 100644 gamemodes/cod_custom/gamemode/lang/polish.lua create mode 100644 gamemodes/cod_custom/gamemode/lang/russian.lua create mode 100644 gamemodes/cod_custom/gamemode/lang/spanish.lua create mode 100644 gamemodes/cod_custom/gamemode/lang/turkish.lua create mode 100644 gamemodes/cod_custom/gamemode/lang/ukrainian.lua create mode 100644 gamemodes/cod_custom/gamemode/languages.lua create mode 100644 gamemodes/cod_custom/gamemode/other/sh_fixes.lua create mode 100644 gamemodes/cod_custom/gamemode/other/sv_mwii_npc.lua create mode 100644 gamemodes/cod_custom/gamemode/post_shared.lua create mode 100644 gamemodes/cod_custom/gamemode/server/sv_abilities.lua create mode 100644 gamemodes/cod_custom/gamemode/server/sv_domination.lua create mode 100644 gamemodes/cod_custom/gamemode/server/sv_functions.lua create mode 100644 gamemodes/cod_custom/gamemode/server/sv_infected.lua create mode 100644 gamemodes/cod_custom/gamemode/server/sv_invasion.lua create mode 100644 gamemodes/cod_custom/gamemode/server/sv_killcam.lua create mode 100644 gamemodes/cod_custom/gamemode/server/sv_killstreaks.lua create mode 100644 gamemodes/cod_custom/gamemode/server/sv_knockout.lua create mode 100644 gamemodes/cod_custom/gamemode/server/sv_takedown.lua create mode 100644 gamemodes/cod_custom/gamemode/shared.lua create mode 100644 gamemodes/cod_custom/gamemode/takedowns.lua create mode 100644 gamemodes/cod_custom/icon24.png create mode 100644 gamemodes/cod_custom/logo.png create mode 100644 lua/autorun/mw_assets/attachments.lua create mode 100644 lua/autorun/mw_assets/favorites.lua create mode 100644 lua/autorun/mw_assets/injectors.lua create mode 100644 lua/autorun/mw_assets/presets.lua create mode 100644 lua/autorun/mw_assets/rigs.lua create mode 100644 lua/autorun/mw_loader.lua create mode 100644 lua/autorun/mw_ltl.lua create mode 100644 lua/autorun/mw_matproxy.lua create mode 100644 lua/effects/mwb_shelleject.lua create mode 100644 lua/effects/mwb_shelleject_127.lua create mode 100644 lua/effects/mwb_shelleject_12g.lua create mode 100644 lua/effects/mwb_shelleject_12g_black.lua create mode 100644 lua/effects/mwb_shelleject_12g_green.lua create mode 100644 lua/effects/mwb_shelleject_308.lua create mode 100644 lua/effects/mwb_shelleject_338.lua create mode 100644 lua/effects/mwb_shelleject_45.lua create mode 100644 lua/effects/mwb_shelleject_458.lua create mode 100644 lua/effects/mwb_shelleject_50bmg.lua create mode 100644 lua/effects/mwb_shelleject_545.lua create mode 100644 lua/effects/mwb_shelleject_556.lua create mode 100644 lua/effects/mwb_shelleject_57.lua create mode 100644 lua/effects/mwb_shelleject_762.lua create mode 100644 lua/effects/mwb_shelleject_7625x.lua create mode 100644 lua/effects/mwb_shelleject_939.lua create mode 100644 lua/effects/mwb_shelleject_9mm.lua create mode 100644 lua/effects/mwb_shelleject_comp.lua create mode 100644 lua/entities/mg_40mm/cl_init.lua create mode 100644 lua/entities/mg_40mm/init.lua create mode 100644 lua/entities/mg_40mm/shared.lua create mode 100644 lua/entities/mg_aoe_arrow_explosion/cl_init.lua create mode 100644 lua/entities/mg_aoe_arrow_explosion/init.lua create mode 100644 lua/entities/mg_aoe_arrow_explosion/shared.lua create mode 100644 lua/entities/mg_aoe_arrow_gas/cl_init.lua create mode 100644 lua/entities/mg_aoe_arrow_gas/init.lua create mode 100644 lua/entities/mg_aoe_arrow_gas/shared.lua create mode 100644 lua/entities/mg_aoe_arrow_smoke/cl_init.lua create mode 100644 lua/entities/mg_aoe_arrow_smoke/init.lua create mode 100644 lua/entities/mg_aoe_arrow_smoke/shared.lua create mode 100644 lua/entities/mg_aoe_arrow_thermite/cl_init.lua create mode 100644 lua/entities/mg_aoe_arrow_thermite/init.lua create mode 100644 lua/entities/mg_aoe_arrow_thermite/shared.lua create mode 100644 lua/entities/mg_arrow/cl_init.lua create mode 100644 lua/entities/mg_arrow/init.lua create mode 100644 lua/entities/mg_arrow/shared.lua create mode 100644 lua/entities/mg_arrow_bone/cl_init.lua create mode 100644 lua/entities/mg_arrow_bone/init.lua create mode 100644 lua/entities/mg_arrow_bone/shared.lua create mode 100644 lua/entities/mg_arrow_emp/cl_init.lua create mode 100644 lua/entities/mg_arrow_emp/init.lua create mode 100644 lua/entities/mg_arrow_emp/shared.lua create mode 100644 lua/entities/mg_arrow_explosive/cl_init.lua create mode 100644 lua/entities/mg_arrow_explosive/init.lua create mode 100644 lua/entities/mg_arrow_explosive/shared.lua create mode 100644 lua/entities/mg_arrow_flashbang/cl_init.lua create mode 100644 lua/entities/mg_arrow_flashbang/init.lua create mode 100644 lua/entities/mg_arrow_flashbang/shared.lua create mode 100644 lua/entities/mg_arrow_gas/cl_init.lua create mode 100644 lua/entities/mg_arrow_gas/init.lua create mode 100644 lua/entities/mg_arrow_gas/shared.lua create mode 100644 lua/entities/mg_arrow_knockback/cl_init.lua create mode 100644 lua/entities/mg_arrow_knockback/init.lua create mode 100644 lua/entities/mg_arrow_knockback/shared.lua create mode 100644 lua/entities/mg_arrow_smoke/cl_init.lua create mode 100644 lua/entities/mg_arrow_smoke/init.lua create mode 100644 lua/entities/mg_arrow_smoke/shared.lua create mode 100644 lua/entities/mg_arrow_stim/cl_init.lua create mode 100644 lua/entities/mg_arrow_stim/init.lua create mode 100644 lua/entities/mg_arrow_stim/shared.lua create mode 100644 lua/entities/mg_arrow_thermite/cl_init.lua create mode 100644 lua/entities/mg_arrow_thermite/init.lua create mode 100644 lua/entities/mg_arrow_thermite/shared.lua create mode 100644 lua/entities/mg_attachment.lua create mode 100644 lua/entities/mg_bullet/cl_init.lua create mode 100644 lua/entities/mg_bullet/init.lua create mode 100644 lua/entities/mg_bullet/shared.lua create mode 100644 lua/entities/mg_frag_grenade/cl_init.lua create mode 100644 lua/entities/mg_frag_grenade/init.lua create mode 100644 lua/entities/mg_frag_grenade/shared.lua create mode 100644 lua/entities/mg_javelin_airstrike_warhead/cl_init.lua create mode 100644 lua/entities/mg_javelin_airstrike_warhead/init.lua create mode 100644 lua/entities/mg_javelin_airstrike_warhead/shared.lua create mode 100644 lua/entities/mg_javelin_warhead/cl_init.lua create mode 100644 lua/entities/mg_javelin_warhead/init.lua create mode 100644 lua/entities/mg_javelin_warhead/shared.lua create mode 100644 lua/entities/mg_slug/cl_init.lua create mode 100644 lua/entities/mg_slug/init.lua create mode 100644 lua/entities/mg_slug/shared.lua create mode 100644 lua/entities/mg_sniper_bullet/cl_init.lua create mode 100644 lua/entities/mg_sniper_bullet/init.lua create mode 100644 lua/entities/mg_sniper_bullet/shared.lua create mode 100644 lua/entities/mg_submunition/cl_init.lua create mode 100644 lua/entities/mg_submunition/init.lua create mode 100644 lua/entities/mg_submunition/shared.lua create mode 100644 lua/entities/mg_viewmodel/cl_init.lua create mode 100644 lua/entities/mg_viewmodel/client/cl_animation.lua create mode 100644 lua/entities/mg_viewmodel/client/cl_calcview.lua create mode 100644 lua/entities/mg_viewmodel/client/cl_events.lua create mode 100644 lua/entities/mg_viewmodel/client/cl_render.lua create mode 100644 lua/entities/mg_viewmodel/init.lua create mode 100644 lua/entities/mg_viewmodel/shared.lua create mode 100644 lua/entities/mg_warhead/cl_init.lua create mode 100644 lua/entities/mg_warhead/init.lua create mode 100644 lua/entities/mg_warhead/shared.lua create mode 100644 lua/includes/modules/mw_math.lua create mode 100644 lua/includes/modules/mw_utils.lua create mode 100644 lua/weapons/mg_357/animations.lua create mode 100644 lua/weapons/mg_357/customization.lua create mode 100644 lua/weapons/mg_357/shared.lua create mode 100644 lua/weapons/mg_aalpha12/animations.lua create mode 100644 lua/weapons/mg_aalpha12/customization.lua create mode 100644 lua/weapons/mg_aalpha12/shared.lua create mode 100644 lua/weapons/mg_akilo47/animations.lua create mode 100644 lua/weapons/mg_akilo47/customization.lua create mode 100644 lua/weapons/mg_akilo47/shared.lua create mode 100644 lua/weapons/mg_alpha50/animations.lua create mode 100644 lua/weapons/mg_alpha50/customization.lua create mode 100644 lua/weapons/mg_alpha50/shared.lua create mode 100644 lua/weapons/mg_anovember94/animations.lua create mode 100644 lua/weapons/mg_anovember94/customization.lua create mode 100644 lua/weapons/mg_anovember94/shared.lua create mode 100644 lua/weapons/mg_asierra12/animations.lua create mode 100644 lua/weapons/mg_asierra12/customization.lua create mode 100644 lua/weapons/mg_asierra12/shared.lua create mode 100644 lua/weapons/mg_augolf/animations.lua create mode 100644 lua/weapons/mg_augolf/customization.lua create mode 100644 lua/weapons/mg_augolf/shared.lua create mode 100644 lua/weapons/mg_base/cl_init.lua create mode 100644 lua/weapons/mg_base/init.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_akilo47.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_anovember94.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_falima.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_falpha.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_g3a3.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_galima.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_kilo433.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_mcharlie.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_mike4.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_oden.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_scharlie.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_sierra552.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_tango21.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_ar_valpha.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_pi_cpapa.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_pi_decho.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_pi_golf21.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_pi_mike.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_pi_mike1911.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_pi_mike9.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_pi_papa320.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sh_aalpha12.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sh_charlie725.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sh_dpapa12.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sh_mike26.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sh_oscar12.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sh_romeo870.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sm_augolf.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sm_beta.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sm_charlie9.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sm_mpapa5.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sm_mpapa7.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sm_papa90.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sm_secho.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sm_smgolf45.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sm_uzulu.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sm_victor.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sn_kilo98.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sn_mike14.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sn_sbeta.lua create mode 100644 lua/weapons/mg_base/modules/attachments/attachments_sn_sksierra.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_drummag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_slugmag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/perks/attachment_vm_sh_aalpha12_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stocks.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_custombarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_lmgbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_lmgbarrel_grip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_smgbarcust.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_smgbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser01_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser02_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser03_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_drum_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_smgmag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/muzzles/attachment_vm_bayonet_akilo47.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/perks/attachment_vm_ar_akilo47_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/sights/attachment_vm_ar_akilo47_rail.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_lmgstock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_smgstock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_smgstock_unfolded.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_light01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_medium01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_v12.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_v21.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barmid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_mmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_compensator01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_flashhider01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_muzzlebrake01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_muzzlebrake02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/perks/attachment_vm_sn_alpha50_perk_bolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/perks/attachment_vm_sn_alpha50_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/sights/attachment_vm_sn_alpha50_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stocks.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_db.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_default.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_flechette.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_he.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_slugs.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_xmagslrg.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/muzzles/attachment_vm_ar_anovember94_muzzlebrake.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/perks/attachment_vm_ar_anovember94_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/sights/attachment_vm_ar_anovember94_thermal_v3.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stocks.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockskel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barlong2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_mag_sniper.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_xxmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/muzzles/attachment_vm_ar_asierra12_longsuppressor.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/perks/attachment_vm_ar_asierra12_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/sights/attachment_vm_ar_asierra12_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_arbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_lmgbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_smgbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser01_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser02_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser03_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_armag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_drummag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_smg_xmag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/perks/attachment_vm_sm_augolf_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/rails/attachment_vm_sm_augolf_arrail.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/sights/attachment_vm_sm_augolf_lmgrail.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stock_tactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stocks.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_accessory.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_ammo.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_arm.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_arrow.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_base.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_bolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_conversion.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_forend.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_grip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_hybrid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_laser.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_magazine.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_magazine_dual.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_miscellaneous.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_muzzle.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_optic.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_perk.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_pistolgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_pump.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_rail.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_sight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_sight_reticle.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_suppressor.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_toprail.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/base/att_wire.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barmid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/mags/attachment_vm_sm_beta_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/mags/attachment_vm_sm_beta_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/perks/attachment_vm_sm_beta_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_augolf_stock_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_beta_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_beta_stockmrkt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_mid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_sawnoff.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_foreendlight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_forendstable.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_forendtactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_guard.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_comp.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_flashhider.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_muzzlebrake.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_muzzlemelee.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/perks/attachment_vm_sh_charlie725_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_2x_west01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_scope_mike14.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_scope_vz.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/sights/attachment_vm_sn_charlie725_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stock_sawnoff.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stocklight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stockstable.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stocktactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_barsil.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_longbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_medbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_shortbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_drummag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_xmag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/perks/attachment_vm_sm_charlie9_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_fullstock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_nostock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel_short.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/mags/attachment_vm_pi_cpapa_loader_snake.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/mags/attachment_vm_pi_cpapa_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/perks/att_vm_pi_cpapa_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/sights/attachment_vm_pi_cpapa_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_grip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_stock01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_stock02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_heavy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_light.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_tac.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_empbolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_expbolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_firebolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_flashbolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_gordonbolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_knockbolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_skullbolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_smokebolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_stimbolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_stunbolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_ammo.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_none.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/sights/attachment_vm_sn_crossbow_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_heavy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_light.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_tac.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_heavy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_light.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_tac.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide_extended.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide_extended02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/grips/attachment_vm_pi_decho_cust_grip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/grips/attachment_vm_pi_decho_grip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_xmags2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/muzzles/attachment_vm_pi_decho_muzzlebrake.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/decho/perks/att_vm_pi_decho_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_xmags2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/perks/attachment_vm_ar_delta_perk_fullauto.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/perks/attachment_vm_sn_delta_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/receivers/attachment_vm_sn_delta_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/receivers/attachment_vm_sn_delta_receiver_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_irons.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_scope_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_thermalsnpr_west01_delta_v3.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock_light.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock_short.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/ammo/attachment_vm_sh_dpapa12_ammo.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barmid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_grip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_choke.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_comp.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_flashhider.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_muzzlebrake.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_muzzlemelee.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/perks/attachment_vm_sh_dpapa12_perk_slamfire.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/perks/attachment_vm_sh_dpapa12_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_light.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_stable.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_tactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barsmg.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend_v4.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_mmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/perks/attachment_vm_ar_falima_perk_fullauto.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/perks/attachment_vm_ar_falima_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/receiver/attachment_vm_ar_falima_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/receiver/attachment_vm_ar_falima_receiver_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock_v4.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barlong2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barrellong_alt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_xmags2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/perks/attachment_vm_ar_falpha_perk_burst.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/perks/attachment_vm_ar_falpha_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/receivers/attachment_vm_ar_falpha_railcust.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/sights/attachment_vm_ar_falpha_irons.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_light.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_stable.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_tactical_v1.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_carbine.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_cqc.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_default.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_sniper.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser01_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser02_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser03_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_ar_g3a3_magazine_default.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_ar_g3a3_magazine_drum.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_magazine_ext_g3_custom.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/perks/attachment_vm_ar_g3a3_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/pistolgrips/attachment_vm_ar_g3a3_pgrip_default.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/pistolgrips/attachment_vm_ar_g3a3_pgrip_sniper.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/sights/attachment_vm_ar_g3a3_sight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_default.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_fixed.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_foldable.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_no.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_retractable.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_sniper.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barlight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_smag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_xmag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/perks/attachment_vm_ar_galima_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stocks.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockskel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stocksn.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/att_vm_pi_golf21_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/att_vm_pi_golf21_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/mags/att_vm_pi_golf21_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/mags/att_vm_pi_golf21_mag_xxmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_auto.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_black.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip01_smg.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/grips/att_vm_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/grips/att_vm_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/grips/att_vm_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_mid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_short.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_weapon_vm_sn_hdromeo_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_vm_sn_hdromeo_xmag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_vm_sn_hdromeo_xmag2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_weapon_vm_sn_hdromeo_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_compensator01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_flashhider01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_muzzlebrake01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_muzzlebrake02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/perks/attachment_vm_sn_hdromeo_perk_bolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/perks/attachment_vm_sn_hdromeo_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/receivers/attachment_weapon_vm_sn_hdromeo_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/sights/attachment_vm_sn_hdromeo_snprscope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_vm_sn_hdromeo_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_vm_sn_hdromeo_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_weapon_vm_sn_hdromeo_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_mid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_short.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_bipod.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser01_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser02_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser03_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/mags/attachment_vm_lm_kilo121_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/mags/attachment_vm_lm_kilo121_mag_ext.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/perks/attachment_vm_lm_kilo121_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo121/stock/attachment_vm_lm_kilo121_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barsil.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_long_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_drum_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_xmags2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/perks/attachment_vm_ar_kilo433_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock_heavy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barmid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/perks/attachment_vm_sn_kilo98_perk_bolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/perks/attachment_vm_sn_kilo98_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/receiver/attachment_vm_sn_kilo98_nostrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/receiver/attachment_vm_sn_kilo98_sling.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/sights/att_vm_scope_kilo98.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/sights/att_vm_scope_vz_kilo98.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/sights/weapon_vm_scope_kilo98.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stock_tactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stocks.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_pstl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_shoothouse.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02_pstl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03_pstl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_mid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_short.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_bipod.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser01_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser02_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser03_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_xmags2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/perks/attachment_vm_lm_lima86_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/sights/attachment_vm_lm_lima86_4x_west.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stock_tactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stocks.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_45rnd_mag_eastern.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_50rnd_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_60rnd_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_barrel_v17.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_longbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_shortbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_suppressorbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_mag_v17.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_magsub.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_xmags2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/perks/attachment_vm_ar_mcharlie_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/receiver/attachment_vm_ar_mcharlie_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/receiver/attachment_vm_ar_mcharlie_receiver_v17.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_lightstock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_stock_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/attachment_vm_lm_mgolf34_ironsight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_mid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_short.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_bipod.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser01_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser02_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser03_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/mags/attachment_vm_lm_mgolf34_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/mags/attachment_vm_lm_mgolf34_mag_xlrg.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/perks/attachment_vm_lm_mgolf34_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf34/stock/attachment_vm_lm_mgolf34_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel_med.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel_short.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_50mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_60mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_drummag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_drummag200.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_magblackout.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/perks/attachment_vm_lm_mgolf36_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/pistolgrips/attachment_vm_lm_mgolf36_pistolgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/sights/attachment_vm_lm_mgolf36_4x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/sights/attachment_vm_lm_mgolf36_reflex.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_heavy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_light.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_no.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_tactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mgolf36/toprails/attachment_vm_lm_mgolf36_toprail.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barauto.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barlight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barsil.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_grip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_drummag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/perks/att_vm_pi_mike_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/stocks/attachment_vm_pi_mike_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike/stocks/attachment_vm_pi_mike_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlong2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_xmags2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/perks/attachment_vm_sn_mike14_perk_fullauto.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/perks/attachment_vm_sn_mike14_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_light01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_medium01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_no.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_tactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_v2_alt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_v3.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stockcqb_alt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_v1_slide.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_v2_slide.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_mmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_v1_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/muzzles/attachment_vm_pi_mike1911_muzzlebrake.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike1911/perks/att_vm_pi_mike1911_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barheavy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_smag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_xmag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/perks/attachment_vm_sh_mike26_perk_slamfire.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/perks/attachment_vm_sh_mike26_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumph.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumphandle.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumpl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike26/stock/attachment_vm_sh_mike26_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v15.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v3_alt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v7.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barsil.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_custombarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_mike203barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_shortbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_calsmg.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag_v15.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag_v5.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_xmags2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/perks/attachment_vm_ar_mike4_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v15.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v7.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/sights/attachment_vm_ar_mike4_carryhandle.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_customstock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock_v15.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barauto.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barlight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barrel_black.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_gripvert.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pstlgrpcust.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pstlgrplght.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_xmagslrg.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/muzzles/attachment_vm_pi_mike9_compensator.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/perks/att_vm_pi_mike9_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/sights/attachment_vm_pi_mike9_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mike9/stocks/attachment_vm_pi_mike9_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_bipod.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser01_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser02_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser03_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_smags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_xbelt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/perks/attachment_vm_lm_mkilo3_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/stock/attachment_vm_lm_mkilo3_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mkilo3/stock/attachment_vm_lm_mkilo3_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_noflash.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_suppressor.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_suppshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_railgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag_xmag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag_xmag2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/perks/attachment_vm_sm_mpapa5_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/receivers/attachment_vm_sm_mpapa5_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/receivers/attachment_vm_sm_mpapa5_receiver_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock_fullstock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock_nostock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlong2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/fss_folding_grip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_mmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/perks/attachment_vm_sm_mpapa7_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/receivers/attachment_vm_sm_mpapa7_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/receivers/attachment_vm_sm_mpapa7_receiver_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/stock/attachment_vm_sm_mpapa7_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/mpapa7/stock/xrk_retractable_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher02_shgn.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator01_pstl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator_shgn01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator_shgn02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01_pstl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01_shgn.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider04.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake01_pstl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake04.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake_shgn01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_oil_filter_suppressor.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer01_pstl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer02_pstl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer04.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer04_pstl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer05.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer06.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_silencer02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_silencer03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_suppressor.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrellong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrelmid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrelshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_foreendlight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_forendstable.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_forendtactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_guard.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_none.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegrip_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegripang.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_drummag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/perks/attachment_vm_sh_oscar12_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stockhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stocklgt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_barrel_ext.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide_black.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide_vented.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/lasers/attachment_vm_laser_pstl_shoothouse.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag_ext.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag_ext2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/muzzles/attachment_vm_pi_papa320_silencer.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa320/perks/att_vm_pi_papa320_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_custombarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_longbarrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/mags/attachment_vm_sm_papa90_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/mags/attachment_vm_sm_papa90_mag_v4.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/perks/attachment_vm_sm_papa90_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/receivers/attachment_vm_sm_papa90_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/sights/attachment_vm_sm_papa90_reddotscope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stock_tactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stocks.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_bolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_fastswap.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_fmj.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_headshot.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_hip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_launch.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_launch_dmg.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_nodrop.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_ricochet.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_rof.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_scopesway.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/perks/att_perk_steadywalk.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_heavy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_short.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_bipod.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser01_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser02_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser03_cylinder.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag_ext.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag_xlrg.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/perks/attachment_vm_lm_pkilo_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/pkilo/stock/attachment_vm_lm_pkilo_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barsil.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_bolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_bolthvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_boltl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_magcalcust1.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_magcalcust2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/perks/attachment_vm_sn_romeo700_perk_bolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/perks/attachment_vm_sn_romeo700_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/sights/attachment_vm_sn_romeo700_irons.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/sights/attachment_vm_sn_romeo700_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stockhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stockskel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stocksn.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stocktac.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_sawn.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_heatguard_mp.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/mags/attachment_vm_sh_romeo870_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_shtgnsilencer.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_silencer02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_silencer03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/perks/attachment_vm_sh_romeo870_perk_slamfire.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/perks/attachment_vm_sh_romeo870_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_custom.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_wood.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pumpalt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/receivers/attachment_vm_sh_romeo870_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/receivers/attachment_vm_sh_romeo870_receiver_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/sights/attachment_vm_sh_romeo870_no_rail.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_heavy01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_heavy02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_light01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_medium01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_pistolgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_wood.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barmid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_bolt.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_slamfire.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/sights/attachment_vm_sn_sbeta_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_rack.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_light.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_stable.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_tactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_mid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_pdw.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_v18.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag_dmr.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag_v18.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/perks/attachment_vm_ar_scharlie_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/receivers/attachment_vm_ar_scharlie_receiver_v18.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_dmr.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_light.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_v18.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barsillong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barsilshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barxlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_drummags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_smags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/perks/attachment_vm_sm_secho_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockskel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barlight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barxlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_xmagslrg.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/perks/attachment_vm_ar_sierra552_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barlight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_magcalcust1.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_magcalcust2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/perks/attachment_vm_lm_sierrax_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stocksaw.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_1point5x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_2x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_3x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_4x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_eastern02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west02_thermal.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_thermal_east01_hybrid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_10x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_1point5x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_20x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_2x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_3x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_4x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west02_holo.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_east01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_east01_tall.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west01_tall.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west02_tall.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_holo_east01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_scope_mike14.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_scope_vz.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_thermal_east01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_thermal_west01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_sight_1x.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_holo_west01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_holo_west02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot01_tall.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot02_tall.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot03_tall.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east02_tall.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west02_tall.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west04.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_smag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_xmag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/perks/attachment_vm_sn_sksierra_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/sights/attachment_vm_sn_sksierra_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/sights/attachment_vm_sn_sksierra_sight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockhvy2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barlight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_bipod.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_smag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/perks/attachment_vm_lm_slima_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stocks.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barmid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_killtheclamp.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_mag_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_smags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_xmagslrg.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/perks/attachment_vm_sm_smgolf45_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/receivers/attachment_vm_sm_smgolf45_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/receivers/attachment_vm_sm_smgolf45_receiver_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stock_v2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockcqb.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_victor_stocksn.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_heavy01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_heavy02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_light01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_medium01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_no.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_long.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_med.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_short.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_drummag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/perks/attachment_vm_ar_tango21_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_heavy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_light.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_tactical.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barcust.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barmid.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_magcalcust.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_magcalcust9mm.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_xmag2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/muzzles/attachment_vm_sm_uzulu_suppressor.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/perks/attachment_vm_sm_uzulu_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/receivers/attachment_vm_sm_uzulu_receiver.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_heavy01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_heavy02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_light01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_medium01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_no.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stock_folded.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barlight.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_smags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_xmags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/perks/attachment_vm_ar_valpha_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/sights/attachment_vm_ar_valpha_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stocks.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stockskel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stocksn.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barsil.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_angledgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_angledgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_bipodgrip.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_stubbygrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_stubbygrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_drummag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_smags.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/muzzles/attachment_vm_sm_victor_suppressor.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/perks/attachment_vm_sm_victor_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stockh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stockno.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stocks.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stocksn.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_bp.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_dh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_fuel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_he.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_mas.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_smart.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barhvy.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barlong.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barrel.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barshort.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser01.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser02.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser03.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_calcust1.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_calcust2.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_mag.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/muzzles/attachment_vm_sn_xmike109_brake.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/muzzles/attachment_vm_sn_xmike109_silencerlrg.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/perks/attachment_vm_sn_xmike109_perk_soh.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/sights/attachment_vm_sn_xmike109_irons.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/sights/attachment_vm_sn_xmike109_scope.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stock.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stockl.lua create mode 100644 lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stocks.lua create mode 100644 lua/weapons/mg_base/modules/client/cl_calcview.lua create mode 100644 lua/weapons/mg_base/modules/client/cl_hud.lua create mode 100644 lua/weapons/mg_base/modules/client/cl_new_customizemenu.lua create mode 100644 lua/weapons/mg_base/modules/client/cl_spawnmenu.lua create mode 100644 lua/weapons/mg_base/modules/client/cl_worldmodel_render.lua create mode 100644 lua/weapons/mg_base/modules/languages/de.lua create mode 100644 lua/weapons/mg_base/modules/languages/en.lua create mode 100644 lua/weapons/mg_base/modules/languages/es-ES.lua create mode 100644 lua/weapons/mg_base/modules/languages/fr.lua create mode 100644 lua/weapons/mg_base/modules/languages/pt-BR.lua create mode 100644 lua/weapons/mg_base/modules/languages/ru.lua create mode 100644 lua/weapons/mg_base/modules/languages/th.lua create mode 100644 lua/weapons/mg_base/modules/languages/zh-CN.lua create mode 100644 lua/weapons/mg_base/modules/languages/zh-TW.lua create mode 100644 lua/weapons/mg_base/modules/presets/presets_uzulu_l4d.lua create mode 100644 lua/weapons/mg_base/modules/reverb/mw_reverb.lua create mode 100644 lua/weapons/mg_base/modules/reverb/mw_reverbimpl.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_aim_behaviour.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_aim_mode_behavior.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_bipod_behavior.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_button_dispatcher.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_customization.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_datatables.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_firemode_behaviour.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_holdtypes.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_inspect_behavior.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_melee_behaviour.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_primaryattack_behaviour.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_reload_behaviour.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_safety_behavior.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_sprint_behaviour.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_stats.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_think.lua create mode 100644 lua/weapons/mg_base/modules/shared/sh_trigger_behavior.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_akilo47.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_anovember94.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_asierra12.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_falima.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_falpha.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_g3a3.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_galima.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_kilo433.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_mcharlie.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_mike4.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_scharlie.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_sierra552.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_tango21.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ar_valpha.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_atmo.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_casings.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_channels.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_foley.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_minigun.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_reflections.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_sh_aalpha12.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_sh_mike26.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_sm_secho.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_sn_crossbow.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_sn_kilo98.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_sn_mike14.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_sn_romeo700.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_sn_sbeta.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_sn_sksierra.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_ui.lua create mode 100644 lua/weapons/mg_base/modules/sounds/mw_sounds_weapons_shared.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_ar_mgolf36.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_lm_kilo121.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_lm_lima86.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_lm_mgolf34.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_lm_mkilo3.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_lm_pkilo.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_lm_sierrax.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_lm_slima.all.sabs.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_pi_cpapa.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_pi_decho.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_pi_golf21.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_pi_mike.all.sabs.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_pi_mike1911.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_pi_mike9a3.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_pi_papa320.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sh_charlie725.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sh_dpapa12.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sh_oscar12.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sh_romeo870.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sm_augolf.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sm_beta.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sm_charlie9.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sm_mpapa5.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sm_mpapa7.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sm_papa90.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sm_smgolf45.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sm_uzulu.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sm_victor.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sn_alpha50.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sn_delta.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sn_hdromeo.all.lua create mode 100644 lua/weapons/mg_base/modules/sounds/weapon_sn_xmike109.all.lua create mode 100644 lua/weapons/mg_base/shared.lua create mode 100644 lua/weapons/mg_beta/animations.lua create mode 100644 lua/weapons/mg_beta/customization.lua create mode 100644 lua/weapons/mg_beta/shared.lua create mode 100644 lua/weapons/mg_charlie725/animations.lua create mode 100644 lua/weapons/mg_charlie725/customization.lua create mode 100644 lua/weapons/mg_charlie725/shared.lua create mode 100644 lua/weapons/mg_charlie9/animations.lua create mode 100644 lua/weapons/mg_charlie9/customization.lua create mode 100644 lua/weapons/mg_charlie9/shared.lua create mode 100644 lua/weapons/mg_crossbow/animations.lua create mode 100644 lua/weapons/mg_crossbow/customization.lua create mode 100644 lua/weapons/mg_crossbow/shared.lua create mode 100644 lua/weapons/mg_dblmg/animations.lua create mode 100644 lua/weapons/mg_dblmg/shared.lua create mode 100644 lua/weapons/mg_deagle/animations.lua create mode 100644 lua/weapons/mg_deagle/customization.lua create mode 100644 lua/weapons/mg_deagle/shared.lua create mode 100644 lua/weapons/mg_delta/animations.lua create mode 100644 lua/weapons/mg_delta/customization.lua create mode 100644 lua/weapons/mg_delta/shared.lua create mode 100644 lua/weapons/mg_dpapa12/animations.lua create mode 100644 lua/weapons/mg_dpapa12/customization.lua create mode 100644 lua/weapons/mg_dpapa12/shared.lua create mode 100644 lua/weapons/mg_falima/animations.lua create mode 100644 lua/weapons/mg_falima/customization.lua create mode 100644 lua/weapons/mg_falima/shared.lua create mode 100644 lua/weapons/mg_falpha/animations.lua create mode 100644 lua/weapons/mg_falpha/customization.lua create mode 100644 lua/weapons/mg_falpha/shared.lua create mode 100644 lua/weapons/mg_g3a3/animations.lua create mode 100644 lua/weapons/mg_g3a3/customization.lua create mode 100644 lua/weapons/mg_g3a3/shared.lua create mode 100644 lua/weapons/mg_galima/animations.lua create mode 100644 lua/weapons/mg_galima/customization.lua create mode 100644 lua/weapons/mg_galima/shared.lua create mode 100644 lua/weapons/mg_glock/animations.lua create mode 100644 lua/weapons/mg_glock/customization.lua create mode 100644 lua/weapons/mg_glock/shared.lua create mode 100644 lua/weapons/mg_hdromeo/animations.lua create mode 100644 lua/weapons/mg_hdromeo/customization.lua create mode 100644 lua/weapons/mg_hdromeo/shared.lua create mode 100644 lua/weapons/mg_kilo121/animations.lua create mode 100644 lua/weapons/mg_kilo121/customization.lua create mode 100644 lua/weapons/mg_kilo121/shared.lua create mode 100644 lua/weapons/mg_kilo433/animations.lua create mode 100644 lua/weapons/mg_kilo433/customization.lua create mode 100644 lua/weapons/mg_kilo433/shared.lua create mode 100644 lua/weapons/mg_kilo98/animations.lua create mode 100644 lua/weapons/mg_kilo98/customization.lua create mode 100644 lua/weapons/mg_kilo98/shared.lua create mode 100644 lua/weapons/mg_lima86/animations.lua create mode 100644 lua/weapons/mg_lima86/customization.lua create mode 100644 lua/weapons/mg_lima86/shared.lua create mode 100644 lua/weapons/mg_m1911/animations.lua create mode 100644 lua/weapons/mg_m1911/customization.lua create mode 100644 lua/weapons/mg_m1911/shared.lua create mode 100644 lua/weapons/mg_m9/animations.lua create mode 100644 lua/weapons/mg_m9/customization.lua create mode 100644 lua/weapons/mg_m9/shared.lua create mode 100644 lua/weapons/mg_makarov/animations.lua create mode 100644 lua/weapons/mg_makarov/customization.lua create mode 100644 lua/weapons/mg_makarov/shared.lua create mode 100644 lua/weapons/mg_mcharlie/animations.lua create mode 100644 lua/weapons/mg_mcharlie/customization.lua create mode 100644 lua/weapons/mg_mcharlie/shared.lua create mode 100644 lua/weapons/mg_mgolf34/animations.lua create mode 100644 lua/weapons/mg_mgolf34/customization.lua create mode 100644 lua/weapons/mg_mgolf34/shared.lua create mode 100644 lua/weapons/mg_mgolf36/animations.lua create mode 100644 lua/weapons/mg_mgolf36/customization.lua create mode 100644 lua/weapons/mg_mgolf36/shared.lua create mode 100644 lua/weapons/mg_mike14/animations.lua create mode 100644 lua/weapons/mg_mike14/customization.lua create mode 100644 lua/weapons/mg_mike14/shared.lua create mode 100644 lua/weapons/mg_mike26/animations.lua create mode 100644 lua/weapons/mg_mike26/customization.lua create mode 100644 lua/weapons/mg_mike26/shared.lua create mode 100644 lua/weapons/mg_mike4/animations.lua create mode 100644 lua/weapons/mg_mike4/customization.lua create mode 100644 lua/weapons/mg_mike4/shared.lua create mode 100644 lua/weapons/mg_mkilo3/animations.lua create mode 100644 lua/weapons/mg_mkilo3/customization.lua create mode 100644 lua/weapons/mg_mkilo3/shared.lua create mode 100644 lua/weapons/mg_mpapa5/animations.lua create mode 100644 lua/weapons/mg_mpapa5/customization.lua create mode 100644 lua/weapons/mg_mpapa5/shared.lua create mode 100644 lua/weapons/mg_mpapa7/animations.lua create mode 100644 lua/weapons/mg_mpapa7/customization.lua create mode 100644 lua/weapons/mg_mpapa7/shared.lua create mode 100644 lua/weapons/mg_oscar12/animations.lua create mode 100644 lua/weapons/mg_oscar12/customization.lua create mode 100644 lua/weapons/mg_oscar12/shared.lua create mode 100644 lua/weapons/mg_p320/animations.lua create mode 100644 lua/weapons/mg_p320/customization.lua create mode 100644 lua/weapons/mg_p320/shared.lua create mode 100644 lua/weapons/mg_papa90/animations.lua create mode 100644 lua/weapons/mg_papa90/customization.lua create mode 100644 lua/weapons/mg_papa90/shared.lua create mode 100644 lua/weapons/mg_pkilo/animations.lua create mode 100644 lua/weapons/mg_pkilo/customization.lua create mode 100644 lua/weapons/mg_pkilo/shared.lua create mode 100644 lua/weapons/mg_romeo700/animations.lua create mode 100644 lua/weapons/mg_romeo700/customization.lua create mode 100644 lua/weapons/mg_romeo700/shared.lua create mode 100644 lua/weapons/mg_romeo870/animations.lua create mode 100644 lua/weapons/mg_romeo870/customization.lua create mode 100644 lua/weapons/mg_romeo870/shared.lua create mode 100644 lua/weapons/mg_sbeta/animations.lua create mode 100644 lua/weapons/mg_sbeta/customization.lua create mode 100644 lua/weapons/mg_sbeta/shared.lua create mode 100644 lua/weapons/mg_scharlie/animations.lua create mode 100644 lua/weapons/mg_scharlie/customization.lua create mode 100644 lua/weapons/mg_scharlie/shared.lua create mode 100644 lua/weapons/mg_secho/animations.lua create mode 100644 lua/weapons/mg_secho/customization.lua create mode 100644 lua/weapons/mg_secho/shared.lua create mode 100644 lua/weapons/mg_sierra552/animations.lua create mode 100644 lua/weapons/mg_sierra552/customization.lua create mode 100644 lua/weapons/mg_sierra552/shared.lua create mode 100644 lua/weapons/mg_sierrax/animations.lua create mode 100644 lua/weapons/mg_sierrax/customization.lua create mode 100644 lua/weapons/mg_sierrax/shared.lua create mode 100644 lua/weapons/mg_sksierra/animations.lua create mode 100644 lua/weapons/mg_sksierra/customization.lua create mode 100644 lua/weapons/mg_sksierra/shared.lua create mode 100644 lua/weapons/mg_slima/animations.lua create mode 100644 lua/weapons/mg_slima/customization.lua create mode 100644 lua/weapons/mg_slima/shared.lua create mode 100644 lua/weapons/mg_smgolf45/animations.lua create mode 100644 lua/weapons/mg_smgolf45/customization.lua create mode 100644 lua/weapons/mg_smgolf45/shared.lua create mode 100644 lua/weapons/mg_tango21/animations.lua create mode 100644 lua/weapons/mg_tango21/customization.lua create mode 100644 lua/weapons/mg_tango21/shared.lua create mode 100644 lua/weapons/mg_uzulu/animations.lua create mode 100644 lua/weapons/mg_uzulu/customization.lua create mode 100644 lua/weapons/mg_uzulu/shared.lua create mode 100644 lua/weapons/mg_valpha/animations.lua create mode 100644 lua/weapons/mg_valpha/customization.lua create mode 100644 lua/weapons/mg_valpha/shared.lua create mode 100644 lua/weapons/mg_victor/animations.lua create mode 100644 lua/weapons/mg_victor/customization.lua create mode 100644 lua/weapons/mg_victor/shared.lua create mode 100644 lua/weapons/mg_xmike109/animations.lua create mode 100644 lua/weapons/mg_xmike109/customization.lua create mode 100644 lua/weapons/mg_xmike109/shared.lua create mode 100644 lua/wos/dynabase/registers/wos_mwii_tdm_registers.lua diff --git a/gamemodes/cod_custom/cod_custom.txt b/gamemodes/cod_custom/cod_custom.txt new file mode 100644 index 0000000..4a60390 --- /dev/null +++ b/gamemodes/cod_custom/cod_custom.txt @@ -0,0 +1,7 @@ +"Call Of Duty" +{ + "base" "base" + "title" "Call Of Duty" + "category" "pvp" + "menusystem" "1" +} diff --git a/gamemodes/cod_custom/entities/effects/base.lua b/gamemodes/cod_custom/entities/effects/base.lua new file mode 100644 index 0000000..0333cfb --- /dev/null +++ b/gamemodes/cod_custom/entities/effects/base.lua @@ -0,0 +1,39 @@ + +--[[--------------------------------------------------------- + Returns the right shoot start position for a tracer - based on 'data'. +-----------------------------------------------------------]] +function EFFECT:GetTracerShootPos( Position, Ent, Attachment ) + + self.ViewModelTracer = false + + if ( !IsValid( Ent ) ) then return Position end + if ( !Ent:IsWeapon() ) then return Position end + + -- Shoot from the viewmodel + if ( Ent:IsCarriedByLocalPlayer() && !LocalPlayer():ShouldDrawLocalPlayer() ) then + + local ViewModel = LocalPlayer():GetViewModel() + + if ( ViewModel:IsValid() ) then + + local att = ViewModel:GetAttachment( Attachment ) + if ( att ) then + Position = att.Pos + self.ViewModelTracer = true + end + + end + + -- Shoot from the world model + else + + local att = Ent:GetAttachment( Attachment ) + if ( att ) then + Position = att.Pos + end + + end + + return Position + +end diff --git a/gamemodes/cod_custom/entities/effects/dof_node.lua b/gamemodes/cod_custom/entities/effects/dof_node.lua new file mode 100644 index 0000000..38604d1 --- /dev/null +++ b/gamemodes/cod_custom/entities/effects/dof_node.lua @@ -0,0 +1,55 @@ + +EFFECT.Mat = Material( "pp/dof" ) + +function EFFECT:Init( data ) + + table.insert( DOF_Ents, self.Entity ) + self.Scale = data:GetScale() + + local size = 32 + self:SetCollisionBounds( Vector( -size, -size, -size ), Vector( size, size, size ) ) + +end + +function EFFECT:Think( ) + + -- If the spacing or offset has changed we need to reconfigure our positions + local ply = LocalPlayer() + + self.spacing = DOF_SPACING * self.Scale + self.offset = DOF_OFFSET + + -- Just return if it hasn't + --if ( spacing == self.spacing && offset == self.offset ) then return true end + + local pos = ply:EyePos() + local fwd = ply:EyeAngles():Forward() + + if ( ply:GetViewEntity() != ply ) then + pos = ply:GetViewEntity():GetPos() + fwd = ply:GetViewEntity():GetForward() + end + + pos = pos + ( fwd * self.spacing ) + ( fwd * self.offset ) + + self:SetParent( nil ) + self:SetPos( pos ) + self:SetParent( ply ) + + -- We don't kill this, the pp effect should + return true + +end + +function EFFECT:Render() + + -- Note: UpdateScreenEffectTexture fucks up the water, RefractTexture is lower quality + render.UpdateRefractTexture() + //render.UpdateScreenEffectTexture() + + local SpriteSize = ( self.spacing + self.offset ) * 8 + + render.SetMaterial( self.Mat ) + render.DrawSprite( self:GetPos(), SpriteSize, SpriteSize, color_white ) + +end diff --git a/gamemodes/cod_custom/entities/effects/tooltracer.lua b/gamemodes/cod_custom/entities/effects/tooltracer.lua new file mode 100644 index 0000000..53ee1e9 --- /dev/null +++ b/gamemodes/cod_custom/entities/effects/tooltracer.lua @@ -0,0 +1,58 @@ + +EFFECT.Mat = Material( "effects/tool_tracer" ) + +function EFFECT:Init( data ) + + self.Position = data:GetStart() + self.WeaponEnt = data:GetEntity() + self.Attachment = data:GetAttachment() + + -- Keep the start and end pos - we're going to interpolate between them + self.StartPos = self:GetTracerShootPos( self.Position, self.WeaponEnt, self.Attachment ) + self.EndPos = data:GetOrigin() + + self.Alpha = 255 + self.Life = 0 + + self:SetRenderBoundsWS( self.StartPos, self.EndPos ) + +end + +function EFFECT:Think() + + self.Life = self.Life + FrameTime() * 4 + self.Alpha = 255 * ( 1 - self.Life ) + + return ( self.Life < 1 ) + +end + +function EFFECT:Render() + + if ( self.Alpha < 1 ) then return end + + render.SetMaterial( self.Mat ) + local texcoord = math.Rand( 0, 1 ) + + local norm = (self.StartPos - self.EndPos) * self.Life + + self.Length = norm:Length() + + for i = 1, 3 do + + render.DrawBeam( self.StartPos - norm, -- Start + self.EndPos, -- End + 8, -- Width + texcoord, -- Start tex coord + texcoord + self.Length / 128, -- End tex coord + color_white ) -- Color (optional) + end + + render.DrawBeam( self.StartPos, + self.EndPos, + 8, + texcoord, + texcoord + ( ( self.StartPos - self.EndPos ):Length() / 128 ), + Color( 255, 255, 255, 128 * ( 1 - self.Life ) ) ) + +end diff --git a/gamemodes/cod_custom/entities/entities/aoc_spawnpoint.lua b/gamemodes/cod_custom/entities/entities/aoc_spawnpoint.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/aoc_spawnpoint.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/base_ai/cl_init.lua b/gamemodes/cod_custom/entities/entities/base_ai/cl_init.lua new file mode 100644 index 0000000..7b2452c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_ai/cl_init.lua @@ -0,0 +1,25 @@ + +include( "shared.lua" ) + +ENT.RenderGroup = RENDERGROUP_OPAQUE + +--[[--------------------------------------------------------- + Name: Draw + Desc: Draw it! +-----------------------------------------------------------]] +function ENT:Draw() + self:DrawModel() +end + +--[[--------------------------------------------------------- + Name: DrawTranslucent + Desc: Draw translucent +-----------------------------------------------------------]] +function ENT:DrawTranslucent() + + -- This is here just to make it backwards compatible. + -- You shouldn't really be drawing your model here unless it's translucent + + self:Draw() + +end diff --git a/gamemodes/cod_custom/entities/entities/base_ai/init.lua b/gamemodes/cod_custom/entities/entities/base_ai/init.lua new file mode 100644 index 0000000..f2c2295 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_ai/init.lua @@ -0,0 +1,131 @@ + +AddCSLuaFile( "cl_init.lua" ) +AddCSLuaFile( "shared.lua" ) + +include( "shared.lua" ) +include( "schedules.lua" ) +include( "tasks.lua" ) + +-- Variables + +ENT.m_fMaxYawSpeed = 200 -- Max turning speed +ENT.m_iClass = CLASS_CITIZEN_REBEL -- NPC Class + +AccessorFunc( ENT, "m_iClass", "NPCClass" ) +AccessorFunc( ENT, "m_fMaxYawSpeed", "MaxYawSpeed" ) + +function ENT:Initialize() + + -- Some default calls to make the NPC function + self:SetModel( "models/alyx.mdl" ) + self:SetHullType( HULL_HUMAN ) + self:SetHullSizeNormal() + self:SetSolid( SOLID_BBOX ) + self:SetMoveType( MOVETYPE_STEP ) + self:CapabilitiesAdd( bit.bor( CAP_MOVE_GROUND, CAP_OPEN_DOORS, CAP_ANIMATEDFACE, CAP_SQUAD, CAP_USE_WEAPONS, CAP_DUCK, CAP_MOVE_SHOOT, CAP_TURN_HEAD, CAP_USE_SHOT_REGULATOR, CAP_AIM_GUN ) ) + + self:SetHealth( 100 ) + +end + +--[[--------------------------------------------------------- + Name: OnTakeDamage + Desc: Called when the NPC takes damage +-----------------------------------------------------------]] +function ENT:OnTakeDamage( dmginfo ) + +--[[ + Msg( tostring(dmginfo) .. "\n" ) + Msg( "Inflictor:\t" .. tostring(dmginfo:GetInflictor()) .. "\n" ) + Msg( "Attacker:\t" .. tostring(dmginfo:GetAttacker()) .. "\n" ) + Msg( "Damage:\t" .. tostring(dmginfo:GetDamage()) .. "\n" ) + Msg( "Base Damage:\t" .. tostring(dmginfo:GetBaseDamage()) .. "\n" ) + Msg( "Force:\t" .. tostring(dmginfo:GetDamageForce()) .. "\n" ) + Msg( "Position:\t" .. tostring(dmginfo:GetDamagePosition()) .. "\n" ) + Msg( "Reported Pos:\t" .. tostring(dmginfo:GetReportedPosition()) .. "\n" ) -- ?? +--]] + + -- return 1 + +end + + + +--[[--------------------------------------------------------- + Name: Use +-----------------------------------------------------------]] +function ENT:Use( activator, caller, type, value ) +end + +--[[--------------------------------------------------------- + Name: StartTouch +-----------------------------------------------------------]] +function ENT:StartTouch( entity ) +end + +--[[--------------------------------------------------------- + Name: EndTouch +-----------------------------------------------------------]] +function ENT:EndTouch( entity ) +end + +--[[--------------------------------------------------------- + Name: Touch +-----------------------------------------------------------]] +function ENT:Touch( entity ) +end + +--[[--------------------------------------------------------- + Name: GetRelationship + Return the relationship between this NPC and the + passed entity. If you don't return anything then + the default disposition will be used. +-----------------------------------------------------------]] +function ENT:GetRelationship( entity ) + + --return D_NU; + +end + +--[[--------------------------------------------------------- + Name: ExpressionFinished + Called when an expression has finished. Duh. +-----------------------------------------------------------]] +function ENT:ExpressionFinished( strExp ) + +end + +--[[--------------------------------------------------------- + Name: OnChangeActivity +-----------------------------------------------------------]] +function ENT:OnChangeActivity( act ) + +end + +--[[--------------------------------------------------------- + Name: Think +-----------------------------------------------------------]] +function ENT:Think() + +end + +-- Called when NPC's movement fails +function ENT:OnMovementFailed() +end + +-- Called when NPC's movement succeeds +function ENT:OnMovementComplete() +end + +-- Called when the NPC's active weapon changes +function ENT:OnActiveWeaponChanged( old, new ) +end + +--[[--------------------------------------------------------- + Name: GetAttackSpread + How good is the NPC with this weapon? Return the number + of degrees of inaccuracy for the NPC to use. +-----------------------------------------------------------]] +function ENT:GetAttackSpread( Weapon, Target ) + return 0.1 +end diff --git a/gamemodes/cod_custom/entities/entities/base_ai/schedules.lua b/gamemodes/cod_custom/entities/entities/base_ai/schedules.lua new file mode 100644 index 0000000..96ca880 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_ai/schedules.lua @@ -0,0 +1,199 @@ + +--[[--------------------------------------------------------- + Name: RunAI - Called from the engine every 0.1 seconds +-----------------------------------------------------------]] +function ENT:RunAI( strExp ) + + -- If we're running an Engine Side behaviour + -- then return true and let it get on with it. + if ( self:IsRunningBehavior() ) then + return true + end + + -- If we're doing an engine schedule then return true + -- This makes it do the normal AI stuff. + if ( self:DoingEngineSchedule() ) then + return true + end + + -- If we're currently running a schedule then run it. + if ( self.CurrentSchedule ) then + self:DoSchedule( self.CurrentSchedule ) + end + + -- If we have no schedule (schedule is finished etc) + -- Then get the derived NPC to select what we should be doing + if ( !self.CurrentSchedule ) then + self:SelectSchedule() + end + + -- Do animation system + self:MaintainActivity() + +end + +--[[--------------------------------------------------------- + Name: SelectSchedule - Set the schedule we should be + playing right now. +-----------------------------------------------------------]] +function ENT:SelectSchedule( iNPCState ) + + self:SetSchedule( SCHED_IDLE_WANDER ) + +end + +--[[--------------------------------------------------------- + Name: StartSchedule - Start a Lua schedule. Not to be + confused with SetSchedule which starts an Engine based + schedule. +-----------------------------------------------------------]] +function ENT:StartSchedule( schedule ) + + self.CurrentSchedule = schedule + self.CurrentTaskID = 1 + self:SetTask( schedule:GetTask( 1 ) ) + +end + + + +--[[--------------------------------------------------------- + Name: DoSchedule - Runs a Lua schedule. +-----------------------------------------------------------]] +function ENT:DoSchedule( schedule ) + + if ( self.CurrentTask ) then + self:RunTask( self.CurrentTask ) + end + + if ( self:TaskFinished() ) then + self:NextTask( schedule ) + end + +end + + + +--[[--------------------------------------------------------- + Name: ScheduleFinished +-----------------------------------------------------------]] +function ENT:ScheduleFinished() + + self.CurrentSchedule = nil + self.CurrentTask = nil + self.CurrentTaskID = nil + +end + + + +--[[--------------------------------------------------------- + Name: DoSchedule - Set the current task. +-----------------------------------------------------------]] +function ENT:SetTask( task ) + + self.CurrentTask = task + self.bTaskComplete = false + self.TaskStartTime = CurTime() + + self:StartTask( self.CurrentTask ) + +end + + + +--[[--------------------------------------------------------- + Name: NextTask - Start the next task in specific schedule. +-----------------------------------------------------------]] +function ENT:NextTask( schedule ) + + -- Increment task id + self.CurrentTaskID = self.CurrentTaskID + 1 + + -- If this was the last task then finish up. + if ( self.CurrentTaskID > schedule:NumTasks() ) then + + self:ScheduleFinished( schedule ) + return + + end + + -- Switch to next task + self:SetTask( schedule:GetTask( self.CurrentTaskID ) ) + +end + +--[[--------------------------------------------------------- + Name: StartTask - called once on starting task +-----------------------------------------------------------]] +function ENT:StartTask( task ) + task:Start( self.Entity ) +end + +--[[--------------------------------------------------------- + Name: RunTask - called every think on running task. + The actual task function should tell us when + the task is finished. +-----------------------------------------------------------]] +function ENT:RunTask( task ) + task:Run( self.Entity ) +end + +--[[--------------------------------------------------------- + Name: TaskTime - Returns how many seconds we've been + doing this current task +-----------------------------------------------------------]] +function ENT:TaskTime() + return CurTime() - self.TaskStartTime +end + +--[[--------------------------------------------------------- + Name: OnTaskComplete - Called from the engine when + TaskComplete is called. This allows us to move + onto the next task - even when TaskComplete was + called from an engine side task. +-----------------------------------------------------------]] +function ENT:OnTaskComplete() + + self.bTaskComplete = true + +end + +--[[--------------------------------------------------------- + Name: TaskFinished - Returns true if the current + running Task is finished. +-----------------------------------------------------------]] +function ENT:TaskFinished() + return self.bTaskComplete +end + +--[[--------------------------------------------------------- + Name: StartTask + Start the task. You can use this to override engine + side tasks. Return true to not run default stuff. +-----------------------------------------------------------]] +function ENT:StartEngineTask( iTaskID, TaskData ) +end + +--[[--------------------------------------------------------- + Name: RunTask + Run the task. You can use this to override engine + side tasks. Return true to not run default stuff. +-----------------------------------------------------------]] +function ENT:RunEngineTask( iTaskID, TaskData ) +end + +--[[--------------------------------------------------------- + These functions handle the engine schedules + When an engine schedule is set the engine calls StartEngineSchedule + Then when it's finished it calls EngineScheduleFinishHelp me decide +-----------------------------------------------------------]] +function ENT:StartEngineSchedule( scheduleID ) self:ScheduleFinished() self.bDoingEngineSchedule = true end +function ENT:EngineScheduleFinish() self.bDoingEngineSchedule = nil end +function ENT:DoingEngineSchedule() return self.bDoingEngineSchedule end + +function ENT:OnCondition( iCondition ) + + --Msg( self, " Condition: ", iCondition, " - ", self:ConditionName(iCondition), "\n" ) + +end diff --git a/gamemodes/cod_custom/entities/entities/base_ai/shared.lua b/gamemodes/cod_custom/entities/entities/base_ai/shared.lua new file mode 100644 index 0000000..cdcf8b9 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_ai/shared.lua @@ -0,0 +1,44 @@ + +ENT.Base = "base_entity" +ENT.Type = "ai" + +ENT.PrintName = "Base SNPC" +ENT.Author = "" +ENT.Contact = "" +ENT.Purpose = "" +ENT.Instructions = "" + +ENT.AutomaticFrameAdvance = false + +--[[--------------------------------------------------------- + Name: OnRemove + Desc: Called just before entity is deleted +-----------------------------------------------------------]] +function ENT:OnRemove() +end + +--[[--------------------------------------------------------- + Name: PhysicsCollide + Desc: Called when physics collides. The table contains + data on the collision +-----------------------------------------------------------]] +function ENT:PhysicsCollide( data, physobj ) +end + +--[[--------------------------------------------------------- + Name: PhysicsUpdate + Desc: Called to update the physics .. or something. +-----------------------------------------------------------]] +function ENT:PhysicsUpdate( physobj ) +end + +--[[--------------------------------------------------------- + Name: SetAutomaticFrameAdvance + Desc: If you're not using animation you should turn this + off - it will save lots of bandwidth. +-----------------------------------------------------------]] +function ENT:SetAutomaticFrameAdvance( bUsingAnim ) + + self.AutomaticFrameAdvance = bUsingAnim + +end diff --git a/gamemodes/cod_custom/entities/entities/base_ai/tasks.lua b/gamemodes/cod_custom/entities/entities/base_ai/tasks.lua new file mode 100644 index 0000000..091bdb9 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_ai/tasks.lua @@ -0,0 +1,81 @@ + +--[[--------------------------------------------------------- + Task: PlaySequence + + Accepts: + + data.ID - sequence id + data.Name - sequence name (Must provide either id or name) + data.Wait - Optional. Should we wait for sequence to finish + data.Speed - Optional. Playback speed of sequence + data.Loop - Optional. Should the sequence be looped + +-----------------------------------------------------------]] +function ENT:TaskStart_PlaySequence( data ) + + local SequenceID = data.ID + + if ( data.Name ) then SequenceID = self:LookupSequence( data.Name ) end + + self:ResetSequence( SequenceID ) + self:SetNPCState( NPC_STATE_SCRIPT ) + + local Duration = self:SequenceDuration() + + if ( data.Speed && data.Speed > 0 ) then + + SequenceID = self:SetPlaybackRate( data.Speed ) + Duration = Duration / data.Speed + + end + + self.TaskSequenceEnd = CurTime() + Duration + self.Loop = data.Loop or false + +end + +function ENT:Task_PlaySequence( data ) + + -- Wait until sequence is finished + if ( CurTime() < self.TaskSequenceEnd or self.Loop ) then return end + + self:TaskComplete() + self:SetNPCState( NPC_STATE_NONE ) + + -- Clean up + self.TaskSequenceEnd = nil + +end + +--[[--------------------------------------------------------- + Task: FindEnemy + + Accepts: + + data.ID - sequence id + data.Name - sequence name (Must provide either id or name) + data.Wait - Optional. Should we wait for sequence to finish + data.Speed - Optional. Playback speed of sequence + +-----------------------------------------------------------]] +function ENT:TaskStart_FindEnemy( data ) + + local et = ents.FindInSphere( self:GetPos(), data.Radius or 512 ) + for k, v in ipairs( et ) do + + if ( v:IsValid() && v != self && v:GetClass() == data.Class ) then + + self:SetEnemy( v, true ) + self:UpdateEnemyMemory( v, v:GetPos() ) + self:TaskComplete() + return + end + + end + + self:SetEnemy( NULL ) + +end + +function ENT:Task_FindEnemy( data ) +end diff --git a/gamemodes/cod_custom/entities/entities/base_anim.lua b/gamemodes/cod_custom/entities/entities/base_anim.lua new file mode 100644 index 0000000..e6d4a1c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_anim.lua @@ -0,0 +1,104 @@ + +AddCSLuaFile() + +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.PrintName = "" +ENT.Author = "" +ENT.Contact = "" +ENT.Purpose = "" +ENT.Instructions = "" + +-- Defaulting this to OFF. This will automatically save bandwidth +-- on stuff that is already out there, but might break a few things +-- that are out there. I'm choosing to break those things because +-- there are a lot less of them that are actually using the animtime + +ENT.AutomaticFrameAdvance = false + +function ENT:SetAutomaticFrameAdvance( bUsingAnim ) + self.AutomaticFrameAdvance = bUsingAnim +end + + +function ENT:OnRemove() +end + + +function ENT:PhysicsCollide( data, physobj ) +end + + +function ENT:PhysicsUpdate( physobj ) +end + +if ( CLIENT ) then + + function ENT:Draw( flags ) + + self:DrawModel( flags ) + + end + + function ENT:DrawTranslucent( flags ) + + -- This is here just to make it backwards compatible. + -- You shouldn't really be drawing your model here unless it's translucent + + self:Draw( flags ) + + end + +end + +if ( SERVER ) then + + function ENT:OnTakeDamage( dmginfo ) + + --[[ + Msg( tostring(dmginfo) .. "\n" ) + Msg( "Inflictor:\t" .. tostring(dmginfo:GetInflictor()) .. "\n" ) + Msg( "Attacker:\t" .. tostring(dmginfo:GetAttacker()) .. "\n" ) + Msg( "Damage:\t" .. tostring(dmginfo:GetDamage()) .. "\n" ) + Msg( "Base Damage:\t" .. tostring(dmginfo:GetBaseDamage()) .. "\n" ) + Msg( "Force:\t" .. tostring(dmginfo:GetDamageForce()) .. "\n" ) + Msg( "Position:\t" .. tostring(dmginfo:GetDamagePosition()) .. "\n" ) + Msg( "Reported Pos:\t" .. tostring(dmginfo:GetReportedPosition()) .. "\n" ) -- ?? + --]] + + end + + + function ENT:Use( activator, caller, type, value ) + end + + + function ENT:StartTouch( entity ) + end + + + function ENT:EndTouch( entity ) + end + + + function ENT:Touch( entity ) + end + + --[[--------------------------------------------------------- + Name: Simulate + Desc: Controls/simulates the physics on the entity. + Officially the most complicated callback in the whole mod. + Returns 3 variables.. + 1. A SIM_ enum + 2. A vector representing the linear acceleration/force + 3. A vector represending the angular acceleration/force + If you're doing nothing you can return SIM_NOTHING + Note that you need to call ent:StartMotionController to tell the entity + to start calling this function.. + -----------------------------------------------------------]] + function ENT:PhysicsSimulate( phys, deltatime ) + return SIM_NOTHING + end + +end diff --git a/gamemodes/cod_custom/entities/entities/base_brush.lua b/gamemodes/cod_custom/entities/entities/base_brush.lua new file mode 100644 index 0000000..4eb4274 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_brush.lua @@ -0,0 +1,56 @@ + +ENT.Base = "base_entity" +ENT.Type = "brush" + +--[[--------------------------------------------------------- + Name: Initialize +-----------------------------------------------------------]] +function ENT:Initialize() +end + +--[[--------------------------------------------------------- + Name: StartTouch +-----------------------------------------------------------]] +function ENT:StartTouch( entity ) +end + +--[[--------------------------------------------------------- + Name: EndTouch +-----------------------------------------------------------]] +function ENT:EndTouch( entity ) +end + +--[[--------------------------------------------------------- + Name: Touch +-----------------------------------------------------------]] +function ENT:Touch( entity ) +end + +--[[--------------------------------------------------------- + Name: PassesTriggerFilters + Desc: Return true if this object should trigger us +-----------------------------------------------------------]] +function ENT:PassesTriggerFilters( entity ) + return true +end + +--[[--------------------------------------------------------- + Name: KeyValue + Desc: Called when a keyvalue is added to us +-----------------------------------------------------------]] +function ENT:KeyValue( key, value ) +end + +--[[--------------------------------------------------------- + Name: Think + Desc: Entity's think function. +-----------------------------------------------------------]] +function ENT:Think() +end + +--[[--------------------------------------------------------- + Name: OnRemove + Desc: Called just before entity is deleted +-----------------------------------------------------------]] +function ENT:OnRemove() +end diff --git a/gamemodes/cod_custom/entities/entities/base_entity/cl_init.lua b/gamemodes/cod_custom/entities/entities/base_entity/cl_init.lua new file mode 100644 index 0000000..41327c7 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_entity/cl_init.lua @@ -0,0 +1,24 @@ + +include( "shared.lua" ) + +--[[--------------------------------------------------------- + Name: Initialize + Desc: First function called. Use to set up your entity +-----------------------------------------------------------]] +function ENT:Initialize() +end + + +--[[--------------------------------------------------------- + Name: Think + Desc: Client Think - called every frame +-----------------------------------------------------------]] +function ENT:Think() +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: Called immediately after a "load" +-----------------------------------------------------------]] +function ENT:OnRestore() +end diff --git a/gamemodes/cod_custom/entities/entities/base_entity/init.lua b/gamemodes/cod_custom/entities/entities/base_entity/init.lua new file mode 100644 index 0000000..5eb772a --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_entity/init.lua @@ -0,0 +1,77 @@ + +AddCSLuaFile( "cl_init.lua" ) +AddCSLuaFile( "shared.lua" ) + +include( "shared.lua" ) +include( "outputs.lua" ) + +--[[--------------------------------------------------------- + Name: Initialize + Desc: First function called. Use to set up your entity +-----------------------------------------------------------]] +function ENT:Initialize() +end + +--[[--------------------------------------------------------- + Name: KeyValue + Desc: Called when a keyvalue is added to us +-----------------------------------------------------------]] +function ENT:KeyValue( key, value ) +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: The game has just been reloaded. This is usually the right place + to call the GetNW* functions to restore the script's values. +-----------------------------------------------------------]] +function ENT:OnRestore() +end + +--[[--------------------------------------------------------- + Name: AcceptInput + Desc: Accepts input, return true to override/accept input +-----------------------------------------------------------]] +function ENT:AcceptInput( name, activator, caller, data ) + return false +end + +--[[--------------------------------------------------------- + Name: UpdateTransmitState + Desc: Set the transmit state +-----------------------------------------------------------]] +function ENT:UpdateTransmitState() + return TRANSMIT_PVS +end + +--[[--------------------------------------------------------- + Name: Think + Desc: Entity's think function. +-----------------------------------------------------------]] +function ENT:Think() +end + +-- +-- Default generic spawn function +-- So you don't have to add one your entitie unless you want to. +-- +function ENT:SpawnFunction( ply, tr, ClassName ) + + if ( !tr.Hit ) then return end + + local SpawnPos = tr.HitPos + tr.HitNormal * 10 + local SpawnAng = ply:EyeAngles() + SpawnAng.p = 0 + SpawnAng.y = SpawnAng.y + 180 + + local ent = ents.Create( ClassName ) + ent:SetCreator( ply ) + ent:SetPos( SpawnPos ) + ent:SetAngles( SpawnAng ) + ent:Spawn() + ent:Activate() + + ent:DropToFloor() + + return ent + +end diff --git a/gamemodes/cod_custom/entities/entities/base_entity/outputs.lua b/gamemodes/cod_custom/entities/entities/base_entity/outputs.lua new file mode 100644 index 0000000..35cd4c0 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_entity/outputs.lua @@ -0,0 +1,80 @@ + +-- This is called from ENT:KeyValue(key,value) to store the output from +-- the map, it could also be called from ENT:AcceptInput I think, so if +-- ent_fire addoutput is used, we can store that too (that hasn't been +-- tested though). +-- Usage: self:StoreOutput("",",,,,") +-- If called from ENT:KeyValue, then the first parameter is the key, and +-- the second is value. +function ENT:StoreOutput( name, info ) + + -- Newer Source Engine games use this symbol as a delimiter + local rawData = string.Explode( "\x1B", info ) + if ( #rawData < 2 ) then + rawData = string.Explode( ",", info ) + end + + local Output = {} + Output.entities = rawData[1] or "" + Output.input = rawData[2] or "" + Output.param = rawData[3] or "" + Output.delay = tonumber( rawData[4] ) or 0 + Output.times = tonumber( rawData[5] ) or -1 + + self.m_tOutputs = self.m_tOutputs or {} + self.m_tOutputs[ name ] = self.m_tOutputs[ name ] or {} + + table.insert( self.m_tOutputs[ name ], Output ) + +end + +-- Nice helper function, this does all the work. Returns false if the +-- output should be removed from the list. +local function FireSingleOutput( output, this, activator, data ) + + if ( output.times == 0 ) then return false end + + local entitiesToFire = {} + + if ( output.entities == "!activator" ) then + entitiesToFire = { activator } + elseif ( output.entities == "!self" ) then + entitiesToFire = { this } + elseif ( output.entities == "!player" ) then + entitiesToFire = player.GetAll() + else + entitiesToFire = ents.FindByName( output.entities ) + end + + for _, ent in pairs( entitiesToFire ) do + ent:Fire( output.input, data or output.param, output.delay, activator, this ) + end + + if ( output.times ~= -1 ) then + output.times = output.times - 1 + end + + return ( output.times > 0 ) || ( output.times == -1 ) + +end + +-- This function is used to trigger an output. +function ENT:TriggerOutput( name, activator, data ) + + if ( !self.m_tOutputs ) then return end + if ( !self.m_tOutputs[ name ] ) then return end + + local OutputList = self.m_tOutputs[ name ] + + for idx = #OutputList, 1, -1 do + + if ( OutputList[ idx ] and !FireSingleOutput( OutputList[ idx ], self.Entity, activator, data ) ) then + + -- Shift the indexes so this loop doesn't fail later + table.remove( self.m_tOutputs[ name ], idx ) + + end + + end + +end diff --git a/gamemodes/cod_custom/entities/entities/base_entity/shared.lua b/gamemodes/cod_custom/entities/entities/base_entity/shared.lua new file mode 100644 index 0000000..a31a702 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_entity/shared.lua @@ -0,0 +1,6 @@ + +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.Spawnable = false +ENT.AdminOnly = false diff --git a/gamemodes/cod_custom/entities/entities/base_filter.lua b/gamemodes/cod_custom/entities/entities/base_filter.lua new file mode 100644 index 0000000..f4a226b --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_filter.lua @@ -0,0 +1,44 @@ + +ENT.Base = "base_entity" +ENT.Type = "filter" + +--[[--------------------------------------------------------- + Name: Initialize +-----------------------------------------------------------]] +function ENT:Initialize() +end + +--[[--------------------------------------------------------- + Name: KeyValue + Desc: Called when a keyvalue is added to us +-----------------------------------------------------------]] +function ENT:KeyValue( key, value ) +end + +--[[--------------------------------------------------------- + Name: Think + Desc: Entity's think function. +-----------------------------------------------------------]] +function ENT:Think() +end + +--[[--------------------------------------------------------- + Name: OnRemove + Desc: Called just before entity is deleted +-----------------------------------------------------------]] +function ENT:OnRemove() +end + +--[[--------------------------------------------------------- + Name: PassesFilter +-----------------------------------------------------------]] +function ENT:PassesFilter( trigger, ent ) + return true +end + +--[[--------------------------------------------------------- + Name: PassesDamageFilter +-----------------------------------------------------------]] +function ENT:PassesDamageFilter( dmg ) + return true +end diff --git a/gamemodes/cod_custom/entities/entities/base_gmodentity.lua b/gamemodes/cod_custom/entities/entities/base_gmodentity.lua new file mode 100644 index 0000000..c1fedde --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_gmodentity.lua @@ -0,0 +1,140 @@ + +AddCSLuaFile() +DEFINE_BASECLASS( "base_anim" ) + +ENT.Spawnable = false + +if ( CLIENT ) then + ENT.MaxWorldTipDistance = 256 + + function ENT:BeingLookedAtByLocalPlayer() + local ply = LocalPlayer() + if ( !IsValid( ply ) ) then return false end + + local view = ply:GetViewEntity() + local dist = self.MaxWorldTipDistance + dist = dist * dist + + -- If we're spectating a player, perform an eye trace + if ( view:IsPlayer() ) then + return view:EyePos():DistToSqr( self:GetPos() ) <= dist && view:GetEyeTrace().Entity == self + end + + -- If we're not spectating a player, perform a manual trace from the entity's position + local pos = view:GetPos() + + if ( pos:DistToSqr( self:GetPos() ) <= dist ) then + return util.TraceLine( { + start = pos, + endpos = pos + ( view:GetAngles():Forward() * dist ), + filter = view + } ).Entity == self + end + + return false + end + + function ENT:Think() + local text = self:GetOverlayText() + + if ( text != "" && self:BeingLookedAtByLocalPlayer() && !self:GetNoDraw() ) then + AddWorldTip( self:EntIndex(), text, 0.5, self:GetPos(), self ) + + halo.Add( { self }, color_white, 1, 1, 1, true, true ) + end + end +end + +function ENT:SetOverlayText( text ) + self:SetNWString( "GModOverlayText", text ) +end + +function ENT:GetOverlayText() + + local txt = self:GetNWString( "GModOverlayText" ) + + if ( txt == "" ) then + return "" + end + + if ( game.SinglePlayer() ) then + return txt + end + + local PlayerName = self:GetPlayerName() + + return txt .. "\n(" .. PlayerName .. ")" + +end + +function ENT:SetPlayer( ply ) + + self.Founder = ply + + if ( IsValid( ply ) ) then + + self:SetNWString( "FounderName", ply:Nick() ) + self.FounderSID = ply:SteamID64() + self.FounderIndex = ply:UniqueID() + + else + + self:SetNWString( "FounderName", "" ) + self.FounderSID = nil + self.FounderIndex = nil + + end + +end + +function ENT:GetPlayer() + + if ( self.Founder == nil ) then + + -- SetPlayer has not been called + return NULL + + elseif ( IsValid( self.Founder ) ) then + + -- Normal operations + return self.Founder + + end + + -- See if the player has left the server then rejoined + local ply = player.GetBySteamID64( self.FounderSID ) + if ( not IsValid( ply ) ) then + + -- Oh well + return NULL + + end + + -- Save us the check next time + self:SetPlayer( ply ) + return ply + +end + +function ENT:GetPlayerIndex() + + return self.FounderIndex or 0 + +end + +function ENT:GetPlayerSteamID() + + return self.FounderSID or "" + +end + +function ENT:GetPlayerName() + + local ply = self:GetPlayer() + if ( IsValid( ply ) ) then + return ply:Nick() + end + + return self:GetNWString( "FounderName" ) + +end diff --git a/gamemodes/cod_custom/entities/entities/base_nextbot/shared.lua b/gamemodes/cod_custom/entities/entities/base_nextbot/shared.lua new file mode 100644 index 0000000..8340126 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_nextbot/shared.lua @@ -0,0 +1,55 @@ + +AddCSLuaFile() + +ENT.Base = "base_entity" +ENT.PrintName = "" +ENT.Author = "" +ENT.Contact = "" +ENT.Purpose = "" +ENT.Instructions = "" +ENT.RenderGroup = RENDERGROUP_OPAQUE + +ENT.Type = "nextbot" + +function ENT:Initialize() +end + +if ( SERVER ) then + + -- + -- All of the AI logic is serverside - so we derive it from a + -- specialized class on the server. + -- + include( "sv_nextbot.lua" ) + +else + + --[[--------------------------------------------------------- + Name: Draw + Desc: Draw it! + -----------------------------------------------------------]] + function ENT:Draw() + self:DrawModel() + end + + --[[--------------------------------------------------------- + Name: DrawTranslucent + Desc: Draw translucent + -----------------------------------------------------------]] + function ENT:DrawTranslucent() + + -- This is here just to make it backwards compatible. + -- You shouldn't really be drawing your model here unless it's translucent + + self:Draw() + + end + + --[[--------------------------------------------------------- + Name: FireAnimationEvent + Desc: Called when an animation event is fired. Return true to suppress + -----------------------------------------------------------]] + function ENT:FireAnimationEvent( pos, ang, event, options ) + end + +end diff --git a/gamemodes/cod_custom/entities/entities/base_nextbot/sv_nextbot.lua b/gamemodes/cod_custom/entities/entities/base_nextbot/sv_nextbot.lua new file mode 100644 index 0000000..5ea6116 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_nextbot/sv_nextbot.lua @@ -0,0 +1,403 @@ + +-- +-- Name: NEXTBOT:BehaveStart +-- Desc: Called to initialize the behaviour.\n\n You shouldn't override this - it's used to kick off the coroutine that runs the bot's behaviour. \n\nThis is called automatically when the NPC is created, there should be no need to call it manually. +-- Arg1: +-- Ret1: +-- +function ENT:BehaveStart() + + self.BehaveThread = coroutine.create( function() self:RunBehaviour() end ) + +end + +function ENT:RunBehaviour() +end + +-- +-- Name: NEXTBOT:BehaveUpdate +-- Desc: Called to update the bot's behaviour +-- Arg1: number|interval|How long since the last update +-- Ret1: +-- +function ENT:BehaveUpdate( fInterval ) + + if ( !self.BehaveThread ) then return end + + -- + -- Give a silent warning to developers if RunBehaviour has returned + -- + if ( coroutine.status( self.BehaveThread ) == "dead" ) then + + self.BehaveThread = nil + Msg( self, " Warning: ENT:RunBehaviour() has finished executing\n" ) + + return + + end + + -- + -- Continue RunBehaviour's execution + -- + local ok, message = coroutine.resume( self.BehaveThread ) + if ( ok == false ) then + + self.BehaveThread = nil + ErrorNoHalt( self, " Error: ", message, "\n" ) + + end + +end + +-- +-- Name: NEXTBOT:BodyUpdate +-- Desc: Called to update the bot's animation +-- Arg1: +-- Ret1: +-- +function ENT:BodyUpdate() + + local act = self:GetActivity() + + -- + -- This helper function does a lot of useful stuff for us. + -- It sets the bot's move_x move_y pose parameters, sets their animation speed relative to the ground speed, and calls FrameAdvance. + -- + if ( act == ACT_RUN || act == ACT_WALK ) then + + self:BodyMoveXY() + + -- BodyMoveXY() already calls FrameAdvance, calling it twice will affect animation playback, specifically on layers + return + + end + + -- + -- If we're not walking or running we probably just want to update the anim system + -- + self:FrameAdvance() + +end + +-- +-- Name: NEXTBOT:OnLeaveGround +-- Desc: Called when the bot's feet leave the ground - for whatever reason +-- Arg1: Entity|ent|Entity that the NextBot "jumped" from +-- Ret1: +-- +function ENT:OnLeaveGround( ent ) + + --MsgN( "OnLeaveGround", ent ) + +end + +-- +-- Name: NEXTBOT:OnLeaveGround +-- Desc: Called when the bot's feet return to the ground +-- Arg1: Entity|ent|Entity that the NextBot landed on +-- Ret1: +-- +function ENT:OnLandOnGround( ent ) + + --MsgN( "OnLandOnGround", ent ) + +end + +-- +-- Name: NEXTBOT:OnStuck +-- Desc: Called when the bot thinks it is stuck +-- Arg1: +-- Ret1: +-- +function ENT:OnStuck() + + --MsgN( "OnStuck" ) + +end + +-- +-- Name: NEXTBOT:OnUnStuck +-- Desc: Called when the bot thinks it is un-stuck +-- Arg1: +-- Ret1: +-- +function ENT:OnUnStuck() + + --MsgN( "OnUnStuck" ) + +end + +-- +-- Name: NEXTBOT:OnInjured +-- Desc: Called when the bot gets hurt +-- Arg1: CTakeDamageInfo|info|damage info +-- Ret1: +-- +function ENT:OnInjured( damageinfo ) + +end + +-- +-- Name: NEXTBOT:OnKilled +-- Desc: Called when the bot gets killed +-- Arg1: CTakeDamageInfo|info|damage info +-- Ret1: +-- +function ENT:OnKilled( dmginfo ) + + hook.Run( "OnNPCKilled", self, dmginfo:GetAttacker(), dmginfo:GetInflictor() ) + + self:BecomeRagdoll( dmginfo ) + +end + +-- +-- Name: NEXTBOT:OnOtherKilled +-- Desc: Called when someone else or something else has been killed +-- Arg1: Entity|victim|entity that was killed +-- Arg2: CTakeDamageInfo|info|damage info +-- Ret1: +-- +function ENT:OnOtherKilled( victim, info ) + + --MsgN( "OnOtherKilled", victim, info ) + +end + +function ENT:OnContact( ent ) + + --MsgN( "OnContact", ent ) + +end + +function ENT:OnIgnite() + + --MsgN( "OnIgnite" ) + +end + +function ENT:OnNavAreaChanged( old, new ) + + --MsgN( "OnNavAreaChanged", old, new ) + +end + +-- +-- Name: NextBot:FindSpots +-- Desc: Returns a table of hiding spots. +-- Arg1: table|specs|This table should contain the search info.\n\n * 'type' - the type (either 'hiding')\n * 'pos' - the position to search.\n * 'radius' - the radius to search.\n * 'stepup' - the highest step to step up.\n * 'stepdown' - the highest we can step down without being hurt. +-- Ret1: table|An unsorted table of tables containing\n * 'vector' - the position of the hiding spot\n * 'distance' - the distance to that position +-- +function ENT:FindSpots( tbl ) + + local tbl = tbl or {} + + tbl.pos = tbl.pos or self:WorldSpaceCenter() + tbl.radius = tbl.radius or 1000 + tbl.stepdown = tbl.stepdown or 20 + tbl.stepup = tbl.stepup or 20 + tbl.type = tbl.type or 'hiding' + + -- Use a path to find the length + local path = Path( "Follow" ) + + -- Find a bunch of areas within this distance + local areas = navmesh.Find( tbl.pos, tbl.radius, tbl.stepdown, tbl.stepup ) + + local found = {} + + -- In each area + for _, area in pairs( areas ) do + + -- get the spots + local spots + + if ( tbl.type == 'hiding' ) then spots = area:GetHidingSpots() end + + for k, vec in pairs( spots ) do + + -- Work out the length, and add them to a table + path:Invalidate() + + path:Compute( self, vec, 1 ) -- TODO: This is bullshit - it's using 'self.pos' not tbl.pos + + table.insert( found, { vector = vec, distance = path:GetLength() } ) + + end + + end + + return found + +end + +-- +-- Name: NextBot:FindSpot +-- Desc: Like FindSpots but only returns a vector +-- Arg1: string|type|Either "random", "near", "far" +-- Arg2: table|options|A table containing a bunch of tweakable options. See the function definition for more details +-- Ret1: vector|If it finds a spot it will return a vector. If not it will return nil. +-- +function ENT:FindSpot( type, options ) + + local spots = self:FindSpots( options ) + if ( !spots || #spots == 0 ) then return end + + if ( type == "near" ) then + + table.SortByMember( spots, "distance", true ) + return spots[1].vector + + end + + if ( type == "far" ) then + + table.SortByMember( spots, "distance", false ) + return spots[1].vector + + end + + -- random + return spots[ math.random( 1, #spots ) ].vector + +end + +-- +-- Name: NextBot:HandleStuck +-- Desc: Called from Lua when the NPC is stuck. This should only be called from the behaviour coroutine - so if you want to override this function and do something special that yields - then go for it.\n\nYou should always call self.loco:ClearStuck() in this function to reset the stuck status - so it knows it's unstuck. +-- Arg1: +-- Ret1: +-- +function ENT:HandleStuck() + + -- + -- Clear the stuck status + -- + self.loco:ClearStuck() + +end + +-- +-- Name: NextBot:MoveToPos +-- Desc: To be called in the behaviour coroutine only! Will yield until the bot has reached the goal or is stuck +-- Arg1: Vector|pos|The position we want to get to +-- Arg2: table|options|A table containing a bunch of tweakable options. See the function definition for more details +-- Ret1: string|Either "failed", "stuck", "timeout" or "ok" - depending on how the NPC got on +-- +function ENT:MoveToPos( pos, options ) + + local options = options or {} + + local path = Path( "Follow" ) + path:SetMinLookAheadDistance( options.lookahead or 300 ) + path:SetGoalTolerance( options.tolerance or 20 ) + path:Compute( self, pos ) + + if ( !path:IsValid() ) then return "failed" end + + while ( path:IsValid() ) do + + path:Update( self ) + + -- Draw the path (only visible on listen servers or single player) + if ( options.draw ) then + path:Draw() + end + + -- If we're stuck then call the HandleStuck function and abandon + if ( self.loco:IsStuck() ) then + + self:HandleStuck() + + return "stuck" + + end + + -- + -- If they set maxage on options then make sure the path is younger than it + -- + if ( options.maxage ) then + if ( path:GetAge() > options.maxage ) then return "timeout" end + end + + -- + -- If they set repath then rebuild the path every x seconds + -- + if ( options.repath ) then + if ( path:GetAge() > options.repath ) then path:Compute( self, pos ) end + end + + coroutine.yield() + + end + + return "ok" + +end + +-- +-- Name: NextBot:PlaySequenceAndWait +-- Desc: To be called in the behaviour coroutine only! Plays an animation sequence and waits for it to end before returning. +-- Arg1: string|name|The sequence name +-- Arg2: number|the speed (default 1) +-- Ret1: +-- +function ENT:PlaySequenceAndWait( name, speed ) + + local len = self:SetSequence( name ) + speed = speed or 1 + + self:ResetSequenceInfo() + self:SetCycle( 0 ) + self:SetPlaybackRate( speed ) + + -- wait for it to finish + coroutine.wait( len / speed ) + +end + +-- +-- Name: NEXTBOT:Use +-- Desc: Called when a player 'uses' the entity +-- Arg1: entity|activator|The entity that activated the use +-- Arg2: entity|called|The entity that called the use +-- Arg3: number|type|The type of use (USE_ON, USE_OFF, USE_TOGGLE, USE_SET) +-- Arg4: number|value|Any passed value +-- Ret1: +-- +function ENT:Use( activator, caller, type, value ) +end + +-- +-- Name: NEXTBOT:Think +-- Desc: Called periodically +-- Arg1: +-- Ret1: +-- +function ENT:Think() +end + +-- +-- Name: NEXTBOT:HandleAnimEvent +-- Desc: Called for serverside events +-- +function ENT:HandleAnimEvent( event, eventtime, cycle, typee, options ) +end + +-- +-- Name: NEXTBOT:OnTraceAttack +-- Desc: Called serverside when the nextbot is attacked +-- +function ENT:OnTraceAttack( dmginfo, dir, trace ) + + hook.Run( "ScaleNPCDamage", self, trace.HitGroup, dmginfo ) + +end + +-- Called when we see a player or another nextbot +function ENT:OnEntitySight( subject ) +end + +-- Called when we see lose sight of a player or a nextbot we saw earlier +function ENT:OnEntitySightLost( subject ) +end diff --git a/gamemodes/cod_custom/entities/entities/base_point.lua b/gamemodes/cod_custom/entities/entities/base_point.lua new file mode 100644 index 0000000..1bf1f8c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/base_point.lua @@ -0,0 +1,45 @@ + +ENT.Base = "base_entity" +ENT.Type = "point" + +--[[--------------------------------------------------------- + Name: Initialize + Desc: First function called. Use to set up your entity +-----------------------------------------------------------]] +function ENT:Initialize() +end + +--[[--------------------------------------------------------- + Name: KeyValue + Desc: Called when a keyvalue is added to us +-----------------------------------------------------------]] +function ENT:KeyValue( key, value ) +end + +--[[--------------------------------------------------------- + Name: Think + Desc: Entity's think function. +-----------------------------------------------------------]] +function ENT:Think() +end + +-- +-- Name: OnRemove +-- Desc: Called just before entity is deleted +-- +function ENT:OnRemove() +end + +-- +-- UpdateTransmitState +-- +function ENT:UpdateTransmitState() + + -- + -- The default behaviour for point entities is to not be networked. + -- If you're deriving an entity and want it to appear clientside, override this + -- TRANSMIT_ALWAYS = always send, TRANSMIT_PVS = send if in PVS + -- + return TRANSMIT_NEVER + +end diff --git a/gamemodes/cod_custom/entities/entities/diprip_start_team_blue.lua b/gamemodes/cod_custom/entities/entities/diprip_start_team_blue.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/diprip_start_team_blue.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/diprip_start_team_red.lua b/gamemodes/cod_custom/entities/entities/diprip_start_team_red.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/diprip_start_team_red.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/dys_spawn_point.lua b/gamemodes/cod_custom/entities/entities/dys_spawn_point.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/dys_spawn_point.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/env_skypaint.lua b/gamemodes/cod_custom/entities/entities/env_skypaint.lua new file mode 100644 index 0000000..bfabe96 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/env_skypaint.lua @@ -0,0 +1,135 @@ + +AddCSLuaFile() + +ENT.Type = "point" +ENT.DisableDuplicator = true + +-- +-- Make this entity always networked +-- +function ENT:UpdateTransmitState() return TRANSMIT_ALWAYS end + +-- +-- Networked / Saved Data +-- +function ENT:SetupDataTables() + + self:NetworkVar( "Vector", 0, "TopColor", { KeyName = "topcolor", Edit = { type = "VectorColor", category = "Main", order = 1 } } ) + self:NetworkVar( "Vector", 1, "BottomColor", { KeyName = "bottomcolor", Edit = { type = "VectorColor", category = "Main", title = "Color Bottom", order = 2 } } ) + self:NetworkVar( "Float", 0, "FadeBias", { KeyName = "fadebias", Edit = { type = "Float", category = "Main", min = 0, max = 1, order = 3 } } ) + + self:NetworkVar( "Float", 4, "SunSize", { KeyName = "sunsize", Edit = { type = "Float", min = 0, max = 10, category = "Sun" } } ) + self:NetworkVar( "Vector", 2, "SunNormal", { KeyName = "sunnormal" } ) -- No editing this - it's for coders only + self:NetworkVar( "Vector", 3, "SunColor", { KeyName = "suncolor", Edit = { type = "VectorColor", category = "Sun" } } ) + + self:NetworkVar( "Float", 2, "DuskScale", { KeyName = "duskscale", Edit = { type = "Float", min = 0, max = 1, category = "Dusk" } } ) + self:NetworkVar( "Float", 3, "DuskIntensity", { KeyName = "duskintensity", Edit = { type = "Float", min = 0, max = 10, category = "Dusk" } } ) + self:NetworkVar( "Vector", 4, "DuskColor", { KeyName = "duskcolor", Edit = { type = "VectorColor", category = "Dusk" } } ) + + self:NetworkVar( "Bool", 0, "DrawStars", { KeyName = "drawstars", Edit = { type = "Boolean", category = "Stars", order = 10 } } ) + self:NetworkVar( "String", 0, "StarTexture", { KeyName = "startexture", Edit = { type = "Texture", group = "Stars", category = "Stars", order = 11 } } ) + + self:NetworkVar( "Int", 0, "StarLayers", { KeyName = "starlayers", Edit = { type = "Int", min = 1, max = 3, category = "Stars", order = 12 } } ) + self:NetworkVarElement( "Angle", 0, 'p', "StarScale", { KeyName = "starscale", Edit = { type = "Float", min = 0, max = 5, category = "Stars", order = 13 } } ) + self:NetworkVarElement( "Angle", 0, 'y', "StarFade", { KeyName = "starfade", Edit = { type = "Float", min = 0, max = 5, category = "Stars", order = 14 } } ) + self:NetworkVarElement( "Angle", 0, 'r', "StarSpeed", { KeyName = "starspeed", Edit = { type = "Float", min = 0, max = 2, category = "Stars", order = 15 } } ) + + self:NetworkVar( "Float", 1, "HDRScale", { KeyName = "hdrscale", Edit = { type = "Float", category = "Main", min = 0, max = 1, order = 4 } } ) + + -- + -- Entity defaults + -- + if ( SERVER ) then + + self:SetTopColor( Vector( 0.2, 0.5, 1.0 ) ) + self:SetBottomColor( Vector( 0.8, 1.0, 1.0 ) ) + self:SetFadeBias( 1 ) + + + self:SetSunNormal( Vector( 0.4, 0.0, 0.01 ) ) + self:SetSunColor( Vector( 0.2, 0.1, 0.0 ) ) + self:SetSunSize( 2.0 ) + + self:SetDuskColor( Vector( 1.0, 0.2, 0.0 ) ) + self:SetDuskScale( 1 ) + self:SetDuskIntensity( 1 ) + + self:SetDrawStars( true ) + self:SetStarLayers( 1 ) + self:SetStarSpeed( 0.01 ) + self:SetStarScale( 0.5 ) + self:SetStarFade( 1.5 ) + self:SetStarTexture( "skybox/starfield" ) + + self:SetHDRScale( 0.66 ) + + end + +end + +function ENT:Initialize() +end + +function ENT:KeyValue( key, value ) + + if ( self:SetNetworkKeyValue( key, value ) ) then + return + end + + -- TODO: sunposmethod + -- 0 : "Custom - Use the Sun Normal to position the sun" + -- 1 : "Automatic - Find a env_sun entity and use that" + +end + +function ENT:Think() + + -- + -- Find an env_sun - if we don't already have one. + -- + if ( SERVER && self.EnvSun == nil ) then + + -- so this closure only gets called once - even if it fails + self.EnvSun = false + + local list = ents.FindByClass( "env_sun" ) + if ( #list > 0 ) then + self.EnvSun = list[1] + end + + end + + -- + -- If we have a sun - force our sun normal to its value + -- + if ( SERVER && IsValid( self.EnvSun ) ) then + + local vec = self.EnvSun:GetInternalVariable( "m_vDirection" ) + + if ( isvector( vec ) ) then + self:SetSunNormal( vec ) + end + + end + + -- + -- Become the active sky again if we're not already + -- + if ( CLIENT && g_SkyPaint != self ) then + + if ( !IsValid( g_SkyPaint ) ) then + g_SkyPaint = self + end + + end + +end + +-- +-- To prevent server insanity - only let admins edit the sky. +-- +function ENT:CanEditVariables( ply ) + + return ply:IsAdmin() + +end diff --git a/gamemodes/cod_custom/entities/entities/gmod_hands.lua b/gamemodes/cod_custom/entities/entities/gmod_hands.lua new file mode 100644 index 0000000..7c858e1 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/gmod_hands.lua @@ -0,0 +1,67 @@ + +AddCSLuaFile() + +ENT.Type = "anim" +ENT.RenderGroup = RENDERGROUP_OTHER + +function ENT:Initialize() + + hook.Add( "OnViewModelChanged", self, self.ViewModelChanged ) + + self:SetNotSolid( true ) + self:DrawShadow( false ) + self:SetTransmitWithParent( true ) -- Transmit only when the viewmodel does! + +end + +function ENT:DoSetup( ply, spec ) + + -- Set these hands to the player + ply:SetHands( self ) + self:SetOwner( ply ) + + -- Which hands should we use? Let the gamemode decide + hook.Call( "PlayerSetHandsModel", GAMEMODE, spec or ply, self ) + + -- Attach them to the viewmodel + local vm = ( spec or ply ):GetViewModel( 0 ) + self:AttachToViewmodel( vm ) + + vm:DeleteOnRemove( self ) + ply:DeleteOnRemove( self ) + +end + +function ENT:GetPlayerColor() + + -- + -- Make sure there's an owner and they have this function + -- before trying to call it! + -- + local owner = self:GetOwner() + if ( !IsValid( owner ) ) then return end + if ( !owner.GetPlayerColor ) then return end + + return owner:GetPlayerColor() + +end + +function ENT:ViewModelChanged( vm, old, new ) + + -- Ignore other peoples viewmodel changes! + if ( vm:GetOwner() != self:GetOwner() ) then return end + + self:AttachToViewmodel( vm ) + +end + +function ENT:AttachToViewmodel( vm ) + + self:AddEffects( EF_BONEMERGE ) + self:SetParent( vm ) + self:SetMoveType( MOVETYPE_NONE ) + + self:SetPos( vector_origin ) + self:SetAngles( angle_zero ) + +end diff --git a/gamemodes/cod_custom/entities/entities/gmod_player_start.lua b/gamemodes/cod_custom/entities/entities/gmod_player_start.lua new file mode 100644 index 0000000..ecee294 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/gmod_player_start.lua @@ -0,0 +1,81 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" + +function ENT:Initialize() + + if ( self.RedTeam or self.GreenTeam or self.YellowTeam or self.BlueTeam ) then + + -- If any of these are set to true then + -- make sure that any that aren't setup are + -- set to false. + + self.BlueTeam = self.BlueTeam or false + self.GreenTeam = self.GreenTeam or false + self.YellowTeam = self.YellowTeam or false + self.RedTeam = self.RedTeam or false + + else + + -- If none are set then make it so that they all + -- are set to true since any team can spawn here. + -- This will also happen if we don't have the "spawnflags" + -- keyvalue setup. + + self.BlueTeam = true + self.GreenTeam = true + self.YellowTeam = true + self.RedTeam = true + + end + +end + +function ENT:KeyValue( key, value ) + + if ( key == "spawnflags" ) then + + local sf = tonumber( value ) + + for i = 15, 0, -1 do + + local bit = math.pow( 2, i ) + + -- Quick bit if bitwise math to figure out if the spawnflags + -- represent red/blue/green or yellow. + -- We have to use booleans since the TEAM_ identifiers + -- aren't setup at this point. + -- (this would be easier if we had bitwise operators in Lua) + + if ( ( sf - bit ) >= 0 ) then + + if ( bit == 8 ) then self.RedTeam = true + elseif ( bit == 4 ) then self.GreenTeam = true + elseif ( bit == 2 ) then self.YellowTeam = true + elseif ( bit == 1 ) then self.BlueTeam = true + end + + sf = sf - bit + + else + + if ( bit == 8 ) then self.RedTeam = false + elseif ( bit == 4 ) then self.GreenTeam = false + elseif ( bit == 2 ) then self.YellowTeam = false + elseif ( bit == 1 ) then self.BlueTeam = false + end + + end + + end + + end + +end diff --git a/gamemodes/cod_custom/entities/entities/info_player_allies.lua b/gamemodes/cod_custom/entities/entities/info_player_allies.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_allies.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_axis.lua b/gamemodes/cod_custom/entities/entities/info_player_axis.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_axis.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_blue.lua b/gamemodes/cod_custom/entities/entities/info_player_blue.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_blue.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_coop.lua b/gamemodes/cod_custom/entities/entities/info_player_coop.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_coop.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_counterterrorist.lua b/gamemodes/cod_custom/entities/entities/info_player_counterterrorist.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_counterterrorist.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_deathmatch.lua b/gamemodes/cod_custom/entities/entities/info_player_deathmatch.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_deathmatch.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_desperado.lua b/gamemodes/cod_custom/entities/entities/info_player_desperado.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_desperado.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_fof.lua b/gamemodes/cod_custom/entities/entities/info_player_fof.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_fof.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_human.lua b/gamemodes/cod_custom/entities/entities/info_player_human.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_human.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_knight.lua b/gamemodes/cod_custom/entities/entities/info_player_knight.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_knight.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_pirate.lua b/gamemodes/cod_custom/entities/entities/info_player_pirate.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_pirate.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_red.lua b/gamemodes/cod_custom/entities/entities/info_player_red.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_red.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_terrorist.lua b/gamemodes/cod_custom/entities/entities/info_player_terrorist.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_terrorist.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_vigilante.lua b/gamemodes/cod_custom/entities/entities/info_player_vigilante.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_vigilante.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_viking.lua b/gamemodes/cod_custom/entities/entities/info_player_viking.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_viking.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_zombie.lua b/gamemodes/cod_custom/entities/entities/info_player_zombie.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_zombie.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_player_zombiemaster.lua b/gamemodes/cod_custom/entities/entities/info_player_zombiemaster.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_player_zombiemaster.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_spawnpoint.lua b/gamemodes/cod_custom/entities/entities/info_spawnpoint.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_spawnpoint.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_survivor_position.lua b/gamemodes/cod_custom/entities/entities/info_survivor_position.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_survivor_position.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/info_survivor_rescue.lua b/gamemodes/cod_custom/entities/entities/info_survivor_rescue.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/info_survivor_rescue.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/ins_spawnpoint.lua b/gamemodes/cod_custom/entities/entities/ins_spawnpoint.lua new file mode 100644 index 0000000..ff5d67c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/ins_spawnpoint.lua @@ -0,0 +1,10 @@ + +-- This is just a simple point entity. + +-- We only use it to represent the position and angle of a spawn point +-- So we don't have to do anything here because the baseclass will +-- take care of the basics + +-- This file only exists so that the entity is created + +ENT.Type = "point" diff --git a/gamemodes/cod_custom/entities/entities/lua_run.lua b/gamemodes/cod_custom/entities/entities/lua_run.lua new file mode 100644 index 0000000..18735ce --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/lua_run.lua @@ -0,0 +1,63 @@ + +-- A spawnflag constant for addons +SF_LUA_RUN_ON_SPAWN = 1 + +ENT.Type = "point" +ENT.DisableDuplicator = true + +AccessorFunc( ENT, "m_bDefaultCode", "DefaultCode" ) + +function ENT:Initialize() + + -- If the entity has its first spawnflag set, run the code automatically + if ( self:HasSpawnFlags( SF_LUA_RUN_ON_SPAWN ) ) then + self:RunCode( self, self, self:GetDefaultCode() ) + end + +end + +function ENT:KeyValue( key, value ) + + if ( key == "Code" ) then + self:SetDefaultCode( value ) + end + +end + +function ENT:SetupGlobals( activator, caller ) + + ACTIVATOR = activator + CALLER = caller + + if ( IsValid( activator ) && activator:IsPlayer() ) then + TRIGGER_PLAYER = activator + end + +end + +function ENT:KillGlobals() + + ACTIVATOR = nil + CALLER = nil + TRIGGER_PLAYER = nil + +end + +function ENT:RunCode( activator, caller, code ) + + self:SetupGlobals( activator, caller ) + + RunString( code, "lua_run#" .. self:EntIndex() ) + + self:KillGlobals() + +end + +function ENT:AcceptInput( name, activator, caller, data ) + + if ( name == "RunCode" ) then self:RunCode( activator, caller, self:GetDefaultCode() ) return true end + if ( name == "RunPassedCode" ) then self:RunCode( activator, caller, data ) return true end + + return false + +end diff --git a/gamemodes/cod_custom/entities/entities/mwii_down_npc/shared.lua b/gamemodes/cod_custom/entities/entities/mwii_down_npc/shared.lua new file mode 100644 index 0000000..01c3a94 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/mwii_down_npc/shared.lua @@ -0,0 +1,267 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.AutomaticFrameAdvance = true + +if SERVER then + local function TransferModelData(ent, from) + local ent1Model = from:GetModel() + local ent1Skin = from:GetSkin() + local ent1BodyGroups = from:GetNumBodyGroups() + ent:SetModel(ent1Model) + ent:SetSkin(ent1Skin) + for i = 0, ent1BodyGroups - 1 do + ent:SetBodygroup(i, from:GetBodygroup(i)) + end + end + + function ENT:CrawlBack(go) + local tr = util.TraceLine({ + start = self:GetBonePosition(self:LookupBone("ValveBiped.Bip01_Head1")), + endpos = self:GetBonePosition(self:LookupBone("ValveBiped.Bip01_Head1"))-self:GetForward()*4, + filter = function( ent ) if ent != self.NPC then return true end end + }) + local tr2 = util.TraceLine({ + start = self:GetBonePosition(self:LookupBone("ValveBiped.Bip01_Spine")), + endpos = self:GetBonePosition(self:LookupBone("ValveBiped.Bip01_Spine"))-Vector(0,0,8), + filter = function( ent ) if ent != self.NPC then return true end end + }) + local tr3 = util.TraceLine({ + start = self:GetBonePosition(self:LookupBone("ValveBiped.Bip01_Spine")), + endpos = self:GetBonePosition(self:LookupBone("ValveBiped.Bip01_Spine"))-Vector(0,0,4), + filter = function( ent ) if ent != self.NPC then return true end end + }) + if tr3.Hit then + self:SetPos(self:GetPos()+Vector(0,0,1)) + end + if not tr2.Hit then + self:SetPos(self:GetPos()-Vector(0,0,1)) + end + local anim = "laststand_crawl_backward" + if go then + if self.CanShoot then + anim = anim.."_wep" + end + if not tr.Hit then + self:SetPos(self:GetPos()-self:GetForward()*0.3) + self:SetSequence(anim) + else + anim = "laststand_idle" + if self.CanShoot then + anim = anim.."_wep" + end + self:SetSequence(anim) + end + else + anim = "laststand_idle" + if self.CanShoot then + anim = anim.."_wep" + end + self:SetSequence(anim) + end + end + + function ENT:Initialize() + self:SetModel("models/player/barney.mdl") + self:ResetSequence("laststand_down") + self:SetNoDraw(true) + self:DrawShadow(false) + self.Reviving = false + self.TimeBeforeReviving = CurTime() + math.random(5,15) + self.NPC:SetNoDraw(true) + self.NPC.CantDamageMWII = true + self:SetNWFloat("DTeam", self.NPC.Team) + local wep = self.NPC:GetActiveWeapon() + if IsValid(wep) then + wep:SetClip1(0) + end + + local tar = self.NPC + timer.Simple(0.5, function() + if !IsValid(tar) then return end + tar.CantDamageMWII = false + end) + timer.Simple(1.5, function() + if !IsValid(self) then return end + self.Ready = true + + self:ResetSequence("laststand_idle_wep") + self.ShootDelay = CurTime() + 1 + self.TimeBeforeReviving = CurTime() + math.random(10,20) + self.CanShoot = true + + local bd = ents.Create("base_anim") + bd:SetModel("models/weapons/w_pistol.mdl") + bd:SetParent(self) + bd:AddEffects(1) + bd:Spawn() + self:DeleteOnRemove(bd) + + timer.Simple(20, function() + if !IsValid(self) then return end + self.NPC:SetHealth(1) + self.NPC:TakeDamage(self.NPC:Health()) + self.NPC:TakeDamage(999999999) + end) + end) + + local bd = ents.Create("base_anim") + bd:SetParent(self) + bd:AddEffects(1) + bd:Spawn() + self.bd = bd + TransferModelData(bd, self.NPC) + self:DeleteOnRemove(bd) + end + + function ENT:Revive(fast) + local ow = self.NPC + self.Reviving = true + self:SetCycle(0) + if not fast then + self:ResetSequence("laststand_selfrevive") + timer.Simple(5, function() + if !IsValid(self) then return end + + self:SetCycle(0) + self:ResetSequence("laststand_standup") + end) + timer.Simple(6, function() + if !IsValid(ow) then return end + + self.NPC = nil + ow:ManipulateBonePosition(ow:LookupBone("ValveBiped.Bip01_Pelvis"), Vector(0, 0, 0)) + ow:ManipulateBoneAngles(ow:LookupBone("ValveBiped.Bip01_Pelvis"), Angle(0, 0, 0)) + ow:SetNoDraw(false) + ow:SetRenderMode(RENDERMODE_NORMAL) + ow:DrawShadow(true) + ow.Downed = false + ow:RemoveEFlags(EFL_NO_THINK_FUNCTION) + local wep = ow:GetActiveWeapon() + if IsValid(wep) then + wep:SetNoDraw(false) + end + ow:SetNWEntity('MWIIRag', NULL) + end) + else + self:ResetSequence("laststand_standup") + timer.Simple(1, function() + if !IsValid(ow) then return end + + self.NPC = nil + ow:ManipulateBonePosition(ow:LookupBone("ValveBiped.Bip01_Pelvis"), Vector(0, 0, 0)) + ow:ManipulateBoneAngles(ow:LookupBone("ValveBiped.Bip01_Pelvis"), Angle(0, 0, 0)) + ow:SetNoDraw(false) + ow:SetRenderMode(RENDERMODE_NORMAL) + ow:DrawShadow(true) + ow.Downed = false + ow:RemoveEFlags(EFL_NO_THINK_FUNCTION) + local wep = ow:GetActiveWeapon() + if IsValid(wep) then + wep:SetNoDraw(false) + end + ow:SetNWEntity('MWIIRag', NULL) + end) + end + end + + function ENT:AngleToEnemy(enemy) + local selfAngles = self:GetAngles() + local enemyPos = enemy:GetPos() + local angleToEnemy = (enemyPos - self:GetPos()):Angle() + angleToEnemy.x = 0 + angleToEnemy.z = 0 + local diff = math.AngleDifference(angleToEnemy.y, selfAngles.y) + return math.abs(diff) + end + + function ENT:Think() + local ow = self.NPC + if !IsValid(ow) or ow:Health() <= 0 or ow.Takedowning then + self:Remove() + else + ow:SetNoDraw(true) + ow:SetRenderMode(RENDERMODE_NONE) + ow.AlreadyWasDowned = true + ow:DrawShadow(false) + if ow.IsVJBaseSNPC then + ow.HasDeathAnimation = false + end + ow:AddEFlags(EFL_NO_THINK_FUNCTION) + ow:SetNWEntity('MWIIRag', self.bd) + ow:ManipulateBonePosition(ow:LookupBone("ValveBiped.Bip01_Pelvis"), Vector(0, 0, -20)) + ow:ManipulateBoneAngles(ow:LookupBone("ValveBiped.Bip01_Pelvis"), Angle(0, 0, -90)) + local wep = ow:GetActiveWeapon() + if IsValid(wep) then + wep:SetNoDraw(true) + end + + local att = self.Finisher + + if not self.Reviving then + local near, dist = nil, math.huge + for _, ent in ipairs(ents.FindInSphere(self:GetPos(), 2048)) do + if (ent:IsPlayer() and !GetConVar("ai_ignoreplayers"):GetBool() or ent.IsMWIINPC and ent:IsMWIINPC()) and !ow:MWIIsFriend(ent, true) and ent:Health() > 0 and ow:Visible(ent) then + local dis = ent:GetPos():DistToSqr(self:GetPos()) + if dis < dist then + near = ent + dist = dis + end + end + end + if IsValid(near) then + local sang = self:GetAngles() + local direction = (near:GetPos()-self:GetPos()):GetNormalized():Angle() + direction.x = 0 + direction.z = 0 + local add, notadd = (direction.y-sang.y)/50, (direction.y-sang.y)/20 + local add2 = math.AngleDifference( direction.y, sang.y ) + local adding = sang+(Angle(0,add2/50,0)) + self:SetAngles(adding) + ow:SetAngles(self:GetAngles()) + ow:SetPos(self:GetPos()) + + if self.Ready and (IsValid(ow.TargetReviver) and not ow.TargetReviver.InSeqMWII or !IsValid(ow.TargetReviver)) then + self:CrawlBack(dist < 200000 and self:AngleToEnemy(near) < 30) + else + if self.Ready then + self:CrawlBack(false) + end + end + + if self.CanShoot and self.ShootDelay < CurTime() and self:AngleToEnemy(near) < 15 then + self.ShootDelay = CurTime() + math.Rand(0.2,2) + ow:EmitSound("weapons/pistol/pistol_fire3.wav", 90, math.random(90,110), 1, CHAN_WEAPON) + ow:FireBullets({ + Damage = 10, + Spread = VectorRand(0.00, 0.20), + Dir = (near:GetPos()-self:EyePos()):GetNormalized(), + Src = self:GetBonePosition(self:LookupBone("ValveBiped.Bip01_R_Hand")), + }) + end + end + end + end + self:SetNoDraw(true) + self:DrawShadow(false) + self:NextThink(CurTime()) + return true + end +else + local tm_mat = Material('tdmg/hud/teammate.png') + function ENT:Draw() + if self:GetNWFloat('DTeam') == LocalPlayer():Team() then + local angle = EyeAngles() + angle = Angle( 0, angle.y, 0 ) + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + local pos = self:GetBonePosition(LocalPlayer():LookupBone("ValveBiped.Bip01_Head1"))+Vector(0,0,16) + cam.Start3D2D( pos, angle, 0.1 ) + surface.SetDrawColor(5,155,255) + surface.SetMaterial(tm_mat) + surface.DrawTexturedRect(-12, -12, 24, 24) + cam.End3D2D() + end + end +end diff --git a/gamemodes/cod_custom/entities/entities/mwii_sequence_npc/shared.lua b/gamemodes/cod_custom/entities/entities/mwii_sequence_npc/shared.lua new file mode 100644 index 0000000..725cec4 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/mwii_sequence_npc/shared.lua @@ -0,0 +1,126 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.AutomaticFrameAdvance = true + +if SERVER then + local function TransferModelData(ent, from) + local ent1Model = from:GetModel() + local ent1Skin = from:GetSkin() + local ent1BodyGroups = from:GetNumBodyGroups() + ent:SetModel(ent1Model) + ent:SetSkin(ent1Skin) + for i = 0, ent1BodyGroups - 1 do + ent:SetBodygroup(i, from:GetBodygroup(i)) + end + end + + function ENT:Initialize() + self:SetModel("models/player/barney.mdl") + self:SetNoDraw(true) + self:DrawShadow(false) + self.NPC:SetNoDraw(true) + self:SetNWFloat('DTeam', self.NPC.Team) + self.NPC.InSeqMWII = true + + if IsValid(self.Target) then + self.HaveTarget = true + end + + local anim = "" + if self.Sequence == "revive" then + anim = "laststand_startrevive" + timer.Simple(4, function() + if IsValid(self) then + local tar = self.Target + if !IsValid(tar) then return end + if tar:IsPlayer() then + tar:Revive() + else + if !IsValid(tar.DownedEnt) then return end + tar.DownedEnt:Revive(true) + end + end + end) + timer.Simple(5, function() + if IsValid(self) then + self:Stop() + local tar = self.Target + if !IsValid(tar) then return end + tar.TargetReviver = nil + end + end) + end + + self:ResetSequence(anim) + + local bd = ents.Create("base_anim") + bd:SetParent(self) + bd:AddEffects(1) + bd:Spawn() + self.bd = bd + TransferModelData(bd, self.NPC) + self:DeleteOnRemove(bd) + end + + function ENT:Stop() + local ow = self.NPC + + if !IsValid(ow) then return end + + self.NPC = nil + ow:SetNoDraw(false) + ow:SetRenderMode(RENDERMODE_NORMAL) + ow:DrawShadow(true) + ow:RemoveEFlags(EFL_NO_THINK_FUNCTION) + ow.InSeqMWII = false + local wep = ow:GetActiveWeapon() + if IsValid(wep) then + wep:SetNoDraw(false) + end + ow:SetNWEntity('MWIIRag', NULL) + end + + function ENT:Think() + local ow = self.NPC + + if !IsValid(ow) or ow:Health() <= 0 or ow.Takedowning or ow.Downed or self.HaveTarget and !IsValid(self.Target) then + self:Stop() + self:Remove() + else + ow:SetNoDraw(true) + ow:SetRenderMode(RENDERMODE_NONE) + ow:DrawShadow(false) + if ow.IsVJBaseSNPC then + ow.HasDeathAnimation = false + end + ow:AddEFlags(EFL_NO_THINK_FUNCTION) + ow:SetNWEntity('MWIIRag', self.bd) + local wep = ow:GetActiveWeapon() + if IsValid(wep) then + wep:SetNoDraw(true) + end + end + self:SetNoDraw(true) + self:DrawShadow(false) + self:NextThink(CurTime()) + return true + end +else + local tm_mat = Material('tdmg/hud/teammate.png') + function ENT:Draw() + if self:GetNWFloat('DTeam') == LocalPlayer():Team() then + local angle = EyeAngles() + angle = Angle( 0, angle.y, 0 ) + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + local pos = self:GetBonePosition(LocalPlayer():LookupBone("ValveBiped.Bip01_Head1"))+Vector(0,0,16) + cam.Start3D2D( pos, angle, 0.1 ) + surface.SetDrawColor(5,155,255) + surface.SetMaterial(tm_mat) + surface.DrawTexturedRect(-12, -12, 24, 24) + cam.End3D2D() + end + end +end diff --git a/gamemodes/cod_custom/entities/entities/mwii_takedown_npc/shared.lua b/gamemodes/cod_custom/entities/entities/mwii_takedown_npc/shared.lua new file mode 100644 index 0000000..db0cbfb --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/mwii_takedown_npc/shared.lua @@ -0,0 +1,160 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.AutomaticFrameAdvance = true + +if SERVER then + local function TransferModelData(ent, from) + local ent1Model = from:GetModel() + local ent1Skin = from:GetSkin() + local ent1BodyGroups = from:GetNumBodyGroups() + ent:SetModel(ent1Model) + ent:SetSkin(ent1Skin) + for i = 0, ent1BodyGroups - 1 do + ent:SetBodygroup(i, from:GetBodygroup(i)) + end + end + + function ENT:Initialize() + self:SetModel("models/player/breen.mdl") + self.Takedowning = true + self:ResetSequence(self.Sequence) + self:SetNoDraw(true) + self:DrawShadow(false) + local delay = select(2, self:LookupSequence(self.Sequence)) + self:SetCycle( ( ( (delay-0.1)/delay )-1)*-1 ) + if self.AttackerTime then + self.Attacker = true + end + + local bd = ents.Create("base_anim") + bd:SetParent(self) + bd:AddEffects(1) + bd:Spawn() + self.bd = bd + self:DeleteOnRemove(bd) + TransferModelData(self.bd, self.NPC) + self.NPC.HasDeathAnimation = false + self:SetNWFloat('DTeam', self.NPC.Team) + + if self.Attacker then + timer.Simple(self.AttackerTime, function() + local ent = self.ToKill + if IsValid(ent) and IsValid(self) then + self.TakedownIsFinished = true + ent:Freeze(false) + local armor = 0 + if ent:IsPlayer() then + armor = ent:Armor() + ent:SetSVAnimation("") + else + ent.CantUseTakedown = true + end + ent:TakeDamage(ent:Health()+armor, self.NPC) + timer.Simple(0.001, function() + if !IsValid(ent) then return end + ent.Takedowning = false + ent.TakedowningTarget = nil + end) + end + end) + end + + self.NPC.CantDamageMWII = true + + timer.Simple(self.Delay, function() + if !IsValid(self) then return end + + if self.Attacker then + self:Finish() + else + self:Finish(true) + end + end) + end + + function ENT:Finish(kill) + local ow = self.NPC + if IsValid(ow) then + self.NPC = nil + ow:SetNoDraw(false) + ow:SetRenderMode(RENDERMODE_NORMAL) + ow:DrawShadow(true) + ow:RemoveEFlags(EFL_NO_THINK_FUNCTION) + ow:ManipulateBonePosition(ow:LookupBone("ValveBiped.Bip01_Pelvis"), Vector(0, 0, 0)) + ow:ManipulateBoneAngles(ow:LookupBone("ValveBiped.Bip01_Pelvis"), Angle(0, 0, 0)) + local wep = ow:GetActiveWeapon() + if IsValid(wep) then + wep:SetNoDraw(false) + end + if kill then + if ow.IsDrGNextbot then + function ow:OnDeath() + local rag = self:BecomeRagdoll() + MWIITransferBones(self.bd, rag) + end + function ow:LastStand() end + elseif ow.IsVJBaseSNPC then + ow.HasDeathAnimation = false + end + self.Finisher.TakedownIsFinished = true + ow.CantDamageMWII = false + ow:TakeDamage(ow:Health(), self.Finisher, self.Finisher) + ow:TakeDamage(999999999, self.Finisher, self.Finisher) + else + ow.CantDamageMWII = false + ow.HasDeathAnimation = true + ow:SetNWEntity('MWIIRag', NULL) + ow.Takedowning = false + end + end + end + + function ENT:Think() + local ow = self.NPC + if !IsValid(ow) then + self:Remove() + else + ow.Takedowning = true + ow:SetNoDraw(true) + ow:SetRenderMode(RENDERMODE_NONE) + ow:DrawShadow(false) + ow:AddEFlags(EFL_NO_THINK_FUNCTION) + ow:SetNWEntity('MWIIRag', self.bd) + local wep = ow:GetActiveWeapon() + if IsValid(wep) then + wep:SetNoDraw(true) + end + + if !IsValid(self.ToKill) and self.KillingEntityMode and !self.Finisher.TakedownIsFinished then + self:Finish() + end + + local att = self.Finisher + if !IsValid(att) or att:Health() <= 0 or !att.Takedowning then + self:Finish() + end + end + self:SetNoDraw(true) + self:DrawShadow(false) + self:NextThink(CurTime()) + return true + end +else + local tm_mat = Material('tdmg/hud/teammate.png') + function ENT:Draw() + if self:GetNWFloat('DTeam') == LocalPlayer():Team() then + local angle = EyeAngles() + angle = Angle( 0, angle.y, 0 ) + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + local pos = self:GetBonePosition(LocalPlayer():LookupBone("ValveBiped.Bip01_Head1"))+Vector(0,0,16) + cam.Start3D2D( pos, angle, 0.1 ) + surface.SetDrawColor(5,155,255) + surface.SetMaterial(tm_mat) + surface.DrawTexturedRect(-12, -12, 24, 24) + cam.End3D2D() + end + end +end diff --git a/gamemodes/cod_custom/entities/entities/npc_tf2_ghost.lua b/gamemodes/cod_custom/entities/entities/npc_tf2_ghost.lua new file mode 100644 index 0000000..5d7a29a --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/npc_tf2_ghost.lua @@ -0,0 +1,72 @@ + +AddCSLuaFile() + +ENT.Base = "base_nextbot" +ENT.Spawnable = false + +function ENT:Initialize() + + --self:SetModel( "models/props_halloween/ghost_no_hat.mdl" ) + --self:SetModel( "models/props_wasteland/controlroom_filecabinet002a.mdl" ) + self:SetModel( "models/mossman.mdl" ) + +end + +function ENT:RunBehaviour() + + while ( true ) do + + self:StartActivity( ACT_WALK ) -- walk anims + self.loco:SetDesiredSpeed( 100 ) -- walk speeds + + -- Choose a random location within 400 units of our position + local targetPos = self:GetPos() + Vector( math.Rand( -1, 1 ), math.Rand( -1, 1 ), 0 ) * 400 + + -- Search for walkable space there, or nearby + local area = navmesh.GetNearestNavArea( targetPos ) + + -- We found walkable space, get the closest point on that area to where we want to be + if ( IsValid( area ) ) then targetPos = area:GetClosestPointOnArea( targetPos ) end + + -- walk to the target place (yielding) + self:MoveToPos( targetPos ) + + self:StartActivity( ACT_IDLE ) -- revert to idle activity + + self:PlaySequenceAndWait( "idle_to_sit_ground" ) -- Sit on the floor + self:SetSequence( "sit_ground" ) -- Stay sitting + coroutine.wait( self:PlayScene( "scenes/eli_lab/mo_gowithalyx01.vcd" ) ) -- play a scene and wait for it to finish before progressing + self:PlaySequenceAndWait( "sit_ground_to_idle" ) -- Get up + + -- find the furthest away hiding spot + local pos = self:FindSpot( "random", { type = 'hiding', radius = 5000 } ) + + -- if the position is valid + if ( pos ) then + self:StartActivity( ACT_RUN ) -- run anim + self.loco:SetDesiredSpeed( 200 ) -- run speed + self:PlayScene( "scenes/npc/female01/watchout.vcd" ) -- shout something while we run just for a laugh + self:MoveToPos( pos ) -- move to position (yielding) + self:PlaySequenceAndWait( "fear_reaction" ) -- play a fear animation + self:StartActivity( ACT_IDLE ) -- when we finished, go into the idle anim + else + + -- some activity to signify that we didn't find shit + + end + + coroutine.yield() + + end + + +end + +-- +-- List the NPC as spawnable +-- +list.Set( "NPC", "npc_tf2_ghost", { + Name = "Example NPC", + Class = "npc_tf2_ghost", + Category = "Nextbot" +} ) diff --git a/gamemodes/cod_custom/entities/entities/prop_effect.lua b/gamemodes/cod_custom/entities/entities/prop_effect.lua new file mode 100644 index 0000000..86152a3 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/prop_effect.lua @@ -0,0 +1,178 @@ + +AddCSLuaFile() + +if ( CLIENT ) then + CreateConVar( "cl_draweffectrings", "1", 0, "Should the effect green rings be visible?" ) +end + +ENT.Type = "anim" + +ENT.Spawnable = false + +function ENT:Initialize() + + local Radius = 6 + local mins = Vector( 1, 1, 1 ) * Radius * -0.5 + local maxs = Vector( 1, 1, 1 ) * Radius * 0.5 + + if ( SERVER ) then + + self.AttachedEntity = ents.Create( "prop_dynamic" ) + self.AttachedEntity:SetModel( self:GetModel() ) + self.AttachedEntity:SetAngles( self:GetAngles() ) + self.AttachedEntity:SetPos( self:GetPos() ) + self.AttachedEntity:SetSkin( self:GetSkin() ) + self.AttachedEntity:Spawn() + self.AttachedEntity:SetParent( self ) + self.AttachedEntity:DrawShadow( false ) + + self:SetModel( "models/props_junk/watermelon01.mdl" ) + + self:DeleteOnRemove( self.AttachedEntity ) + self.AttachedEntity:DeleteOnRemove( self ) + + -- Don't use the model's physics - create a box instead + self:PhysicsInitBox( mins, maxs ) + self:SetSolid( SOLID_VPHYSICS ) + + -- Set up our physics object here + local phys = self:GetPhysicsObject() + if ( IsValid( phys ) ) then + phys:Wake() + phys:EnableGravity( false ) + phys:EnableDrag( false ) + end + + self:DrawShadow( false ) + self:SetCollisionGroup( COLLISION_GROUP_WEAPON ) + + else + + -- So addons can override this + self.GripMaterial = Material( "sprites/grip" ) + self.GripMaterialHover = Material( "sprites/grip_hover" ) + + -- Get the attached entity so that clientside functions like properties can interact with it + local tab = ents.FindByClassAndParent( "prop_dynamic", self ) + if ( tab && IsValid( tab[ 1 ] ) ) then self.AttachedEntity = tab[ 1 ] end + + end + + -- Set collision bounds exactly + self:SetCollisionBounds( mins, maxs ) + +end + +function ENT:Draw() + + if ( halo.RenderedEntity() == self ) then + self.AttachedEntity:DrawModel() + return + end + + if ( GetConVarNumber( "cl_draweffectrings" ) == 0 ) then return end + + -- Don't draw the grip if there's no chance of us picking it up + local ply = LocalPlayer() + local wep = ply:GetActiveWeapon() + if ( !IsValid( wep ) ) then return end + + local weapon_name = wep:GetClass() + + if ( weapon_name != "weapon_physgun" && weapon_name != "weapon_physcannon" && weapon_name != "gmod_tool" ) then + return + end + + if ( self:BeingLookedAtByLocalPlayer() ) then + render.SetMaterial( self.GripMaterialHover ) + else + render.SetMaterial( self.GripMaterial ) + end + + render.DrawSprite( self:GetPos(), 16, 16, color_white ) + +end + +-- Copied from base_gmodentity.lua +ENT.MaxWorldTipDistance = 256 +function ENT:BeingLookedAtByLocalPlayer() + local ply = LocalPlayer() + if ( !IsValid( ply ) ) then return false end + + local view = ply:GetViewEntity() + local dist = self.MaxWorldTipDistance + dist = dist * dist + + -- If we're spectating a player, perform an eye trace + if ( view:IsPlayer() ) then + return view:EyePos():DistToSqr( self:GetPos() ) <= dist && view:GetEyeTrace().Entity == self + end + + -- If we're not spectating a player, perform a manual trace from the entity's position + local pos = view:GetPos() + + if ( pos:DistToSqr( self:GetPos() ) <= dist ) then + return util.TraceLine( { + start = pos, + endpos = pos + ( view:GetAngles():Forward() * dist ), + filter = view + } ).Entity == self + end + + return false +end + +function ENT:PhysicsUpdate( physobj ) + + if ( CLIENT ) then return end + + -- Don't do anything if the player isn't holding us + if ( !self:IsPlayerHolding() && !self:IsConstrained() ) then + + physobj:SetVelocity( vector_origin ) + physobj:Sleep() + + end + +end + +function ENT:OnEntityCopyTableFinish( tab ) + + -- We need to store the model of the attached entity + -- Not the one we have here. + tab.Model = self.AttachedEntity:GetModel() + + -- Store the attached entity's table so we can restore it after being pasted + tab.AttachedEntityInfo = table.Copy( duplicator.CopyEntTable( self.AttachedEntity ) ) + tab.AttachedEntityInfo.Pos = nil -- Don't even save angles and position, we are a parented entity + tab.AttachedEntityInfo.Angle = nil + + -- Do NOT store the attached entity itself in our table! + -- Otherwise, if we copy-paste the prop with the duplicator, its AttachedEntity value will point towards the original prop's attached entity instead, and that'll break stuff + tab.AttachedEntity = nil + +end + +function ENT:PostEntityPaste( ply ) + + -- Restore the attached entity using the information we've saved + if ( IsValid( self.AttachedEntity ) && self.AttachedEntityInfo ) then + + -- Apply skin, bodygroups, bone manipulator, etc. + duplicator.DoGeneric( self.AttachedEntity, self.AttachedEntityInfo ) + + if ( self.AttachedEntityInfo.EntityMods ) then + self.AttachedEntity.EntityMods = table.Copy( self.AttachedEntityInfo.EntityMods ) + duplicator.ApplyEntityModifiers( ply, self.AttachedEntity ) + end + + if ( self.AttachedEntityInfo.BoneMods ) then + self.AttachedEntity.BoneMods = table.Copy( self.AttachedEntityInfo.BoneMods ) + duplicator.ApplyBoneModifiers( ply, self.AttachedEntity ) + end + + self.AttachedEntityInfo = nil + + end + +end diff --git a/gamemodes/cod_custom/entities/entities/ragdoll_motion.lua b/gamemodes/cod_custom/entities/entities/ragdoll_motion.lua new file mode 100644 index 0000000..fc4d241 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/ragdoll_motion.lua @@ -0,0 +1,304 @@ + +AddCSLuaFile() + +ENT.Type = "anim" +ENT.Spawnable = false +ENT.AdminOnly = false +ENT.Editable = true + +function ENT:SetupDataTables() + + -- + -- Scale - how far the ragdoll will move in the game world in relation to how far it moved in the real world + -- + self:NetworkVar( "Float", 0, "Scale", { KeyName = "scale", Edit = { type = "Float", min=1, max=512, order = 1 } } ) + + -- + -- Normalize - if enabled the limbs aren't stretched + -- + self:NetworkVar( "Bool", 0, "Normalize", { KeyName = "normalize", Edit = { type = "Boolean", order = 2 } } ) + + -- + -- Debug - Shows some debug info - only available on a listen server + -- + self:NetworkVar( "Bool", 1, "Debug", { KeyName = "debug", Edit = { type = "Boolean", order = 100 } } ) + + -- + -- Controller - the entity that is currently controlling the ragdoll + -- + self:NetworkVar( "Entity", 0, "Controller" ) + self:NetworkVar( "Entity", 1, "Target" ) + + -- + -- Defaults + -- + if ( SERVER ) then + + self:SetScale( 36 ) + self:SetDebug( false ) + self:SetNormalize( true ) + + end + +end + +function ENT:Initialize() + + if ( SERVER ) then + + self:SetModel( "models/maxofs2d/motion_sensor.mdl" ) + self:PhysicsInit( SOLID_VPHYSICS ) + + -- Don't collide with the player + self:SetCollisionGroup( COLLISION_GROUP_WEAPON ) + + self:DrawShadow( false ) + + local phys = self:GetPhysicsObject() + if ( IsValid( phys ) ) then + + phys:Wake() + phys:EnableGravity( false ) + phys:EnableDrag( false ) + + end + + local colors = { + Color( 180, 255, 50 ), + Color( 0, 150, 255 ), + Color( 255, 255, 0 ), + Color( 255, 50, 255 ) + } + + self:SetColor( table.Random( colors ) ) + + end + +end + +-- +-- We don't want to move unless the player moves us or we're constrained to something. +-- +function ENT:PhysicsUpdate( physobj ) + + if ( self:IsPlayerHolding() ) then return end + if ( self:IsConstrained() ) then return end + + physobj:SetVelocity( vector_origin ) + physobj:Sleep() + +end + +-- +-- Clean up on remove +-- +function ENT:OnRemove() + + if ( SERVER ) then + + local ragdoll = self:GetTarget() + if ( IsValid( ragdoll ) ) then + ragdoll:SetRagdollBuildFunction( nil ) + end + + end + +end + +function ENT:Draw() + + -- + -- Don't draw if we're holding the camera + -- + local ply = LocalPlayer() + local wep = ply:GetActiveWeapon() + if ( wep:IsValid() ) then + if ( wep:GetClass() == "gmod_camera" ) then return end + end + + self:DrawModel() + +end + +function ENT:DrawDebug( ragdoll, controller, pos, ang, rotation, scale, center, changed_sensor ) + + local UpdateTime = 0.1 + local StayTime = 0.15 + + if ( self.LastDebugUpdate && CurTime() - self.LastDebugUpdate < UpdateTime ) then return end + + self.LastDebugUpdate = CurTime() + + center = center + + local col_bone = color_white + local col_point = Color( 255, 0, 0, 255 ) + local col_tran_bn = Color( 0, 255, 0, 255 ) + + local realbonepos = {} + local fixedbonepos = {} + local min = Vector( 1, 1, 1 ) * -0.5 + local max = Vector( 1, 1, 1 ) * 0.5 + + -- + -- Draw Points + -- + for i = 0, 19 do + + realbonepos[i] = controller:MotionSensorPos( i ) * scale + realbonepos[i]:Rotate( rotation ) + realbonepos[i] = realbonepos[i] + center + + fixedbonepos[i] = changed_sensor[ i ] * scale + -- (already rotated) + fixedbonepos[i] = fixedbonepos[i] + center + + + debugoverlay.Box( realbonepos[i], min, max, StayTime, col_point, true ) + debugoverlay.Box( fixedbonepos[i], min, max, StayTime, col_tran_bn, true ) + + end + + -- + -- Draw bones + -- + for k, v in pairs( motionsensor.DebugBones ) do + + debugoverlay.Line( realbonepos[ v[1] ], realbonepos[ v[2] ], StayTime, col_bone, true ) + + end + + -- + -- Draw translated sensor bones + -- + for k, v in pairs( motionsensor.DebugBones ) do + + debugoverlay.Line( fixedbonepos[ v[1] ], fixedbonepos[ v[2] ], StayTime, col_tran_bn, true ) + + end + + -- + -- Draw ragdoll physics bones + -- + for i=0, ragdoll:GetPhysicsObjectCount() - 1 do + + local phys = ragdoll:GetPhysicsObjectNum( i ) + + local pos = phys:GetPos() + local angle = phys:GetAngles() + local txt = i + + if ( ang[i] == nil ) then + txt = i .. " (UNSET)" + end + + debugoverlay.Text( pos, txt, StayTime ) + debugoverlay.Axis( pos, angle, 5, StayTime, true ) + + end + +end + +function ENT:SetRagdoll( ragdoll ) + + self:SetTarget( ragdoll ) + ragdoll:PhysWake() + + local buildername = motionsensor.ChooseBuilderFromEntity( ragdoll ) + + -- + -- Set the ragdoll build function. + -- This function is called whenever the ragdoll bones are built. + -- in this function is the one place you can successfully call ent:SetRagdollBone + -- + ragdoll:SetRagdollBuildFunction( function( ragdoll ) + + local controller = self:GetController() + if ( !IsValid( controller ) ) then return end + + local builder = list.Get( "SkeletonConvertor" )[ buildername ] + local scale = self:GetScale() + local rotation = self:GetAngles() + local center = self:GetPos() + local normalize = self:GetNormalize() + local debug = self:GetDebug() + + -- + -- Call the build skeleton function. + -- This is thrown out to a pseudo class because we want to be + -- able to add new skeleton types nice and easily. + -- + local pos, ang, changed_sensor = motionsensor.BuildSkeleton( builder, controller, rotation ) + + -- + -- For development + -- + if ( debug ) then + self:DrawDebug( ragdoll, controller, pos, ang, rotation, scale, center, changed_sensor ) + end + + -- + -- If we don't have 85% of the points, just drop dead + -- + local iSkipped = 0 + local iMaxSkip = table.Count( pos ) * 0.25 + for k, v in pairs( pos ) do + + if ( math.abs( v.x ) > 0.05 ) then continue end + if ( math.abs( v.y ) > 0.05 ) then continue end + + pos[k] = nil -- don't use this point to control the ragdoll + ang[k] = nil -- (use the ragdoll point) + + iSkipped = iSkipped + 1 + + if ( iSkipped > iMaxSkip ) then + + ragdoll:RagdollStopControlling() + return + + end + + end + + -- + -- Loop each returned position + -- + for k, v in pairs( pos ) do + + -- + -- Set the bone angle + -- + if ( ang[ k ] != nil ) then + ragdoll:SetRagdollAng( k, ang[ k ] ) + end + + -- + -- The root bone, we directly set the position of this one. + -- + if ( k == 0 || !normalize ) then + + local new_position = center + v * scale + ragdoll:SetRagdollPos( k, new_position ) + + end + + end + + -- + -- Normalize the ragdoll + -- + if ( normalize ) then + + ragdoll:RagdollSolve() + + end + + -- + -- Makes the physics objects follow the set bone positions + -- + ragdoll:RagdollUpdatePhysics() + + end ) + +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_ah64/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_ah64/shared.lua new file mode 100644 index 0000000..85c94ff --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_ah64/shared.lua @@ -0,0 +1,410 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "AH-64" + +if SERVER then + util.AddNetworkString("COD.AH64Cam") + net.Receive("COD.AH64Cam", function(len, ply) + ply.AH64_Cam_Pos = net.ReadVector() + ply.AH64_Cam_Ang = net.ReadAngle() + end) + + function ENT:Initialize() + self:SetModel("models/hunter/blocks/cube2x8x1.mdl") + self:SetHealth(999999999) + self.Velo = {x = 0, y = 0} + self:SetSolid(SOLID_VPHYSICS) + self:PhysicsInit(SOLID_VPHYSICS) + self.MultSpeed = 500 + self.MaxSpeed = 750 + self.Height = COD.DataTable["AirVehicle_FlyHeight"] + self.Smoking = false + self.DeltaTime = 0 + self.FireDelay = CurTime()+1 + self.FireDelay2 = CurTime()+1 + self:SetNWFloat('Rockets', 8) + self:SetNWFloat('RemoveTime', CurTime()+50) + self:SetNoDraw(true) + self:EmitSound(")npc/attack_helicopter/aheli_rotor_loop1.wav", 100, 100, 1, CHAN_BODY) + + timer.Simple(3, function() + if !IsValid(self) then return end + self:SetHealth(3000) + end) + + timer.Simple(0.1, function() + local ply = self:GetCreator() + if !IsValid(ply) then return end + + net.Start("COD.Cutscene") + net.WriteTable({ + num_of_cutscene = 1, + path_of_sound = "tdmg/heli/spawn.wav", + fps = 30, + screenfade = true, + }) + net.Send(ply) + + net.Start("COD.AH64Cam") + net.WriteEntity(self) + net.Send(ply) + ply.ControllingKillstreak = true + end) + + local mod = ents.Create("base_anim") + mod:SetModel("models/tdmg/ah64.mdl") + mod:SetPos(self:GetPos()) + mod:SetAngles(self:GetAngles()+Angle(0,90,0)) + mod:SetParent(self) + mod:Spawn() + self:DeleteOnRemove(mod) + + timer.Simple(5, function() + if !IsValid(self) then return end + + if self.Team == 1 then + self.VJ_NPC_Class = {"CLASS_SPECGRU"} + elseif self.Team == 2 then + self.VJ_NPC_Class = {"CLASS_KORTAC"} + end + end) + end + + function ENT:OnRemove() + self:StopSound(")npc/attack_helicopter/aheli_rotor_loop1.wav") + + local ply = self:GetCreator() + if !IsValid(ply) then return end + ply.ControllingKillstreak = false + end + + function ENT:Think() + local ply = self:GetCreator() + if !IsValid(ply) then + self:Remove() + else + local mu = self.MultSpeed + local ms = self.MaxSpeed + local phys = self:GetPhysicsObject() + local vel = phys:GetVelocity() + vel.z = 0 + + local pos = self:GetPos() + local ang = ply:EyeAngles().y + ply:SetActiveWeapon(nil) + self:SetPos(Vector(pos.x, pos.y, self.Height)) + phys:SetVelocityInstantaneous(-vel+self:GetForward()*self.Velo.x+self:GetRight()*self.Velo.y) + if ply:KeyDown(IN_MOVERIGHT) then + self.Velo.x = math.Clamp(self.Velo.x+FrameTime()*mu, -ms, ms) + elseif ply:KeyDown(IN_MOVELEFT) then + self.Velo.x = math.Clamp(self.Velo.x-FrameTime()*mu, -ms, ms) + end + if ply:KeyDown(IN_FORWARD) then + self.Velo.y = math.Clamp(self.Velo.y-FrameTime()*mu, -ms, ms) + elseif ply:KeyDown(IN_BACK) then + self.Velo.y = math.Clamp(self.Velo.y+FrameTime()*mu, -ms, ms) + end + if not ply:KeyDown(IN_MOVELEFT) and not ply:KeyDown(IN_MOVERIGHT) then + if self.Velo.x > 5 or self.Velo.x < -5 then + if self.Velo.x > 0 then + self.Velo.x = math.Clamp(self.Velo.x-FrameTime()*mu, -ms, ms) + elseif self.Velo.x < 0 then + self.Velo.x = math.Clamp(self.Velo.x+FrameTime()*mu, -ms, ms) + end + else + self.Velo.x = 0 + end + end + if not ply:KeyDown(IN_FORWARD) and not ply:KeyDown(IN_BACK) then + if self.Velo.y > 5 or self.Velo.y < -5 then + if self.Velo.y > 0 then + self.Velo.y = math.Clamp(self.Velo.y-FrameTime()*mu, -ms, ms) + elseif self.Velo.y < 0 then + self.Velo.y = math.Clamp(self.Velo.y+FrameTime()*mu, -ms, ms) + end + else + self.Velo.y = 0 + end + end + if ply:KeyDown(IN_ATTACK) and self.FireDelay < CurTime() then + self.FireDelay = CurTime()+0.15 + self:EmitSound("tdmg/killstreaks/apache_cannon.wav", 100, math.random(90,110), 1, CHAN_WEAPON) + ply:ViewPunch(Angle(1,0,0)) + + local pos = ply.AH64_Cam_Pos+Vector(0,0,12) + local ang = ply.AH64_Cam_Ang + + local explosion = ents.Create("tdm_ah64_rocket1") + explosion:SetPos(pos) + explosion:SetOwner(self) + explosion:SetNWFloat('Team', self.Team) + explosion.Team = self.Team + explosion:SetAngles(ang) + explosion:Spawn() + end + if ply:KeyDown(IN_ATTACK2) and self.FireDelay2 < CurTime() and self:GetNWFloat('Rockets') > 0 then + self.FireDelay2 = CurTime()+0.5 + self:SetNWFloat('Rockets', self:GetNWFloat('Rockets')-1) + self:EmitSound("tdmg/killstreaks/ac130_rocket.wav", 100, math.random(90,110), 1, CHAN_WEAPON) + ply:ViewPunch(Angle(5,0,0)) + + local pos = ply.AH64_Cam_Pos+Vector(0,0,12) + local ang = ply.AH64_Cam_Ang + + local explosion = ents.Create("tdm_ah64_rocket2") + explosion:SetPos(pos) + explosion:SetOwner(self) + explosion:SetNWFloat('Team', self.Team) + explosion.Team = self.Team + explosion:SetAngles(ang) + explosion:Spawn() + end + if self:GetNWFloat('RemoveTime') < CurTime() then + self:Remove() + end + if self:Health() <= 1000 and not self.Smoking then + self.Smoking = true + ParticleEffectAttach("Rocket_Smoke_Trail", 1, self, 0) + end + if self:Health() <= 0 then + self:DestroyHeli(self.IsDExplosionDamage) + end + + local b = {} + b.secondstoarrive = 1 + b.pos = self:GetPos() + b.angle = Angle(0,ang,0) + b.maxangular = 10 + b.maxangulardamp = 5 + b.maxspeed = 10 + b.maxspeeddamp = 5 + b.dampfactor = 0.8 + b.teleportdistance = 0 + b.deltatime = CurTime()-self.DeltaTime + phys:ComputeShadowControl(b) + + self.DeltaTime = CurTime() + self:NextThink(CurTime()) + return true + end + end + + function ENT:OnTakeDamage(dmgt) + local dmg = dmgt:GetDamage() + local att = dmgt:GetAttacker() + if att != self or att:IsPlayer() and att:Team() != self.Team then + self:SetHealth(self:Health()-dmg) + self.IsDExplosionDamage = dmgt:IsExplosionDamage() + if IsValid(self:GetCreator()) then + self:GetCreator():ViewPunch(AngleRand(-1,1)) + self:EmitSound("physics/metal/metal_box_impact_bullet"..math.random(1,3)..".wav") + end + end + end + + function ENT:DestroyHeli(isrocket) + local ply = self:GetCreator() + + if IsValid(ply) then + if isrocket then + net.Start("COD.Cutscene") + net.WriteTable({ + num_of_cutscene = 3, + path_of_sound = "tdmg/heli/shotrocket.wav", + fps = 30, + screenfade = true, + }) + net.Send(ply) + else + net.Start("COD.Cutscene") + net.WriteTable({ + num_of_cutscene = 2, + path_of_sound = "tdmg/heli/shotbullet.wav", + fps = 30, + screenfade = true, + }) + net.Send(ply) + end + end + + ParticleEffect("explosion_huge_h", self:GetPos(), Angle(0,0,0)) + sound.Play("tdmg/a10_explosion.wav", self:GetPos(), 0) + self:Remove() + end +else + local function CanSee(pos1, pos2) + local tr = util.TraceLine( { + start = pos1, + endpos = pos2, + filter = function(ent) if ent:IsWorld() then return true end end, + }) + return !tr.Hit + end + + local enemyMat = Material("tdmg/hud/radar/enemy.png", "noclamp") + local glitchMat = Material("tdmg/hud/screenglitch.jpg", "noclamp") + + net.Receive("COD.AH64Cam", function() + local ent = net.ReadEntity() + local alpha = 0 + local downa = false + local tab = { + [ "$pp_colour_addr" ] = 0, + [ "$pp_colour_addg" ] = 0, + [ "$pp_colour_addb" ] = 0, + [ "$pp_colour_brightness" ] = 0, + [ "$pp_colour_contrast" ] = 0.9, + [ "$pp_colour_colour" ] = 0.1, + [ "$pp_colour_mulr" ] = 0, + [ "$pp_colour_mulg" ] = 0, + [ "$pp_colour_mulb" ] = 0 + } + + hook.Add("RenderScreenspaceEffects", "AH64Cam", function() + DrawColorModify(tab) + end) + + hook.Add("HUDPaint", "AH64Cam", function() + surface.SetDrawColor(50,50,50,100) + surface.SetMaterial(glitchMat) + surface.DrawTexturedRect(0, 0, ScrW(), ScrH()) + + surface.SetDrawColor(255,255,255) + surface.DrawOutlinedRect(50, 50, ScrW()-100, ScrH()-100, 2) + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2-200, ScrH()/2, 150, 2) + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2-200, ScrH()/2-10, 2, 20) + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2+50, ScrH()/2, 150, 2) + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2+200, ScrH()/2-10, 2, 20) + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2, ScrH()/2+50, 2, 150) + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2-10, ScrH()/2-200, 20, 2) + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2, ScrH()/2-200, 2, 150) + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2-10, ScrH()/2+200, 20, 2) + + -------------------------------------------------------------------------------- + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2-15, ScrH()/2-1, 30, 2) + + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2-1, ScrH()/2-16, 2, 30) + + -------------------------------------------------------------------------------- + + draw.SimpleText("✷ CHOPPER GUNNER", "DermaLarge", 100, 100, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + draw.SimpleText("ACTIVE", "DermaLarge", 100, 130, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + + draw.SimpleText("∾ CANNON ROUNDS", "DermaLarge", ScrW()-100, ScrH()-130, color_white, TEXT_ALIGN_RIGHT, TEXT_ALIGN_TOP) + draw.SimpleText(ent:GetNWFloat('Rockets').." HYDRA ROCKETS", "DermaLarge", ScrW()-100, ScrH()-100, color_white, TEXT_ALIGN_RIGHT, TEXT_ALIGN_TOP) + + if ent:Health() < 1000 then + draw.SimpleText("WARNING: CRITICAL DAMAGE", "DermaLarge", ScrW()/2, ScrH()/2+300, Color(200,20,20,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + + if downa then + alpha = alpha - FrameTime()*512 + if alpha <= 0 then + downa = false + end + else + alpha = alpha + FrameTime()*512 + if alpha >= 255 then + downa = true + end + end + -------------------------------------------------------------------------------- + + surface.SetDrawColor(220,220,220,255) + surface.DrawRect(75, ScrH()-220, 300*((ent:GetNWFloat('RemoveTime')-CurTime())/45), 15) + + surface.SetDrawColor(255,255,255,255) + surface.DrawOutlinedRect(75, ScrH()-220, 300, 15, 2) + + draw.SimpleText("FUEL", "DermaLarge", 75, ScrH()-250, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + + surface.SetDrawColor(220,220,220,255) + surface.DrawRect(75, ScrH()-120, 300*(ent:Health()/3000), 15) + + surface.SetDrawColor(255,255,255) + surface.DrawOutlinedRect(75, ScrH()-120, 300, 15, 2) + + draw.SimpleText("HEALTH", "DermaLarge", 75, ScrH()-150, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + --------------------------------------------------------------------------------- + + for _, ply in ipairs(player.GetAll()) do + if ply:Alive() and ply:Team() != LocalPlayer():Team() and ply:GetNWFloat('Perk2') != 4 then + local pos = ply:WorldSpaceCenter():ToScreen() + + if CanSee(EyePos(), ply:WorldSpaceCenter()) then + surface.SetDrawColor(200,0,0,200) + elseif ply:WorldSpaceCenter():DistToSqr(EyePos()) < 2500000 then + surface.SetDrawColor(255,255,255,100) + surface.DrawRect(pos.x-1, pos.y-5, 1, 10) + surface.SetDrawColor(255,255,255,100) + surface.DrawRect(pos.x-5, pos.y-1, 10, 1) + + surface.SetDrawColor(200,200,200,50) + else + surface.SetDrawColor(0,0,0,0) + end + surface.SetMaterial(enemyMat) + surface.DrawTexturedRect(pos.x-20, pos.y-20, 40, 40) + end + end + end) + + hook.Add("CreateMove", "AH64Cam", function(cmd) + cmd:SetForwardMove(0) + cmd:SetSideMove(0) + cmd:RemoveKey(IN_JUMP) + cmd:RemoveKey(IN_USE) + end) + + hook.Add("CalcView", "AH64Cam", function( ply, pos, angles, fov ) + if IsValid(ent) then + COD.HideHUD = true + COD.HUD_DisableSomeThink = true + local pos1 = ent:GetPos()-ent:GetRight()*128-ent:GetUp()*48 + local ang1 = angles+Angle(0,90,0) + local view = { + origin = pos1, + angles = ang1, + fov = fov, + drawviewer = true + } + + net.Start("COD.AH64Cam") + net.WriteVector(pos1) + net.WriteAngle(ang1) + net.SendToServer() + + return view + else + COD.HideHUD = false + COD.HUD_DisableSomeThink = false + hook.Remove("CalcView", "AH64Cam") + hook.Remove("CreateMove", "AH64Cam") + hook.Remove("RenderScreenspaceEffects", "AH64Cam") + hook.Remove("HUDPaint", "AH64Cam") + end + end) + end) +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_ah64_rocket1/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_ah64_rocket1/shared.lua new file mode 100644 index 0000000..13388db --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_ah64_rocket1/shared.lua @@ -0,0 +1,39 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "AH64 Cannon" + +if SERVER then + function ENT:Initialize() + self:SetModel("models/weapons/w_missile_closed.mdl") + self:SetSolid(SOLID_VPHYSICS) + self:PhysicsInit(SOLID_VPHYSICS) + end + + function ENT:Think() + local phys = self:GetPhysicsObject() + phys:SetVelocity(self:GetForward()*2500) + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + util.Effect("AR2Impact", effectdata) + end + + function ENT:Explode() + local pos2 = self:GetPos() + + local ef = EffectData() + ef:SetOrigin(pos2) + util.Effect("HelicopterMegaBomb", ef) + util.BlastDamage(self, self, pos2, 128, 48) + sound.Play("ambient/explosions/explode_4.wav", pos2, 0, math.random(80,120), 0.2) + + self:Remove() + end + + function ENT:PhysicsCollide(data) + if data.Speed > 50 then + self:Explode() + end + end +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_ah64_rocket2/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_ah64_rocket2/shared.lua new file mode 100644 index 0000000..0993a9c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_ah64_rocket2/shared.lua @@ -0,0 +1,37 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "Hydra Missle" + +if SERVER then + function ENT:Initialize() + self:SetModel("models/props_phx/amraam.mdl") + self:SetSolid(SOLID_VPHYSICS) + self:PhysicsInit(SOLID_VPHYSICS) + end + + function ENT:Think() + local phys = self:GetPhysicsObject() + phys:SetVelocity(self:GetForward()*2500) + local effectdata = EffectData() + effectdata:SetOrigin(self:GetPos()) + util.Effect("AR2Impact", effectdata) + end + + function ENT:Explode() + local pos2 = self:GetPos() + + ParticleEffect("explosion_huge_h", pos2, Angle(0,0,0)) + sound.Play("tdmg/a10_explosion.wav", pos2, 0) + util.BlastDamage(self, self, pos2, 512, 256) + + self:Remove() + end + + function ENT:PhysicsCollide(data) + if data.Speed > 50 then + self:Explode() + end + end +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_cmine/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_cmine/shared.lua new file mode 100644 index 0000000..4d54e00 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_cmine/shared.lua @@ -0,0 +1,102 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "Claster Mine" + +if SERVER then + function ENT:Initialize() + self:SetModel("models/tdmg/fieldupgrade_proximitymine.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetUseType(SIMPLE_USE) + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + self:SetModelScale(1.2, 0) + self:SetHealth(250) + if not self.Team then + self.Team = 1 + end + self:SetNWFloat('Team', self.Team) + timer.Simple(2, function() + if IsValid(self) then + self:Open() + end + end) + end + + function ENT:Think() + if self.Activated then + local y = self:GetAngles().y + self:SetAngles(Angle(0,y,0)) + if self:Health() <= 0 then + self:Explode() + end + for _, ply in ipairs(ents.FindInSphere(self:GetPos(), 64)) do + if ply:IsPlayer() and ply:Team() != self.Team or ply:IsNPC() and ply.Team and ply.Team != self.Team then + self:Explode() + break + end + end + end + self:NextThink(CurTime()+0.1) + return true + end + + function ENT:Open() + self.Activated = true + self:EmitSound("tdmg/themes/beep2.mp3") + for i=1,4 do + local mn = ents.Create("tdm_cmine2") + mn:SetPos(self:GetPos()) + mn.Team = self.Team + mn:Spawn() + local n = 250 + mn:GetPhysicsObject():SetVelocity(Vector(math.random(-n,n),math.random(-n,n),n)) + end + end + + function ENT:Explode() + if not self.Activated then return end + + self.Activated = true + self:EmitSound("tdmg/themes/beep1.mp3") + + timer.Simple(0.2, function() + if !IsValid(self) then return end + + local explosion = ents.Create("env_explosion") + explosion:SetPos(self:GetPos()) + explosion:Spawn() + explosion:SetCreator(self) + explosion.Team = self.Team + explosion:SetKeyValue("iMagnitude", "200") + explosion:Fire("Explode", 0, 0) + self:Remove() + end) + end + + function ENT:OnTakeDamage(dmginfo) + local dmg = dmginfo:GetDamage() + local att = dmginfo:GetAttacker() + if att:IsPlayer() and att:Team() != self.Team then + self:SetHealth(self:Health()-dmg) + end + end +else + local tm_mat = Material('tdmg/hud/teammate.png') + function ENT:Draw() + self:DrawModel() + if self:GetNWFloat('Team') == LocalPlayer():Team() then + local angle = EyeAngles() + angle = Angle( 0, angle.y, 0 ) + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + local pos = self:GetPos()+Vector(0,0,16) + cam.Start3D2D( pos, angle, 0.1 ) + surface.SetDrawColor(5,155,255) + surface.SetMaterial(tm_mat) + surface.DrawTexturedRect(-12, -12, 24, 24) + cam.End3D2D() + end + end +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_cmine2/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_cmine2/shared.lua new file mode 100644 index 0000000..2dedf30 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_cmine2/shared.lua @@ -0,0 +1,90 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "Mini Mine" + +if SERVER then + function ENT:Initialize() + self:SetModel("models/tdmg/fieldupgrade_proximitymine.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetUseType(SIMPLE_USE) + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + self:SetModelScale(0.8, 0) + self:SetHealth(200) + if not self.Team then + self.Team = 1 + end + self:SetNWFloat('Team', self.Team) + timer.Simple(math.Rand(2,4), function() + if IsValid(self) then + self.Activated = true + self:EmitSound("tdmg/themes/beep2.mp3") + end + end) + end + + function ENT:Think() + if self.Activated then + local y = self:GetAngles().y + self:SetAngles(Angle(0,y,0)) + if self:Health() <= 0 then + self:Explode() + end + for _, ply in ipairs(ents.FindInSphere(self:GetPos(), 32)) do + if ply:IsPlayer() and ply:Team() != self.Team or ply:IsNPC() and ply.Team and ply.Team != self.Team then + self:Explode() + break + end + end + end + self:NextThink(CurTime()+0.1) + return true + end + + function ENT:Explode() + if not self.Activated then return end + + self.Activated = true + self:EmitSound("tdmg/themes/beep1.mp3") + + timer.Simple(0.2, function() + if !IsValid(self) then return end + + local explosion = ents.Create("env_explosion") + explosion:SetPos(self:GetPos()) + explosion:Spawn() + explosion:SetCreator(self) + explosion.Team = self.Team + explosion:SetKeyValue("iMagnitude", "150") + explosion:Fire("Explode", 0, 0) + self:Remove() + end) + end + + function ENT:OnTakeDamage(dmginfo) + local dmg = dmginfo:GetDamage() + local att = dmginfo:GetAttacker() + if att:IsPlayer() and att:Team() != self.Team then + self:SetHealth(self:Health()-dmg) + end + end +else + local tm_mat = Material('tdmg/hud/teammate.png') + function ENT:Draw() + self:DrawModel() + if self:GetNWFloat('Team') == LocalPlayer():Team() then + local angle = EyeAngles() + angle = Angle( 0, angle.y, 0 ) + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + local pos = self:GetPos()+Vector(0,0,16) + cam.Start3D2D( pos, angle, 0.1 ) + surface.SetDrawColor(5,155,255) + surface.SetMaterial(tm_mat) + surface.DrawTexturedRect(-12, -12, 24, 24) + cam.End3D2D() + end + end +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/tdm_deathanim/init.lua b/gamemodes/cod_custom/entities/entities/tdm_deathanim/init.lua new file mode 100644 index 0000000..b1d755f --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_deathanim/init.lua @@ -0,0 +1,126 @@ +AddCSLuaFile("shared.lua") +include("shared.lua") + +local function TransferBones(base, ragdoll) + if !IsValid(base) or !IsValid(ragdoll) then return end + for i = 0, ragdoll:GetPhysicsObjectCount() - 1 do + local bone = ragdoll:GetPhysicsObjectNum( i ) + if ( IsValid( bone ) ) then + local pos, ang = base:GetBonePosition( ragdoll:TranslatePhysBoneToBone( i ) ) + if ( pos ) then bone:SetPos( pos ) end + if ( ang ) then bone:SetAngles( ang ) end + end + end +end + +function ENT:ToRagdoll() + if IsValid(self) then + local rag = ents.Create("prop_ragdoll") + rag:SetModel(self:GetModel()) + rag:SetPos(self:GetPos()) + rag:Spawn() + rag:SetCollisionGroup(1) + for i=1,math.random(2,8) do + timer.Simple(i/math.Rand(2,4), function() + if IsValid(rag) then + util.Decal("Blood", rag:GetPos()+Vector(0,0,8), rag:GetPos()-Vector(math.random(-32,32), math.random(-32,32), 16)) + end + end) + end + timer.Simple(42, function() + if IsValid(rag) then + rag:SetRenderFX(kRenderFxFadeSlow) + end + end) + timer.Simple(45, function() + if IsValid(rag) then + rag:Remove() + end + end) + if IsValid(self.Transform) then + TransferBones(self.Transform, rag) + if self.Transform.HeadBlow == true then + self.Transform.HeadBlow = false + rag:ManipulateBoneScale(rag:LookupBone("ValveBiped.Bip01_Head1"), Vector(0,0,0)) + for i=1,4 do + local pos = rag:GetBonePosition(rag:LookupBone("ValveBiped.Bip01_Head1")) + local m = ents.Create("prop_physics") + m:SetModel("models/Gibs/HGIBS_scapula.mdl") + m:SetPos(pos) + m:SetAngles(AngleRand()) + m:Spawn() + m:SetMaterial("models/flesh") + m:SetCollisionGroup(1) + m:GetPhysicsObject():SetVelocity(VectorRand(-64,64)) + + local ef = EffectData() + ef:SetOrigin(pos) + util.Effect("BloodImpact", ef) + + timer.Simple(15, function() + if !IsValid(m) then return end + m:Remove() + end) + end + end + else + TransferBones(self, rag) + end + self:Remove() + end +end + +function ENT:Initialize() + if !IsValid(self.Transform) then + local anim = "dead"..math.random(1,54) + + timer.Simple(0.1, function() + if !IsValid(self) then return end + net.Start("tdm.giveanim") + net.WriteEntity(self) + net.WriteString(anim) + net.Broadcast() + end) + + self:ResetSequence(anim) + self:EmitSound("tdmg/ply/death"..math.random(1,14)..".wav") + + local mod = select(2, self:LookupSequence(anim)) + timer.Simple(mod, function() + if !IsValid(self) then return end + self:ToRagdoll() + end) + else + self:ToRagdoll() + end +end + +function ENT:Think() + local tr1 = util.TraceLine({ + start = self:GetBonePosition(self:LookupBone('ValveBiped.Bip01_Head1')), + endpos = self:GetBonePosition(self:LookupBone('ValveBiped.Bip01_Head1'))-self:GetForward()*4, + filter = function( ent ) return ( ent:GetClass() == "prop_static" or ent:GetClass() == "prop_dynamic" or ent:GetClass() == "func_door" or ent:GetClass() == "func_door_rotating" or ent:GetClass() == "prop_door_rotating" ) end + }) + local tr2 = util.TraceLine({ + start = self:GetBonePosition(self:LookupBone('ValveBiped.Bip01_Pelvis')), + endpos = self:GetBonePosition(self:LookupBone('ValveBiped.Bip01_Pelvis'))-self:GetForward()*4, + filter = function( ent ) return ( ent:GetClass() == "prop_static" or ent:GetClass() == "prop_dynamic" or ent:GetClass() == "func_door" or ent:GetClass() == "func_door_rotating" or ent:GetClass() == "prop_door_rotating" ) end + }) + local tr3 = util.TraceLine({ + start = self:GetBonePosition(self:LookupBone('ValveBiped.Bip01_Head1')), + endpos = self:GetBonePosition(self:LookupBone('ValveBiped.Bip01_Head1'))+self:GetForward()*4, + filter = function( ent ) return ( ent:GetClass() == "prop_static" or ent:GetClass() == "prop_dynamic" or ent:GetClass() == "func_door" or ent:GetClass() == "func_door_rotating" or ent:GetClass() == "prop_door_rotating" ) end + }) + local tr4 = util.TraceLine({ + start = self:GetBonePosition(self:LookupBone('ValveBiped.Bip01_Pelvis')), + endpos = self:GetBonePosition(self:LookupBone('ValveBiped.Bip01_Pelvis'))+self:GetForward()*4, + filter = function( ent ) return ( ent:GetClass() == "prop_static" or ent:GetClass() == "prop_dynamic" or ent:GetClass() == "func_door" or ent:GetClass() == "func_door_rotating" or ent:GetClass() == "prop_door_rotating" ) end + }) + + if tr1.Hit or tr2.Hit or tr3.Hit or tr4.Hit then + self:ToRagdoll() + end + + self:NextThink(CurTime()) + return true +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/tdm_deathanim/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_deathanim/shared.lua new file mode 100644 index 0000000..50e964b --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_deathanim/shared.lua @@ -0,0 +1,21 @@ +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.AutomaticFrameAdvance = true + +function ENT:Think() + self:NextThink(CurTime()) + return true +end + +if CLIENT then + net.Receive("tdm.giveanim", function() + local ent = net.ReadEntity() + local str = net.ReadString() + if IsValid(ent) then + ent:SetCycle(0) + ent:ResetSequence(str) + end + end) +else + util.AddNetworkString("tdm.giveanim") +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/tdm_domination_flag/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_domination_flag/shared.lua new file mode 100644 index 0000000..ae563ef --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_domination_flag/shared.lua @@ -0,0 +1,281 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.AutomaticFrameAdvance = true + +local SpeedMultiplier = 5 + +function ENT:GetLetter(small) + local type = self:GetNWFloat('Point') + local letter = "" + if type == 1 then + letter = "A" + elseif type == 2 then + letter = "B" + elseif type == 3 then + letter = "C" + end + if small then + letter = string.lower(letter) + end + return letter +end + +if SERVER then + function ENT:Initialize() + self:SetModel("models/tdmg/anim_flag_rework.mdl") + self:SetSolid(SOLID_VPHYSICS) + self:SetMaterial('models/debug/debugwhite') + self:ResetSequence("idle") + self:SetModelScale(0.4, 0) + self:SetNWFloat('Point', #ents.FindByClass("tdm_domination_flag")) + self:SetNWFloat('Team', 0) + self:SetNWFloat('Progress', 0) + self:SetCollisionGroup(1) + self.PreviousTakingTeam = 0 + self.CurrentTakingTeam = 0 + end + + function ENT:PlayPhrase(type, team) + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == team then + if type == "capture" then + pl:SendLua([[ + COD:SpeakerSay('tdmg/speaker/domination/friendly_captured_]]..self:GetLetter(true)..[[.wav') + ]]) + elseif type == "all_captured" then + pl:SendLua([[ + COD:SpeakerSay('tdmg/speaker/domination/friendly_captured_all.wav') + ]]) + elseif type == "taking" then + pl:SendLua([[ + COD:SpeakerSay('tdmg/speaker/domination/friendly_taking_]]..self:GetLetter(true)..[[ ('..math.random(1,3)..').wav') + ]]) + end + else + if type == "capture" then + pl:SendLua([[ + COD:SpeakerSay('tdmg/speaker/domination/hostile_captured_]]..self:GetLetter(true)..[[ ('..math.random(1,2)..').wav') + ]]) + elseif type == "all_captured" then + pl:SendLua([[ + COD:SpeakerSay('tdmg/speaker/domination/hostile_captured_all.wav') + ]]) + elseif type == "taking" then + pl:SendLua([[ + COD:SpeakerSay('tdmg/speaker/domination/hostile_taking_]]..self:GetLetter(true)..[[ ('..math.random(1,3)..').wav') + ]]) + end + end + end + end + + function ENT:Capture(team, plytab) + if plytab then + if self:GetNWFloat('Team') == 0 then + COD:GiveMessageCenter(plytab, 10) + for _, p in ipairs(plytab) do + p:ChangeScore(200) + end + else + COD:GiveMessageCenter(plytab, 11) + for _, p in ipairs(plytab) do + p:ChangeScore(100) + end + end + end + + local type = self:GetLetter() + self:SetNWFloat('Team', team) + self:SetNWFloat('Progress', 0) + self:PlayPhrase("capture", team) + + local all = true + for _, f in ipairs(ents.FindByClass("tdm_domination_flag")) do + if f:GetNWFloat('Team') != team then + all = false + break + end + end + if all then + self:PlayPhrase("all_captured", team) + end + end + + function ENT:Think() + local t = self:GetNWFloat('Team') + local prog = self:GetNWFloat('Progress') + local haveplayers = false + local teamcapture = 0 + local count = 0 + local plytab = {} + + for k, v in ipairs(ents.FindInSphere(self:GetPos(), 72)) do + if v:IsPlayer() and v:Alive() then + if teamcapture == 0 then + teamcapture = v:Team() + count = count+1 + else + if v:Team() == teamcapture then + count = count+1 + elseif v:Team() != teamcapture then + teamcapture = 0 + end + end + if teamcapture == v:Team() then + table.insert(plytab, v) + end + end + end + + self.PreviousTakingTeam = teamcapture + + if teamcapture > 0 then + if teamcapture == t then + self:SetNWFloat('Progress', math.max(self:GetNWFloat('Progress')-FrameTime()/100*count*SpeedMultiplier, 0)) + else + self:SetNWFloat('Progress', math.min(self:GetNWFloat('Progress')+FrameTime()/100*count*SpeedMultiplier, 1)) + if self.CurrentTakingTeam != self.PreviousTakingTeam then + self:PlayPhrase("taking", teamcapture) + end + end + if prog >= 1 then + self:Capture(teamcapture, plytab) + end + self.CurrentTakingTeam = self.PreviousTakingTeam + else + self.CurrentTakingTeam = 0 + end + + self:NextThink(CurTime()) + return true + end +else + function ENT:Draw() + self:DrawModel() + local ply = LocalPlayer() + local pteam = ply:Team() + local fteam = self:GetNWFloat('Team') + if fteam > 0 then + if pteam == fteam then + self:SetColor(Color(40,140,240)) + else + self:SetColor(Color(240,0,0)) + end + else + self:SetColor(Color(200,200,200)) + end + end + hook.Add("HUDPaint", "TDM_DominationFlags", function() + if COD.DataTable["Gamemode"] == 5 and not COD.HideHUD then + for k, ent in ipairs(ents.FindByClass("tdm_domination_flag")) do + if ent:GetPos():DistToSqr(LocalPlayer():GetPos()) <= 5184 then + LocalPlayer().DrawDominationFlag = ent + break + else + LocalPlayer().DrawDominationFlag = NULL + end + end + local df = LocalPlayer().DrawDominationFlag + for k, v in ipairs(ents.FindByClass("tdm_domination_flag")) do + local t = v:GetNWFloat('Team') + local type = v:GetNWFloat('Point') + local prog = v:GetNWFloat('Progress') + local myteam = LocalPlayer():Team() == t + local pos = (v:GetPos()+Vector(0,0,180)):ToScreen() + + if t > 0 then + if myteam then + surface.SetDrawColor(40,140,240) + surface.DrawRect(pos.x-16, pos.y-16, 32, 32) + + surface.SetDrawColor(240,0,0) + surface.DrawRect(pos.x-16, pos.y-16, 32, 32*prog) + + draw.SimpleText(COD.Language["hud_domination_2"], "Trebuchet18", pos.x, pos.y-32, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + else + surface.SetDrawColor(240,0,0) + surface.DrawRect(pos.x-16, pos.y-16, 32, 32) + + surface.SetDrawColor(40,140,240) + surface.DrawRect(pos.x-16, pos.y-16, 32, 32*prog) + + draw.SimpleText(COD.Language["hud_domination_1"], "Trebuchet18", pos.x, pos.y-32, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + else + surface.SetDrawColor(200,200,200) + surface.DrawRect(pos.x-16, pos.y-16, 32, 32) + + surface.SetDrawColor(100,100,100) + surface.DrawRect(pos.x-16, pos.y-16, 32, 32*prog) + + draw.SimpleText(COD.Language["hud_domination_1"], "Trebuchet18", pos.x, pos.y-32, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + + draw.SimpleText(math.floor(LocalPlayer():GetPos():Distance(v:GetPos())/40).." m", "Trebuchet18", pos.x, pos.y+32, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + + local letter = v:GetLetter() + draw.SimpleText(letter, "DermaLarge", pos.x, pos.y, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + if IsValid(df) and LocalPlayer():Alive() then + local prog = df:GetNWFloat('Progress') + local lt = df:GetLetter() + local t = df:GetNWFloat('Team') == LocalPlayer():Team() + + if prog > 0 then + surface.SetDrawColor(50,50,50) + surface.DrawRect(ScrW()/2-150, 250, 300, 6) + + surface.SetDrawColor(200,200,200) + surface.DrawRect(ScrW()/2-150, 220, 24, 24) + + draw.SimpleText(lt, "Trebuchet18", ScrW()/2-137, 233, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + + if t then + draw.SimpleText(COD.Language["hud_domination_2"], "Trebuchet18", ScrW()/2+150, 245, color_white, TEXT_ALIGN_RIGHT, TEXT_ALIGN_BOTTOM) + + surface.SetDrawColor(250,0,0) + surface.DrawRect(ScrW()/2-149, 251, 298*prog, 4) + else + COD:BeatsPlay("flag", prog) + draw.SimpleText(COD.Language["hud_domination_3"], "Trebuchet18", ScrW()/2+150, 245, color_white, TEXT_ALIGN_RIGHT, TEXT_ALIGN_BOTTOM) + + surface.SetDrawColor(50,150,250) + surface.DrawRect(ScrW()/2-149, 251, 298*prog, 4) + end + else + if t then + draw.SimpleText(COD.Language["hud_domination_2"], "DermaLarge", ScrW()/2, 245, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + + surface.SetDrawColor(0,100,200) + surface.DrawRect(ScrW()/2-12, 265, 24, 24) + + draw.SimpleText(lt, "Trebuchet18", ScrW()/2, 277, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + end + end + end + end) + + local beatdelay = 0 + function COD:BeatsPlay(type, float) + if beatdelay > CurTime() or !GetConVar("cod_music_enable"):GetBool() then return end + + local snd = "" + if type == "flag" then + if float > 0.9 then + snd = "tdmg/themes/flag4.wav" + elseif float > 0.7 then + snd = "tdmg/themes/flag3.wav" + elseif float > 0.4 then + snd = "tdmg/themes/flag2.wav" + else + snd = "tdmg/themes/flag1.wav" + end + end + + surface.PlaySound(snd) + beatdelay = CurTime() + SoundDuration(snd) + end +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_drone/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_drone/shared.lua new file mode 100644 index 0000000..b1957ee --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_drone/shared.lua @@ -0,0 +1,308 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "Bomb Drone" + +if SERVER then + util.AddNetworkString("COD.DroneCam") + + function ENT:Initialize() + self:SetModel("models/tdmg/drone_ex.mdl") + self:ResetSequence("idle") + self:SetHealth(100) + self.Velo = {x = 0, y = 0, z = 0} + self:SetSolid(SOLID_VPHYSICS) + self:PhysicsInit(SOLID_VPHYSICS) + self.MultSpeed = 200 + self.MaxSpeed = 200 + self.Smoking = false + self.DeltaTime = 0 + self:SetNWFloat('RemoveTime', CurTime()+30) + self:EmitSound("ambient/machines/spin_loop.wav", 80, 120, 1, CHAN_BODY) + + timer.Simple(0.1, function() + local ply = self:GetCreator() + if !IsValid(ply) then return end + + net.Start("COD.DroneCam") + net.WriteEntity(self) + net.Send(ply) + + ply.ControllingKillstreak = true + end) + end + + function ENT:OnRemove() + self:StopSound("ambient/machines/spin_loop.wav") + + local ply = self:GetCreator() + if !IsValid(ply) then return end + ply.ControllingKillstreak = false + end + + function ENT:PathNotBlock() + local tr = util.TraceLine( { + start = self:GetPos(), + endpos = self:GetPos() - self:GetRight() * 16, + filter = function(ent) + if ent != self then + return true + end + end + }) + return not tr.Hit + end + + function ENT:Think() + local ply = self:GetCreator() + if !IsValid(ply) then + self:Remove() + else + local mu = self.MultSpeed + local ms = self.MaxSpeed + local phys = self:GetPhysicsObject() + local vel = phys:GetVelocity() + + local pos = self:GetPos() + local ang = ply:EyeAngles().y + ply:SetActiveWeapon(nil) + if self:PathNotBlock() then + phys:SetVelocityInstantaneous(self:GetForward()*self.Velo.x+self:GetRight()*self.Velo.y+self:GetUp()*self.Velo.z+Vector(0,0,10)) + else + phys:SetVelocityInstantaneous(Vector(0,0,10)) + end + if ply:KeyDown(IN_FORWARD) then + self.Velo.x = math.Clamp(self.Velo.x+FrameTime()*mu, -ms, ms) + elseif ply:KeyDown(IN_BACK) then + self.Velo.x = math.Clamp(self.Velo.x-FrameTime()*mu, -ms, ms) + end + if ply:KeyDown(IN_MOVELEFT) then + self.Velo.y = math.Clamp(self.Velo.y-FrameTime()*mu, -ms, ms) + elseif ply:KeyDown(IN_MOVERIGHT) then + self.Velo.y = math.Clamp(self.Velo.y+FrameTime()*mu, -ms, ms) + end + if ply:KeyDown(IN_DUCK) then + self.Velo.z = math.Clamp(self.Velo.z-FrameTime()*mu, -ms, ms) + elseif ply:KeyDown(IN_SPEED) then + self.Velo.z = math.Clamp(self.Velo.z+FrameTime()*mu, -ms, ms) + end + if not ply:KeyDown(IN_FORWARD) and not ply:KeyDown(IN_BACK) then + if self.Velo.x > 5 or self.Velo.x < -5 then + if self.Velo.x > 0 then + self.Velo.x = math.Clamp(self.Velo.x-FrameTime()*mu, -ms, ms) + elseif self.Velo.x < 0 then + self.Velo.x = math.Clamp(self.Velo.x+FrameTime()*mu, -ms, ms) + end + else + self.Velo.x = 0 + end + end + if not ply:KeyDown(IN_SPEED) and not ply:KeyDown(IN_DUCK) then + if self.Velo.z > 5 or self.Velo.z < -5 then + if self.Velo.z > 0 then + self.Velo.z = math.Clamp(self.Velo.z-FrameTime()*mu, -ms, ms) + elseif self.Velo.z < 0 then + self.Velo.z = math.Clamp(self.Velo.z+FrameTime()*mu, -ms, ms) + end + else + self.Velo.z = 0 + end + end + if not ply:KeyDown(IN_MOVELEFT) and not ply:KeyDown(IN_MOVERIGHT) then + if self.Velo.y > 5 or self.Velo.y < -5 then + if self.Velo.y > 0 then + self.Velo.y = math.Clamp(self.Velo.y-FrameTime()*mu, -ms, ms) + elseif self.Velo.y < 0 then + self.Velo.y = math.Clamp(self.Velo.y+FrameTime()*mu, -ms, ms) + end + else + self.Velo.y = 0 + end + end + if ply:KeyDown(IN_ATTACK) or self:Health() < 0 or self:GetNWFloat('RemoveTime') < CurTime() then + self:Explode() + end + + local b = {} + b.secondstoarrive = 1 + b.pos = self:GetPos() + b.angle = Angle(0,ang,0) + b.maxangular = 20 + b.maxangulardamp = 5 + b.maxspeed = 10 + b.maxspeeddamp = 5 + b.dampfactor = 0.8 + b.teleportdistance = 0 + b.deltatime = CurTime()-self.DeltaTime + phys:ComputeShadowControl(b) + + self.DeltaTime = CurTime() + self:NextThink(CurTime()) + return true + end + end + + function ENT:Explode() + local explosion = ents.Create("env_explosion") + explosion:SetPos(self:GetPos()) + explosion:Spawn() + explosion:SetCreator(self) + explosion.Team = self.Team + explosion:SetKeyValue("iMagnitude", "300") + explosion:Fire("Explode", 0, 0) + self:Remove() + end + + function ENT:OnTakeDamage(dmgt) + local dmg = dmgt:GetDamage() + local att = dmgt:GetAttacker() + if att != self or att:IsPlayer() and att:Team() != self.Team then + self:SetHealth(self:Health()-dmg) + if IsValid(self:GetCreator()) then + self:GetCreator():ViewPunch(AngleRand(-1,1)) + self:EmitSound("physics/metal/metal_box_impact_bullet"..math.random(1,3)..".wav") + end + end + end +else + local function CanSee(pos1, pos2) + local tr = util.TraceLine( { + start = pos1, + endpos = pos2, + filter = function(ent) if ent:IsWorld() then return true end end, + }) + return !tr.Hit + end + + local enemyMat = Material("tdmg/hud/radar/enemy.png", "noclamp") + local glitchMat = Material("tdmg/hud/screenglitch.jpg", "noclamp") + + net.Receive("COD.DroneCam", function() + local ent = net.ReadEntity() + local alpha = 0 + local downa = false + local tab = { + [ "$pp_colour_addr" ] = 0, + [ "$pp_colour_addg" ] = 0, + [ "$pp_colour_addb" ] = 0, + [ "$pp_colour_brightness" ] = 0, + [ "$pp_colour_contrast" ] = 0.9, + [ "$pp_colour_colour" ] = 0.1, + [ "$pp_colour_mulr" ] = 0, + [ "$pp_colour_mulg" ] = 0, + [ "$pp_colour_mulb" ] = 0 + } + + hook.Add("RenderScreenspaceEffects", "DroneCam", function() + DrawColorModify(tab) + end) + + hook.Add("HUDPaint", "DroneCam", function() + surface.SetDrawColor(50,50,50,100) + surface.SetMaterial(glitchMat) + surface.DrawTexturedRect(0, 0, ScrW(), ScrH()) + + surface.SetDrawColor(255,255,255) + surface.DrawOutlinedRect(50, 50, ScrW()-100, ScrH()-100, 2) + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2-15, ScrH()/2-1, 30, 2) + + + surface.SetDrawColor(255,255,255,255) + surface.DrawRect(ScrW()/2-1, ScrH()/2-16, 2, 30) + + -------------------------------------------------------------------------------- + + draw.SimpleText("✷ BOMB DRONE", "DermaLarge", 100, 100, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + draw.SimpleText("ACTIVE", "DermaLarge", 100, 130, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + + draw.SimpleText("PRESS LMB TO EXPLODE", "DermaLarge", ScrW()-100, ScrH()-130, color_white, TEXT_ALIGN_RIGHT, TEXT_ALIGN_TOP) + draw.SimpleText("SHIFT TO UPPER", "DermaLarge", ScrW()-100, ScrH()-160, color_white, TEXT_ALIGN_RIGHT, TEXT_ALIGN_TOP) + draw.SimpleText("CTRL TO LOWER", "DermaLarge", ScrW()-100, ScrH()-190, color_white, TEXT_ALIGN_RIGHT, TEXT_ALIGN_TOP) + + if downa then + alpha = alpha - FrameTime()*512 + if alpha <= 0 then + downa = false + end + else + alpha = alpha + FrameTime()*512 + if alpha >= 255 then + downa = true + end + end + -------------------------------------------------------------------------------- + + surface.SetDrawColor(220,220,220,255) + surface.DrawRect(75, ScrH()-220, 300*((ent:GetNWFloat('RemoveTime')-CurTime())/30), 15) + + surface.SetDrawColor(255,255,255,255) + surface.DrawOutlinedRect(75, ScrH()-220, 300, 15, 2) + + draw.SimpleText("BATTERY", "DermaLarge", 75, ScrH()-250, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + + surface.SetDrawColor(220,220,220,255) + surface.DrawRect(75, ScrH()-120, 300*(ent:Health()/100), 15) + + surface.SetDrawColor(255,255,255) + surface.DrawOutlinedRect(75, ScrH()-120, 300, 15, 2) + + draw.SimpleText("HEALTH", "DermaLarge", 75, ScrH()-150, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + --------------------------------------------------------------------------------- + + for _, ply in ipairs(player.GetAll()) do + if ply:Alive() and ply:Team() != LocalPlayer():Team() and ply:GetNWFloat('Perk2') != 4 then + local pos = ply:WorldSpaceCenter():ToScreen() + + if CanSee(EyePos(), ply:WorldSpaceCenter()) then + surface.SetDrawColor(200,0,0,200) + elseif ply:WorldSpaceCenter():DistToSqr(EyePos()) < 1500000 then + surface.SetDrawColor(255,255,255,100) + surface.DrawRect(pos.x-1, pos.y-5, 1, 10) + surface.SetDrawColor(255,255,255,100) + surface.DrawRect(pos.x-5, pos.y-1, 10, 1) + + surface.SetDrawColor(200,200,200,50) + else + surface.SetDrawColor(0,0,0,0) + end + surface.SetMaterial(enemyMat) + surface.DrawTexturedRect(pos.x-20, pos.y-20, 40, 40) + end + end + end) + + hook.Add("CreateMove", "DroneCam", function(cmd) + cmd:SetForwardMove(0) + cmd:SetSideMove(0) + cmd:RemoveKey(IN_JUMP) + cmd:RemoveKey(IN_USE) + end) + + hook.Add("CalcView", "DroneCam", function( ply, pos, angles, fov ) + if IsValid(ent) then + COD.HideHUD = true + COD.HUD_DisableSomeThink = true + local pos1 = ent:GetPos()-ent:GetUp()*1-ent:GetForward()*4 + local ang1 = angles + local view = { + origin = pos1, + angles = ang1, + fov = fov, + drawviewer = true + } + + return view + else + COD.HideHUD = false + COD.HUD_DisableSomeThink = false + hook.Remove("CalcView", "DroneCam") + hook.Remove("CreateMove", "DroneCam") + hook.Remove("RenderScreenspaceEffects", "DroneCam") + hook.Remove("HUDPaint", "DroneCam") + end + end) + end) +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_flash/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_flash/shared.lua new file mode 100644 index 0000000..2aacb0c --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_flash/shared.lua @@ -0,0 +1,75 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "Flash Grenade" + +if SERVER then + util.AddNetworkString("COD.FlashLight") + function ENT:Initialize() + self:SetModel("models/weapons/w_eq_flashbang.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetUseType(SIMPLE_USE) + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + timer.Simple(3, function() + if IsValid(self) then + self:Explode(self.Player) + end + end) + end + + function ENT:PhysicsCollide( data, phys ) + if data.Speed > 50 then + self:EmitSound("weapons/flashbang/grenade_hit1.wav") + end + end + + function ENT:Explode(ply) + local givehitmarker = false + for _, p in ipairs(ents.FindInSphere(self:GetPos(), 400)) do + if p:IsPlayer() and (p:Team() != ply:Team() or p == ply) and p:IsLineOfSightClear(self) then + p:SetDSP(32) + p:ScreenFade(SCREENFADE.IN, color_white, 4, 4) + givehitmarker = true + end + if p.FlashEntity and p.Team != ply:Team() and p:IsLineOfSightClear(self) then + p:FlashEntity() + end + end + + if givehitmarker then + net.Start("COD.HitMarkEnemy") + net.WriteBool(false) + net.WriteBool(false) + net.Send(ply) + end + + net.Start("COD.FlashLight") + net.WriteEntity(self) + net.Broadcast() + + self:EmitSound("weapons/flashbang/flashbang_explode2.wav") + timer.Simple(0.1, function() + if !IsValid(self) then return end + self:Remove() + end) + end +else + net.Receive("COD.FlashLight", function() + local ent = net.ReadEntity() + if IsValid(ent) then + local dl = DynamicLight(ent) + if dl then + dl.pos = ent:GetPos() + dl.r = 255 + dl.g = 255 + dl.b = 255 + dl.brightness = 2 + dl.Decay = 1000 + dl.Size = 256 + dl.DieTime = CurTime() + 1 + end + end + end) +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_frag/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_frag/shared.lua new file mode 100644 index 0000000..67ed502 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_frag/shared.lua @@ -0,0 +1,38 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "Frag Grenade" + +if SERVER then + function ENT:Initialize() + self:SetModel("models/cod/eqp_lethal_frag.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetUseType(SIMPLE_USE) + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + timer.Simple(4, function() + if IsValid(self) then + self:Explode(self.Player) + end + end) + end + + function ENT:PhysicsCollide( data, phys ) + if data.Speed > 50 then + self:EmitSound("weapons/hegrenade/he_bounce-1.wav") + end + end + + function ENT:Explode(ply) + util.BlastDamage(ply, ply, self:GetPos(), 400, 200) + local detonate = ents.Create( "env_explosion" ) + detonate:SetPos(self.Entity:GetPos()) + detonate:SetKeyValue("iMagnitude", "0") + detonate:Spawn() + detonate:Activate() + detonate:Fire("Explode", "", 0) + self:EmitSound("ambient/explosions/explode_2.wav") + self:Remove() + end +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_harrier/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_harrier/shared.lua new file mode 100644 index 0000000..51e788f --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_harrier/shared.lua @@ -0,0 +1,229 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "VTOL" +ENT.AutomaticFrameAdvance = true + +if SERVER then + function ENT:Initialize() + self:SetModel("models/tdmg/harrier.mdl") + self:SetHealth(3500) + self.Velo = {x = 0, y = 0} + self:SetSolid(SOLID_VPHYSICS) + self:PhysicsInit(SOLID_VPHYSICS) + self.Height = COD.DataTable["AirVehicle_FlyHeight"] + self.Smoking = false + self.DisableThinkPart = false + self.CantBeDamaged = true + self.FireDelay = CurTime() + 1 + self.SeekDelay = CurTime() + 2 + self:SetNWFloat('RemoveTime', CurTime() + 60) + self.Removing = false + self.Target = nil + self.Team = 1 + self.Actions = { + ["MoveForward"] = false, + ["MoveBack"] = false, + ["MoveLeft"] = false, + ["MoveRight"] = false, + } + self:SetBodygroup(3, 1) + self:SetBodygroup(4, 1) + self:ManipulateBoneScale(10, Vector(0,0,0)) + self:ManipulateBoneScale(11, Vector(0,0,0)) + self:ManipulateBoneScale(7, Vector(0,0,0)) + timer.Simple(1, function() + if !IsValid(self) then return end + self:EmitSound("ambient/machines/aircraft_distant_flyby3.wav", 90, 90, 1) + end) + self:PlaySeq("arrive", 10, function() + self:EmitSound(")ambient/energy/force_field_loop1.wav", 90, 70, 1) + end) + + timer.Simple(5, function() + if !IsValid(self) then return end + + if self.Team == 1 then + self.VJ_NPC_Class = {"CLASS_SPECGRU"} + elseif self.Team == 2 then + self.VJ_NPC_Class = {"CLASS_KORTAC"} + end + end) + end + + function ENT:PlaySeq(name, long, onfinish) + self:SetCycle(0) + self:ResetSequence(name) + self.CantBeDamaged = true + self:SetNotSolid(true) + + if !isfunction(onfinish) then + onfinish = function() end + end + + timer.Create("MI24Anim"..self:EntIndex(), long, 1, function() + if !IsValid(self) then return end + + self:ResetSequence("idle") + self:SetNotSolid(false) + self.CantBeDamaged = false + onfinish() + end) + end + + function ENT:OnRemove() + self:StopSound(")ambient/energy/force_field_loop1.wav") + end + + function ENT:GetTurretPos() + local bone = self:GetPos()+self:GetForward()*96 + return bone + end + + function ENT:Attack() + local tar = self.Target + + if !IsValid(tar) then + local tab = ents.FindInSphere(self:GetPos(), 4096) + table.Shuffle(tab) + for _, ent in ipairs(tab) do + if self:VisibleVec(ent:GetPos()) then + if ent:IsNPC() and ent:Health() > 0 and (ent.Team and ent.Team != self.Team or !ent.Team) then + self.Target = ent + break + end + if ent:IsPlayer() and ent:Alive() and ent:Team() != self.Team and ent:GetNWFloat('Perk2') != 4 then + self.Target = ent + break + end + end + end + end + + if IsValid(tar) and self.FireDelay < CurTime() then + self.FireDelay = CurTime() + 0.06 + + if self:AngleToEnemy(tar) < 45 and self.SeekDelay < CurTime() then + local dir = (tar:GetPos()-self:GetTurretPos()):GetNormalized() + + self:EmitSound("weapons/ar2/fire1.wav", 90, 85, 1, CHAN_WEAPON) + self:FireBullets({ + IgnoreEntity = self, + Spread = VectorRand(-0.06, 0.06), + Damage = 25, + Dir = dir, + Src = self:GetTurretPos(), + }) + end + + if not self:VisibleVec(tar:GetPos()) or tar:Health() <= 0 then + self.SeekDelay = CurTime() + 2 + self.Target = nil + end + end + end + + function ENT:AngleToEnemy(enemy) + local selfAngles = self:GetAngles() + local enemyPos = enemy:GetPos() + local angleToEnemy = (enemyPos - self:GetPos()):Angle() + angleToEnemy.x = 0 + angleToEnemy.z = 0 + local diff = math.AngleDifference(angleToEnemy.y, selfAngles.y) + return math.abs(diff) + end + + function ENT:RotateToEntity(ent2, divisor) + local ent1Angles = self:GetAngles() + local targetAngles = (ent2:GetPos() - self:GetPos()):Angle() + local yawDiff = math.NormalizeAngle(targetAngles.y - ent1Angles.y) + + self:SetAngles(Angle(0, ent1Angles.y + yawDiff / divisor, 0)) + end + + function ENT:Controls() + local tar = self.Target + if IsValid(tar) then + self:RotateToEntity(tar, 45) + end + end + + function ENT:Think() + local mu = self.MultSpeed + local ms = self.MaxSpeed + local vel = self:GetPhysicsObject():GetVelocity() + vel.z = 0 + + if not self.DisableThinkPart then + if not self.CantBeDamaged then + self:Attack() + self:Controls() + end + + local pos = self:GetPos() + self:SetPos(Vector(pos.x, pos.y, self.Height)) + local ang = self:GetAngles().y + self:SetAngles(Angle(0,ang,0)) + + if self:GetNWFloat('RemoveTime') < CurTime() and not self.Removing and not self.DisableThinkPart then + self.Removing = true + self:EmitSound("ambient/machines/aircraft_distant_flyby1.wav", 90, 90, 1) + self:StopSound("ambient/energy/force_field_loop1.wav") + self:PlaySeq("finish", 4, function() + self:Remove() + end) + end + if self:Health() <= 1000 and not self.Smoking then + self.Smoking = true + ParticleEffectAttach("Rocket_Smoke_Trail", 4, self, 2) + end + if self:Health() <= 0 then + self:DestroyHeli() + end + end + + self:ManipulateBoneAngles(0, Angle(0,(math.sin(CurTime())*4),(math.sin(CurTime()*2)*4))) + self:ManipulateBonePosition(0, Vector(0,0,(math.sin(CurTime())*10))) + + self:NextThink(CurTime()) + return true + end + + function ENT:OnTakeDamage(dmgt) + if self.CantBeDamaged then return end + local dmg = dmgt:GetDamage() + local att = dmgt:GetAttacker() + if att != self or att:IsPlayer() and att:Team() != self.Team then + self:SetHealth(self:Health()-dmg) + if IsValid(self:GetCreator()) then + self:GetCreator():ViewPunch(AngleRand(-1,1)) + self:EmitSound("physics/metal/metal_box_impact_bullet"..math.random(1,3)..".wav") + end + end + end + + function ENT:DestroyHeli() + self.DisableThinkPart = true + self.DestroyVelocity = 2000 + self:EmitSound("ambient/explosions/explode_9.wav") + self.PhysicsCollide = function(self) + ParticleEffect("explosion_huge_h", self:GetPos()+Vector(0,0,32), Angle(0,0,0)) + self:EmitSound("tdmg/a10_explosion.wav", 0) + self:Remove() + end + self.Think = function(self) + local RPM = self.DestroyVelocity + local p = self:GetPhysicsObject() + if IsValid(p) then + local angvel = p:GetAngleVelocity() + p:AddAngleVelocity(Vector(angvel.x > 100 and 0 or RPM*0.01,0,angvel.z > 200 and 0 or math.Clamp(RPM,0,4000)*0.04)) + + local vel = p:GetVelocity() + p:SetVelocity(-vel-Vector(0,0,500)) + end + self:NextThink(CurTime()) + return true + end + end +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_infil/cl_init.lua b/gamemodes/cod_custom/entities/entities/tdm_infil/cl_init.lua new file mode 100644 index 0000000..926d058 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_infil/cl_init.lua @@ -0,0 +1,5 @@ +include("shared.lua") + +function ENT:DrawTranslucent(flags) + self:DrawModel(flags) +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/tdm_infil/init.lua b/gamemodes/cod_custom/entities/entities/tdm_infil/init.lua new file mode 100644 index 0000000..8f6d403 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_infil/init.lua @@ -0,0 +1,4 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/tdm_infil/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_infil/shared.lua new file mode 100644 index 0000000..1bdb5b2 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_infil/shared.lua @@ -0,0 +1,266 @@ +ENT.Base = "base_gmodentity" +ENT.Type = "anim" + +ENT.Spawnable = true +ENT.AdminOnly = true +ENT.PrintName = "Helicoper" +ENT.Category = "BWA" +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT +ENT.Model = Model("models/tdmg/heli.mdl") +ENT.AutomaticFrameAdvance = true + +ENT.SoundTable = { + { + t = 0, + s = "tdmg/sas1_veh1_int_quad_front_stat.wav", + b = "tag_main_rotor_static", + v = 250 + }, + { + t = 0, + s = "tdmg/sas1_veh1_ceilingrattles_spot_stat.wav", + b = "tag_main_rotor_static" + }, + { + t = 0, + s = "tdmg/sas1_veh1_int_quad_rear_stat.wav", + b = "tail_rotor_jnt", + v = 135 + }, + { + t = 22 / 30, + s = "tdmg/sas1_veh1_foley_doorman_npc.wav", + b = "tag_origin" + }, + { + t = 22 / 30, + s = "tdmg/sas1_veh1_door_ster_pan.wav", + b = "tag_origin" + }, + { + t = 0, + s = "tdmg/sas1_veh1_foley_seat1_plr.wav", + b = "tag_origin" + }, + { + t = 42 / 30, + s = "tdmg/sas1_veh1_rope_spot_stat.wav", + b = "tag_origin" + }, + { + t = 184 / 30, + s = "tdmg/sas1_veh1_foley_seat1_npc.wav", + b = "tag_origin" + }, + { + t = 190 / 30, + s = "tdmg/sas1_veh1_foley_seat2_npc.wav", + b = "tag_origin" + }, + { + t = 280 / 30, + s = "tdmg/sas1_veh1_foley_seat3_npc.wav", + b = "tag_origin" + }, + { + t = 328 / 30, + s = "tdmg/sas1_veh1_ext_ster_pan.wav", + b = "tag_origin" + }, +} + +function ENT:Initialize() + self:SetModel(self.Model) + + if SERVER then + self:SetHealth(1) + self:SetPos(self:GetPos() + Vector(0, 0, 10)) + + local tr = { + start = self:GetPos(), + endpos = self:GetPos() + Vector(0, 0, 512) + } + + if tr.HitSky then + self:SetAngles(Angle(0, math.Rand(0, 360), 0)) + else + local testpos = self:GetPos() + Vector(0, 0, 512) + + local amt = 15 + + local best = 0 + local best_dist = math.huge + + local offset = math.Rand(0, 360) + + for i = 1, amt do + local angle = math.Rand(0, 360) + + local str = util.TraceLine({ + start = testpos, + endpos = testpos + Angle(0, angle + offset, 0):Forward() * 10000 + }) + + if str.HitSky then + best = angle + break + elseif str.Fraction == 1 then + best = angle + break + elseif str.Fraction * 10000 > best_dist then + best = angle + best_dist = str.Fraction * 10000 + end + end + + self:SetAngles(Angle(0, best + offset + 180 - 10, 0)) + self:SetPos(self:LocalToWorld(-Vector(107.472321, -70.542793, 0))) + end + end + + timer.Simple(14, function() + if !IsValid(self) then return end + self:Finish() + end) + + timer.Simple(31.6, function() + if !IsValid(self) then return end + + self:SetRenderFX(kRenderFxFadeSlow) + end) + + timer.Simple(36.6, function() + if !IsValid(self) then return end + + if SERVER then + self:Remove() + end + end) + + if CLIENT then return end + self:ResetSequence("spawn") + + for _, s in ipairs(self.SoundTable) do + timer.Simple(s.t, function() + if !IsValid(self) then return end + + local sproxy = ents.Create("tdm_infil_soundproxy") + sproxy:SetOwner(self:GetOwner()) + sproxy:SetPos(self:GetPos()) + sproxy:SetAngles(self:GetAngles()) + sproxy:SetParent(self) + sproxy.Sound = s.s + sproxy.Bone = s.b + sproxy.Vol = s.v or 100 + sproxy:Spawn() + end) + end + + self.mod1, self.mod1_1 = self:CreateSoldierModel(1) + self.mod2, self.mod2_1 = self:CreateSoldierModel(2) + self.mod3, self.mod3_1 = self:CreateSoldierModel(3) + self.mod4, self.mod4_1 = self:CreateSoldierModel(4) + + timer.Simple(11.5, function() + if IsValid(self.mod1) then + self:CreateSoldierNPCFromModel(1) + self.mod1:Remove() + end + end) + timer.Simple(12.5, function() + if IsValid(self.mod2) then + self:CreateSoldierNPCFromModel(2) + self.mod2:Remove() + end + end) + timer.Simple(14, function() + if IsValid(self.mod3) then + self:CreateSoldierNPCFromModel(3) + self.mod3:Remove() + end + end) +end + +function ENT:Finish() + if CLIENT then return end + self:SetBodygroup(3, 1) + if IsValid(self.mod4) then + self.mod4:Remove() + end +end + +function ENT:CreateSoldierModel(type) + local friend = ents.Create("prop_dynamic") + local friend2 = ents.Create("base_anim") + if type == 1 then + friend:SetModel("models/tdmg/guy01.mdl") + elseif type == 2 then + friend:SetModel("models/tdmg/guy02.mdl") + elseif type == 3 then + friend:SetModel("models/tdmg/guy03.mdl") + elseif type == 4 then + friend:SetModel("models/tdmg/chiefl.mdl") + end + friend:SetPos(self:GetPos()) + friend:SetAngles(self:GetAngles()) + friend:SetParent(self) + friend:Spawn() + friend:ResetSequence('spawn') + if self.Team2Team then + friend2:SetModel("models/tdmg/pm/kortac_1_"..math.random(1,4).."_pm.mdl") + if self.Invasion then + friend2:SetModel("models/bread/cod/characters/shadow_company/shadow_company_cqc.mdl") + end + else + friend2:SetModel("models/tdmg/pm/specgru_milsim_"..math.random(1,4).."_1_pm.mdl") + if self.Invasion then + friend2:SetModel("models/humangrunt/mw2/tf141_brazil_pm.mdl") + end + end + friend2:SetPos(self:GetPos()) + friend2:SetAngles(self:GetAngles()) + friend2:SetParent(friend) + friend2:AddEffects(1) + friend2:Spawn() + return friend, friend2 +end + +function ENT:CreateSoldierNPCFromModel(type) + local pos = self:GetPos() + local ang = self:GetAngles() + local bgs = self + if type == 1 then + pos = self:LocalToWorld(Vector(112.3, -73.6, -10)) + ang = self.mod1:GetAngles()+Angle(0,180,0) + bgs = self.mod1_1 + elseif type == 2 then + pos = self:LocalToWorld(Vector(66.85, -115.5, -10)) + ang = self.mod2:GetAngles()+Angle(0,180,0) + bgs = self.mod2_1 + elseif type == 3 then + pos = self:LocalToWorld(Vector(73.1, -40.8, -10)) + ang = self.mod3:GetAngles()+Angle(0,180,0) + bgs = self.mod3_1 + end + local class = "vj_tdm_npc" + if self.Invasion then + class = "vj_tdm_invasion_soldier1" + if self.Team2Team then + class = "vj_tdm_invasion_soldier2" + end + end + local friend = ents.Create(class) + friend:SetPos(pos) + friend:SetAngles(ang) + if self.Team2Team then + friend.Team = 2 + else + friend.Team = 1 + end + friend:Spawn() +end + +function ENT:Think() + self:NextThink(CurTime()) + return true +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/tdm_infil_soundproxy.lua b/gamemodes/cod_custom/entities/entities/tdm_infil_soundproxy.lua new file mode 100644 index 0000000..679eb51 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_infil_soundproxy.lua @@ -0,0 +1,56 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" + +ENT.Spawnable = false +ENT.AdminOnly = false +ENT.PrintName = "Soundproxy" +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT + +ENT.Bone = "" +ENT.Sound = "" +ENT.DieTime = 0 +ENT.Vol = 100 + +function ENT:Initialize() + self:SetModel("models/editor/axis_helper.mdl") + + if CLIENT then return end + if !IsValid(self:GetParent()) then self:Remove() return end + + local filter = RecipientFilter() + filter:AddAllPlayers() + + self.DieTime = CurTime() + SoundDuration(self.Sound) + self.PlayedSound = CreateSound(self, self.Sound, filter) + self.PlayedSound:Play() + self.PlayedSound:ChangeVolume(self.Vol, 0) +end + +function ENT:OnRemove() + if self.PlayedSound then + self.PlayedSound:Stop() + end +end + +function ENT:Think() + if CLIENT then return end + if !IsValid(self:GetParent()) then self:Remove() return end + + local parent = self:GetParent() + + local boneid = parent:LookupBone(self.Bone) + + if !boneid then self:Remove() return end + + local pos = parent:GetBonePosition(boneid) + + self:SetPos(pos) + + if self.DieTime < CurTime() then self:Remove() return end +end + +function ENT:Draw() + return +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/tdm_mi24/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_mi24/shared.lua new file mode 100644 index 0000000..91c382e --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_mi24/shared.lua @@ -0,0 +1,292 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "MI24" +ENT.AutomaticFrameAdvance = true + +if SERVER then + function ENT:Initialize() + self:SetModel("models/tdmg/mi24d.mdl") + self:SetHealth(5000) + self.Velo = {x = 0, y = 0} + self:SetSolid(SOLID_VPHYSICS) + self:PhysicsInit(SOLID_VPHYSICS) + self.MultSpeed = 100 + self.MaxSpeed = 300 + self.Height = COD.DataTable["AirVehicle_FlyHeight"] + self.Smoking = false + self.DisableThinkPart = false + self.CantBeDamaged = true + self.FireDelay = CurTime() + 1 + self.SeekDelay = CurTime() + 2 + self.ControlDelay = CurTime() + 1 + self:SetNWFloat('RemoveTime', CurTime() + 60) + self.Removing = false + self.Target = nil + self.Team = 1 + self.Actions = { + ["MoveForward"] = false, + ["MoveBack"] = false, + ["MoveLeft"] = false, + ["MoveRight"] = false, + } + self:SetBodygroup(3, 1) + self:SetBodygroup(4, 1) + self:ManipulateBoneScale(10, Vector(0,0,0)) + self:ManipulateBoneScale(11, Vector(0,0,0)) + self:ManipulateBoneScale(7, Vector(0,0,0)) + self:ManipulateBoneAngles(5, Angle(0,40,0)) + timer.Simple(1, function() + if !IsValid(self) then return end + self:EmitSound("ambient/levels/streetwar/heli_distant1.wav", 90, 90, 1) + end) + self:PlaySeq("arrive", 5, function() + self:EmitSound(")npc/attack_helicopter/aheli_rotor_loop1.wav", 90, 90, 1) + end) + + timer.Simple(5, function() + if !IsValid(self) then return end + + if self.Team == 1 then + self.VJ_NPC_Class = {"CLASS_SPECGRU"} + elseif self.Team == 2 then + self.VJ_NPC_Class = {"CLASS_KORTAC"} + end + end) + end + + function ENT:PlaySeq(name, long, onfinish) + self:SetCycle(0) + self:ResetSequence(name) + self.CantBeDamaged = true + self:SetNotSolid(true) + + if !isfunction(onfinish) then + onfinish = function() end + end + + timer.Create("MI24Anim"..self:EntIndex(), long, 1, function() + if !IsValid(self) then return end + + self:ResetSequence("idle") + self:SetNotSolid(false) + self.CantBeDamaged = false + onfinish() + end) + end + + function ENT:OnRemove() + self:StopSound("npc/attack_helicopter/aheli_rotor_loop1.wav") + end + + function ENT:GetTurretPos() + local bone = self:GetBonePosition(8) + return bone + end + + function ENT:Attack() + local tar = self.Target + + if !IsValid(tar) then + local tab = ents.FindInSphere(self:GetPos(), 4096) + table.Shuffle(tab) + for _, ent in ipairs(tab) do + if self:VisibleVec(ent:GetPos()) then + if ent:IsNPC() and ent:Health() > 0 and (ent.Team and ent.Team != self.Team or !ent.Team) then + self.Target = ent + break + end + if ent:IsPlayer() and ent:Alive() and ent:Team() != self.Team and ent:GetNWFloat('Perk2') != 4 then + self.Target = ent + break + end + end + end + end + + if IsValid(tar) and self.FireDelay < CurTime() then + self.FireDelay = CurTime() + 0.06 + + if self:AngleToEnemy(tar) < 45 and self.SeekDelay < CurTime() then + local dir = (tar:GetPos()-self:GetTurretPos()):GetNormalized() + + self:EmitSound("weapons/ar2/fire1.wav", 90, 80, 1, CHAN_WEAPON) + self:FireBullets({ + IgnoreEntity = self, + Spread = VectorRand(-0.06, 0.06), + Damage = 30, + Dir = dir, + Src = self:GetTurretPos(), + }) + end + + if not self:VisibleVec(tar:GetPos()) or tar:Health() <= 0 then + self.ControlDelay = CurTime() + 4 + self.SeekDelay = CurTime() + 2 + self.Target = nil + end + end + end + + function ENT:AngleToEnemy(enemy) + local selfAngles = self:GetAngles() + local enemyPos = enemy:GetPos() + local angleToEnemy = (enemyPos - self:GetPos()):Angle() + angleToEnemy.x = 0 + angleToEnemy.z = 0 + local diff = math.AngleDifference(angleToEnemy.y, selfAngles.y) + return math.abs(diff) + end + + function ENT:RotateToEntity(ent2, divisor) + local ent1Angles = self:GetAngles() + local targetAngles = (ent2:GetPos() - self:GetPos()):Angle() + local yawDiff = math.NormalizeAngle(targetAngles.y - ent1Angles.y) + + self:SetAngles(Angle(0, ent1Angles.y + yawDiff / divisor, 0)) + end + + function ENT:Controls() + local tar = self.Target + --[[self.Actions = { + ["MoveForward"] = false, + ["MoveBack"] = false, + ["MoveLeft"] = false, + ["MoveRight"] = false, + }]]-- + if IsValid(tar) then + if self.ControlDelay < CurTime() then + self.ControlDelay = CurTime() + math.Rand(1,5) + self.Actions = { + ["MoveForward"] = math.random(1,2) == 1, + ["MoveBack"] = math.random(1,6) == 1, + ["MoveLeft"] = math.random(1,4) == 1, + ["MoveRight"] = math.random(1,4) == 1, + } + end + self:RotateToEntity(tar, 75) + else + if self.ControlDelay < CurTime() then + self.Actions = { + ["MoveForward"] = false, + ["MoveBack"] = false, + ["MoveLeft"] = false, + ["MoveRight"] = false, + } + end + end + end + + function ENT:Think() + local mu = self.MultSpeed + local ms = self.MaxSpeed + local vel = self:GetPhysicsObject():GetVelocity() + vel.z = 0 + + if not self.DisableThinkPart then + if not self.CantBeDamaged then + self:Attack() + self:Controls() + self:GetPhysicsObject():SetVelocity(-vel+self:GetForward()*self.Velo.x+self:GetRight()*self.Velo.y) + end + + local pos = self:GetPos() + self:SetPos(Vector(pos.x, pos.y, self.Height)) + local ang = self:GetAngles().y + self:SetAngles(Angle(0,ang,0)) + + if self.Actions["MoveRight"] then + self.Velo.x = math.Clamp(self.Velo.x+FrameTime()*mu, -ms, ms) + elseif self.Actions["MoveLeft"] then + self.Velo.x = math.Clamp(self.Velo.x-FrameTime()*mu, -ms, ms) + end + if self.Actions["MoveForward"] then + self.Velo.y = math.Clamp(self.Velo.y-FrameTime()*mu, -ms, ms) + elseif self.Actions["MoveBack"] then + self.Velo.y = math.Clamp(self.Velo.y+FrameTime()*mu, -ms, ms) + end + if not self.Actions["MoveLeft"] and not self.Actions["MoveRight"] then + if self.Velo.x > 5 or self.Velo.x < -5 then + if self.Velo.x > 0 then + self.Velo.x = math.Clamp(self.Velo.x-FrameTime()*mu, -ms, ms) + elseif self.Velo.x < 0 then + self.Velo.x = math.Clamp(self.Velo.x+FrameTime()*mu, -ms, ms) + end + else + self.Velo.x = 0 + end + end + if not self.Actions["MoveForward"] and not self.Actions["MoveBack"] then + if self.Velo.y > 5 or self.Velo.y < -5 then + if self.Velo.y > 0 then + self.Velo.y = math.Clamp(self.Velo.y-FrameTime()*mu, -ms, ms) + elseif self.Velo.y < 0 then + self.Velo.y = math.Clamp(self.Velo.y+FrameTime()*mu, -ms, ms) + end + else + self.Velo.y = 0 + end + end + if self:GetNWFloat('RemoveTime') < CurTime() and not self.Removing and not self.DisableThinkPart then + self.Removing = true + self:EmitSound("ambient/levels/streetwar/heli_distant1.wav", 90, 90, 1) + self:StopSound("npc/attack_helicopter/aheli_rotor_loop1.wav") + self:PlaySeq("finish", 8, function() + self:Remove() + end) + end + if self:Health() <= 1000 and not self.Smoking then + self.Smoking = true + ParticleEffectAttach("Rocket_Smoke_Trail", 4, self, 2) + end + if self:Health() <= 0 then + self:DestroyHeli() + end + end + + self:ManipulateBoneAngles(0, Angle(0,(math.sin(CurTime())*4),(math.sin(CurTime()*2)*4))) + self:ManipulateBonePosition(0, Vector(0,0,(math.sin(CurTime())*10))) + + self:NextThink(CurTime()) + return true + end + + function ENT:OnTakeDamage(dmgt) + if self.CantBeDamaged then return end + local dmg = dmgt:GetDamage() + local att = dmgt:GetAttacker() + if att != self or att:IsPlayer() and att:Team() != self.Team then + self:SetHealth(self:Health()-dmg) + if IsValid(self:GetCreator()) then + self:GetCreator():ViewPunch(AngleRand(-1,1)) + self:EmitSound("physics/metal/metal_box_impact_bullet"..math.random(1,3)..".wav") + end + end + end + + function ENT:DestroyHeli() + self.DisableThinkPart = true + self.DestroyVelocity = 2500 + self:EmitSound("tdmg/mi24/spindown.wav") + self.PhysicsCollide = function(self) + ParticleEffect("explosion_huge_h", self:GetPos()+Vector(0,0,32), Angle(0,0,0)) + self:EmitSound("tdmg/a10_explosion.wav", 0) + self:StopSound("tdmg/mi24/spindown.wav") + self:Remove() + end + self.Think = function(self) + local RPM = self.DestroyVelocity + local p = self:GetPhysicsObject() + if IsValid(p) then + local angvel = p:GetAngleVelocity() + p:AddAngleVelocity(Vector(angvel.x > 100 and 0 or RPM*0.01,0,angvel.z > 200 and 0 or math.Clamp(RPM,0,4000)*0.04)) + + local vel = p:GetVelocity() + p:SetVelocity(-vel-Vector(0,0,750)) + end + self:NextThink(CurTime()) + return true + end + end +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_package/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_package/shared.lua new file mode 100644 index 0000000..b2b2278 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_package/shared.lua @@ -0,0 +1,78 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "Care Package" + +if SERVER then + local function get_random_key(tbl) + local total = 0 + for k,v in pairs(tbl) do + total = total + v + end + + local rand = math.random(0, total) + local count = 0 + + for k,v in pairs(tbl) do + count = count + v + if rand <= count then + return k + end + end + end + + local Items = { + [1] = 50, + [2] = 50, + [3] = 50, + [5] = 50, + [6] = 50, + [7] = 50, + [8] = 50, + [9] = 40, + [10] = 35, + [11] = 30, + [12] = 30, + [13] = 20, + [14] = 20, + [15] = 20, + [16] = 15, + [17] = 15, + [18] = 10, + [20] = 5, + [21] = 5, + } + + function ENT:Initialize() + self:SetModel("models/cod/score_carepackage.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetUseType(SIMPLE_USE) + + self.Item = get_random_key(Items) + self:GetPhysicsObject():SetVelocity(Vector(0,0,-256)) + self:SetNWFloat('Item', self.Item) + end + + function ENT:Open(ply) + if self.Item == 0 then + local wep = ply:GetActiveWeapon() + ply:GiveAmmo(wep:GetMaxClip1()*10, wep:GetPrimaryAmmoType(), false) + else + COD:KillstreakAddOther(ply, false, self.Item) + net.Start("COD.KillstreaksHUD") + net.WriteFloat(self.Item) + net.Send(ply) + end + self:EmitSound("items/ammocrate_open.wav") + self:Remove() + end + + net.Receive("COD.PickupCarePackage", function(len, ply) + local ent = net.ReadEntity() + if IsValid(ent) then + ent:Open(ply) + end + end) +end diff --git a/gamemodes/cod_custom/entities/entities/tdm_player_infil/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_player_infil/shared.lua new file mode 100644 index 0000000..0f4dd69 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_player_infil/shared.lua @@ -0,0 +1,415 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.AutomaticFrameAdvance = true + +ENT.TypeOfInfil = { + ["Van"] = { + model = "models/tdmg/van_hackney/van_hackney.mdl", + seq = "spawn", + chiefmodel = "models/tdmg/van_hackney/players.mdl", + chiefseq = "spawnChief", + drivermodel = "models/tdmg/van_hackney/players.mdl", + driverseq = "spawnDriver", + haveweapons = true, + playermodel = { + { + model = "models/tdmg/van_hackney/players.mdl", + seq = "spawn1", + delay = 12.5, + pos = Vector(-250, 75, 0), + ang = Angle(0,180,0), + }, + { + model = "models/tdmg/van_hackney/players.mdl", + seq = "spawn2", + delay = 13, + pos = Vector(-260, -82, 0), + ang = Angle(0,180,0), + }, + { + model = "models/tdmg/van_hackney/players.mdl", + seq = "spawn3", + delay = 13.5, + pos = Vector(-236, 2, 0), + ang = Angle(0,180,0), + }, + { + model = "models/tdmg/van_hackney/players.mdl", + seq = "spawn4", + delay = 14, + pos = Vector(-198, -50, 0), + ang = Angle(0,180,0), + }, + { + model = "models/tdmg/van_hackney/players.mdl", + seq = "spawn5", + delay = 14.5, + pos = Vector(-200, 42, 0), + ang = Angle(0,180,0), + }, + { + model = "models/tdmg/van_hackney/players.mdl", + seq = "spawn6", + delay = 15, + pos = Vector(-187, -6, 0), + ang = Angle(0,180,0), + }, + }, + sounds = { + { + path = "tdm_infil/van/alqatala1_veh1_int_front_ster_pan.wav", + delay = 0, + }, + { + path = "tdm_infil/van/alqatala1_veh1_int_rear_ster_pan.wav", + delay = 0, + }, + { + path = "tdm_infil/van/alqatala1_veh1_door_ster_pan.wav", + delay = 7.5, + }, + { + path = "tdm_infil/van/alqatala1_veh1_door_ster_pan2.wav", + delay = 15, + }, + { + path = "tdm_infil/van/alqatala1_foley_seat1_npc.wav", + delay = 8, + crewmin = 1, + }, + { + path = "tdm_infil/van/alqatala1_foley_seat2_npc.wav", + delay = 8.5, + crewmin = 2, + }, + { + path = "tdm_infil/van/alqatala1_foley_seat3_npc.wav", + delay = 9, + crewmin = 3, + }, + { + path = "tdm_infil/van/alqatala1_foley_seat4_npc.wav", + delay = 9.5, + crewmin = 4, + }, + { + path = "tdm_infil/van/alqatala1_foley_seat5_npc.wav", + delay = 10, + crewmin = 5, + }, + { + path = "tdm_infil/van/alqatala1_foley_seat6_npc.wav", + delay = 10.5, + crewmin = 6, + }, + }, + animdelay = 0.21, + delaystep = 17.5, + offset = Vector(0,0,0), + driveaway = true, + }, + ["Heli"] = { + model = "models/tdmg/heli.mdl", + seq = "spawn", + chiefmodel = "models/tdmg/chiefl.mdl", + chiefseq = "spawn", + playermodel = { + { + model = "models/tdmg/guy01.mdl", + seq = "spawn", + pos = Vector(112.3, -73.6, 0), + ang = Angle(0,180,0), + delay = 12, + }, + { + model = "models/tdmg/guy02.mdl", + seq = "spawn", + pos = Vector(66.85, -115.5, 0), + ang = Angle(0,180,0), + delay = 13.5, + }, + { + model = "models/tdmg/guy03.mdl", + seq = "spawn", + pos = Vector(73.1, -40.8, 0), + ang = Angle(0,180,0), + delay = 15, + }, + }, + sounds = { + { + delay = 0, + path = "tdmg/sas1_veh1_int_quad_front_stat.wav", + }, + { + delay = 0, + path = "tdmg/sas1_veh1_ceilingrattles_spot_stat.wav", + }, + { + delay = 0, + path = "tdmg/sas1_veh1_int_quad_rear_stat.wav", + }, + { + delay = 22 / 30, + path = "tdmg/sas1_veh1_foley_doorman_npc.wav", + }, + { + delay = 22 / 30, + path = "tdmg/sas1_veh1_door_ster_pan.wav", + }, + { + delay = 0, + path = "tdmg/sas1_veh1_foley_seat1_plr.wav", + }, + { + delay = 42 / 30, + path = "tdmg/sas1_veh1_rope_spot_stat.wav", + }, + { + delay = 184 / 30, + path = "tdmg/sas1_veh1_foley_seat1_npc.wav", + }, + { + delay = 190 / 30, + path = "tdmg/sas1_veh1_foley_seat2_npc.wav", + }, + { + delay = 280 / 30, + path = "tdmg/sas1_veh1_foley_seat3_npc.wav", + }, + { + delay = 328 / 30, + path = "tdmg/sas1_veh1_ext_ster_pan.wav", + }, + }, + animdelay = 0.15, + delaystep = 15, + offset = Vector(0,0,4), + driveaway = false, + }, +} + +if SERVER then + util.AddNetworkString("COD.InfilCrewCam") + + function ENT:MakePlayerTable(index, max) + local tab = {} + local count = 0 + local plys = team.GetPlayers(index) + table.Shuffle(plys) + + for k, v in pairs(plys) do + if not v.UsingInfil and count < max then + table.insert(tab, v) + v.UsingInfil = true + count = count + 1 + end + end + + if #tab > 0 then + self.PlayerTable = tab + end + end + + function ENT:Initialize() + self.InfilType = self.TypeOfInfil[self.Infil] + + local tab = self.InfilType + + self:SetModel(tab.model) + self.CrewTable = {} + self:MakePlayerTable(self.TeamChoose, #tab.playermodel) + if not self.PlayerTable then + self:Remove() + end + self.DriveVel = 0 + + local chiefmod = "models/tdmg/pm/specgru_milsim_"..math.random(1,4).."_1_pm.mdl" + if self.TeamChoose == 2 then + chiefmod = "models/tdmg/pm/kortac_1_"..math.random(1,4).."_pm.mdl" + end + + timer.Simple(0.01, function() + if !IsValid(self) or not self.PlayerTable then return end + + self:SetPos(tab.offset+self:GetPos()) + timer.Simple(tab.animdelay, function() + if !IsValid(self) then return end + self:ResetSequence(tab.seq) + end) + for k, v in pairs(self.PlayerTable) do + if k <= #tab.playermodel then + local tab1 = tab.playermodel[k] + self:AddCrewModel(tab1.model, tab1.seq, tab1.delay, v, tab1.pos, tab1.ang) + end + end + + for k, v in pairs(tab.sounds) do + timer.Simple(v.delay, function() + if !IsValid(self) or v.crewmin and v.crewmin > #self.CrewTable-2 then return end + self:EmitSound(v.path, 75, 100, 1, CHAN_AUTO, SND_SHOULDPAUSE) + end) + end + + self:AddCrewModel(tab.chiefmodel, tab.chiefseq, 0, chiefmod) + + if tab.drivermodel then + self:AddCrewModel(tab.drivermodel, tab.driverseq, 0, chiefmod) + end + + timer.Simple(tab.delaystep, function() + if !IsValid(self) then return end + + self:SetBodygroup(3, 1) + self.DriveAway = tab.driveaway + timer.Simple(10, function() + if !IsValid(self) then return end + + self:Remove() + end) + end) + end) + end + + function ENT:ConnectWeapon(ply, model, lang, lpos, scale, attachment, usebonemerge, boneang) + if !IsValid(ply) then return end + local wep = ents.Create('base_anim') + local attach = ply:GetAttachment(ply:LookupAttachment(attachment)) + if attach then + wep:SetPos(attach.Pos) + wep:SetModel(model) + wep:SetAngles(attach.Ang) + wep:SetParent(ply, ply:LookupAttachment(attachment)) + if usebonemerge then + wep:AddEffects(EF_BONEMERGE) + end + if boneang and ply:LookupBone(boneang) then + wep:SetAngles(select(2, ply:GetBonePosition(ply:LookupBone(boneang)))) + end + wep:Spawn() + wep:SetLocalAngles(lang) + wep:SetLocalPos(lpos) + wep:SetModelScale(scale, 0) + function wep:Think() + if !IsValid(ply) then + wep:Remove() + end + end + end + return wep + end + + function ENT:AddCrewModel(model, sequence, deletetime, ply, pos, ang) + local modelply = "models/tfusion/playermodels/mw3/juggernaut_c.mdl" + local wepenable = false + + if ply and !isstring(ply) then + modelply = ply:GetModel() + ply:Freeze(true) + ply:SetNoDraw(true) + ply:GodEnable() + ply.PreviousInfilWeapon = ply:GetActiveWeapon() + ply:SetActiveWeapon(nil) + wepenable = true + elseif ply and isstring(ply) then + modelply = ply + end + + local m = ents.Create("prop_dynamic") + m:SetModel(model) + m:SetPos(self:GetPos()) + m:SetAngles(self:GetAngles()) + m:Spawn() + m:ResetSequence(sequence) + m.Player = ply + self:DeleteOnRemove(m) + + local b = ents.Create("base_anim") + b:SetModel(modelply) + b:SetPos(self:GetPos()) + b:AddEffects(1) + b:SetParent(m) + b:Spawn() + b:SetNWEntity('Vehicle', self) + m:DeleteOnRemove(b) + if wepenable and self.InfilType.haveweapons then + self:ConnectWeapon(b, "models/viper/mw/weapons/w_galima.mdl", Angle(-0,0,0), Vector(-4,-2,-0), 1, "anim_attachment_RH") + end + + table.insert(self.CrewTable, m) + + local time1 = deletetime + if time1 == 0 then + time1 = select(2, m:LookupSequence(sequence)) + end + + timer.Simple(1, function() + if !IsValid(b) or !IsValid(ply) then return end + + net.Start("COD.InfilCrewCam") + net.WriteEntity(b) + net.Send(ply) + end) + + timer.Simple(time1, function() + if !IsValid(m) then return end + + local ply1 = m.Player + if IsValid(ply1) then + ply1:Freeze(false) + ply1:SetNoDraw(false) + ply1:GodDisable() + ply1:SetPos(self:LocalToWorld(pos-self.InfilType.offset)) + ply1:SetEyeAngles(self:GetAngles()+ang) + ply1.UsingInfil = false + if IsValid(ply.PreviousInfilWeapon) then + ply1:SelectWeapon(ply1.PreviousInfilWeapon:GetClass()) + ply1.PreviousInfilWeapon = nil + end + end + + m:Remove() + end) + + return m, b + end + + function ENT:Think() + if self.DriveAway then + self.DriveVel = self.DriveVel + FrameTime()*2 + self:SetPos(self:GetPos()+self:GetForward()*self.DriveVel) + end + + self:NextThink(CurTime()) + return true + end +else + net.Receive("COD.InfilCrewCam", function() + local ent = net.ReadEntity() + hook.Add("CalcView", "InfilCrewCam", function(ply, pos, angles, fov) + if IsValid(ent) then + --[[local veh = ent:GetNWEntity('Vehicle') + if IsValid(veh) then + print( ent:GetPos()-veh:GetPos() ) + end]]-- + COD.HideHUD = true + + ent:ManipulateBoneScale(ent:LookupBone("ValveBiped.Bip01_Head1"), Vector(0,0,0)) + pos = ent:GetAttachment(ent:LookupAttachment("eyes")).Pos + angles = ent:GetAttachment(ent:LookupAttachment("eyes")).Ang + angles.z = 0 + local view = { + origin = pos, + angles = angles, + fov = fov, + drawviewer = false + } + + return view + else + hook.Remove("CalcView", "InfilCrewCam") + end + end) + end) +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/tdm_sentry/shared.lua b/gamemodes/cod_custom/entities/entities/tdm_sentry/shared.lua new file mode 100644 index 0000000..0ce2881 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/tdm_sentry/shared.lua @@ -0,0 +1,251 @@ +AddCSLuaFile() + +ENT.Base = "base_gmodentity" +ENT.Type = "anim" +ENT.PrintName = "Sentry Gun" + +if SERVER then + function ENT:Initialize() + self:SetModel("models/tdmg/sentry.mdl") + self:SetHealth(1500) + self:SetSolid(SOLID_VPHYSICS) + self.DestroyedAng = 0 + self.DisableThinkPart = false + self.FireDelay = CurTime() + 1 + self.RemoveDelay = CurTime() + 120 + self.Target = nil + self.Smoking = false + self.StartingShoot = false + self.StartingShootDelay = 0 + self.StartedShoot = false + self.Team = 1 + self.DelayRespin = 2 + self.BeepDelay = CurTime() + 3 + self:SetSequence("rotation_barrels2x") + + local t = ents.Create("base_anim") + t:SetModel('models/props_junk/PopCan01a.mdl') + t:SetPos(self:GetTurretPos()) + t:SetAngles(self:GetAngles()) + t:SetParent(self) + t:SetOwner(self) + t:SetNoDraw(true) + t:Spawn() + self.ShootEntity = t + + self:ManipulateBoneAngles(3, Angle(-70, 0, 0)) + timer.Simple(0.1, function() + if !IsValid(self) then return end + self:EmitSound("tdmg/sentry/mw2_sentryplace.wav") + end) + + timer.Simple(5, function() + if !IsValid(self) then return end + + if self.Team == 1 then + self.VJ_NPC_Class = {"CLASS_SPECGRU"} + elseif self.Team == 2 then + self.VJ_NPC_Class = {"CLASS_KORTAC"} + end + end) + end + + function ENT:OnRemove() + --self:StopSound("npc/attack_helicopter/aheli_rotor_loop1.wav") + end + + function ENT:GetTurretPos() + local pos, ang = self:GetBonePosition(4) + return pos, ang + end + + function ENT:IsInFOV(entity) + local direction = (entity:GetPos() - self:GetTurretPos()):GetNormalized() + local viewAngle = self:GetForward() + local dot = direction:Dot(viewAngle) + + if dot >= math.cos(math.rad(180 / 2)) then + return true + else + return false + end + end + + function ENT:GetNextTarget() + local target = nil + local tab = ents.FindInSphere(self:GetPos(), 8000) + table.Shuffle(tab) + for _, ent in ipairs(tab) do + if self:IsInFOV(ent) and self:VisibleVec(ent:WorldSpaceCenter()) then + if ent:IsNPC() and ent:Health() > 0 and (ent.Team and ent.Team != self.Team or !ent.Team) then + target = ent + break + end + if ent:IsPlayer() and ent:Alive() and ent:Team() != self.Team and ent:GetNWFloat('Perk2') != 4 then + target = ent + break + end + end + end + return target + end + + function ENT:Attack() + local tar = self.Target + + if !IsValid(tar) then + self.Target = self:GetNextTarget() + self:RotateToEntity(self:GetAngles(), 45) + if self.BeepDelay < CurTime() then + self.BeepDelay = CurTime() + 3 + self:EmitSound("tdmg/sentry/mw2_sentrybeep.wav") + end + else + if self.StartedShoot then + self:RotateToEntity(tar, 10) + else + self:RotateToEntity(tar, 30) + end + end + + if IsValid(tar) then + self:Shoot(true) + + if not self:VisibleVec(tar:GetPos()) or not self:IsInFOV(tar) or tar:Health() <= 0 then + self.ControlDelay = CurTime() + 4 + self.Target = self:GetNextTarget() + end + else + self:Shoot(false) + end + end + + function ENT:Shoot(bool) + if not bool then + self.StartedShoot = false + if self.StartingShoot and not bool and self.StartingShootDelay < CurTime() then + self.StartingShootDelay = CurTime() + self.DelayRespin + self:EmitSound("tdmg/sentry/mw2_sentryspindown.wav") + if self.FireSound then + self:StopLoopingSound(self.FireSound) + self.FireSound = -1 + end + end + else + if not self.StartingShoot and bool and self.StartingShootDelay < CurTime() then + self.StartingShootDelay = CurTime() + self.DelayRespin + self:EmitSound("tdmg/sentry/mw2_sentryspinup.wav") + end + end + + self.StartingShoot = bool + + if not self.StartingShoot then + local num = math.max(1*(self.StartingShootDelay-CurTime())/self.DelayRespin, 0) + self:SetPlaybackRate(num) + end + + if self.StartingShoot then + local num = math.min(((1*(self.StartingShootDelay-CurTime())/self.DelayRespin)-1)*-1, 1) + self:SetPlaybackRate(num) + end + + if self.StartingShoot and self.StartingShootDelay < CurTime() then + self.StartedShoot = true + self:SetPlaybackRate(1) + if not self.FireSound or self.FireSound < 0 then + self.FireSound = self:StartLoopingSound("tdmg/sentry/mw2_sentryfirebullet.wav") + end + if self.FireDelay < CurTime() then + self.FireDelay = CurTime() + 0.04 + + local pos1, ang1 = self:GetTurretPos() + + self.ShootEntity:FireBullets({ + Src = pos1, + Dir = ang1:Forward(), + Spread = VectorRand(-0.10, 0.10), + Damage = 20, + IgnoreEntity = self, + }) + end + end + end + + function ENT:AngleToEnemy(enemy) + local selfPos, selfAngles = self:GetBonePosition(3) + selfAngles = selfAngles + local enemyPos = enemy:GetPos() + local angleToEnemy = (enemyPos - self:GetTurretPos()):Angle() + angleToEnemy.z = 0 + local diff = math.AngleDifference(angleToEnemy.y, selfAngles.y) + return math.abs(diff) + end + + function ENT:RotateToEntity(ent2, divisor) + local selfPos, selfAngles = self:GetBonePosition(3) + selfAngles = selfAngles + local targetAngles = Angle(0,0,0) + if isangle(ent2) then + targetAngles = ent2 + else + targetAngles = (ent2:WorldSpaceCenter() - self:GetTurretPos()):Angle() + end + local yawDiff = math.NormalizeAngle(targetAngles.y - selfAngles.y) + local xDiff = math.NormalizeAngle(targetAngles.x - selfAngles.x) + + self:ManipulateBoneAngles(3, Angle(self:GetManipulateBoneAngles(3).x + xDiff / divisor, self:GetManipulateBoneAngles(3).y + yawDiff / divisor, 0)) + end + + function ENT:Think() + if not self.DisableThinkPart then + self:Attack() + self.DestroyedAng = 0 + + local id, long = self:LookupSequence(self:GetSequenceName(self:GetSequence())) + local addframe = FrameTime()/long*self:GetPlaybackRate() + if self:GetCycle() >= 1 then + self:SetCycle(0) + else + self:SetCycle(self:GetCycle()+addframe) + end + + if self:Health() <= 0 or self.RemoveDelay < CurTime() then + self:Destroy() + end + else + print(self.DestroyedAng) + self.DestroyedAng = math.min(45, self.DestroyedAng+FrameTime()/0.01) + self:ManipulateBoneAngles(3, Angle(self.DestroyedAng, 0, 0)) + end + + self:NextThink(CurTime()) + return true + end + + function ENT:OnTakeDamage(dmgt) + local dmg = dmgt:GetDamage() + local att = dmgt:GetAttacker() + if att != self or att:IsPlayer() and att:Team() != self.Team then + self:SetHealth(self:Health()-dmg) + self:EmitSound("physics/metal/metal_box_impact_bullet"..math.random(1,3)..".wav") + end + end + + function ENT:Destroy() + if self.DisableThinkPart then return end + + if self.FireSound then + self:StopLoopingSound(self.FireSound) + self.FireSound = -1 + end + self.DisableThinkPart = true + ParticleEffectAttach("Rocket_Smoke_Trail", 4, self, 0) + self:EmitSound("tdmg/sentry/mw2_sentrydestroyed.wav") + + timer.Simple(15, function() + if !IsValid(self) then return end + self:Remove() + end) + end +end diff --git a/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier1/init.lua b/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier1/init.lua new file mode 100644 index 0000000..439fbb1 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier1/init.lua @@ -0,0 +1,238 @@ +AddCSLuaFile("shared.lua") +include('shared.lua') +/*----------------------------------------------- + *** Copyright (c) 2012-2022 by DrVrej, All rights reserved. *** + No parts of this code or any of its contents may be reproduced, copied, modified or adapted, + without the prior written consent of the author, unless otherwise indicated for stand-alone materials. +-----------------------------------------------*/ +ENT.StartHealth = 100 +ENT.UsePlayerModelMovement = true +ENT.Model = {} + +ENT.BloodColor = "Red" + +ENT.VJ_NPC_Class = {"CLASS_SPECGRU"} + +ENT.HasMeleeAttack = true +ENT.AnimTbl_MeleeAttack = {"tdm_melee_weapon"} +ENT.MeleeAttackDamage = 25 +ENT.MeleeAttackReps = 3 + +ENT.FootStepTimeRun = 0.3 +ENT.FootStepTimeWalk = 0.5 +ENT.DropWeaponOnDeath = false + +ENT.HasDeathAnimation = true +ENT.AnimTbl_Death = {} +for i = 1, 54 do + table.insert(ENT.AnimTbl_Death, "dead"..i) +end +ENT.DeathAnimationChance = 1 + +ENT.CanFlinch = 1 +ENT.FlinchChance = 2 +ENT.AnimTbl_Flinch = {} +for i = 1, 7 do + table.insert(ENT.AnimTbl_Flinch, "tdm_stun"..i) +end + +ENT.SoundTbl_FootStep = {"npc/footsteps/hardboot_generic1.wav","npc/footsteps/hardboot_generic2.wav","npc/footsteps/hardboot_generic3.wav","npc/footsteps/hardboot_generic4.wav","npc/footsteps/hardboot_generic5.wav","npc/footsteps/hardboot_generic6.wav","npc/footsteps/hardboot_generic8.wav"} +ENT.SoundTbl_Death = {} +for i = 1, 14 do + table.insert(ENT.SoundTbl_Death, ")tdmg/ply/death"..i..".wav") +end + +ENT.SoundTbl_CombatIdle = {} +for i = 1, 25 do + table.insert(ENT.SoundTbl_CombatIdle, ")tdmg/npc/combat ("..i..").wav") +end + +ENT.SoundTbl_Suppressing = {} +for i = 1, 7 do + table.insert(ENT.SoundTbl_Suppressing, ")tdmg/npc/contact ("..i..").wav") +end + +ENT.SoundTbl_OnKilledEnemy = {} +for i = 1, 13 do + table.insert(ENT.SoundTbl_CombatIdle, ")tdmg/npc/kill ("..i..").wav") +end + +ENT.SoundTbl_AllyDeath = {} +for i = 1, 17 do + table.insert(ENT.SoundTbl_CombatIdle, ")tdmg/npc/friendlydown"..i..".wav") +end + +ENT.SoundTbl_WeaponReload = {} +for i = 1, 15 do + table.insert(ENT.SoundTbl_WeaponReload, ")tdmg/npc/reload ("..i..").wav") +end + +ENT.HasItemDropsOnDeath = false + +ENT.DeathCorpseFade = false + +ENT.AnimTbl_Medic_GiveHealth = {"gesture_item_give_original"} +ENT.AnimTbl_CallForHelp = {"gesture_signal_forward_original"} +ENT.CallForBackUpOnDamageAnimation = {"gesture_signal_group_original"} + +ENT.FollowPlayer = false + +ENT.SightAngle = 60 +--------------------------------------------------------------------------------------------------------------------------------------------- +function ENT:CustomOnPreInitialize() + if not self.Team then + self.Team = 1 + end + + self.Type = "Light" + + if math.random(1,6) == 1 then + self.Type = "Patrol" + elseif math.random(1,6) == 1 then + self.Type = "Medic" + elseif math.random(1,8) == 1 then + self.Type = "Sniper" + elseif math.random(1,10) == 1 and COD_Invasion.HeavyUnits then + self.Type = "Bomber" + elseif math.random(1,2) == 1 and COD_Invasion.HeavyUnits then + self.Type = "Heavy" + end + + if math.random(1,2) == 1 then + self.WaitForEnemyToComeOut = false + end + + if self.Type == "Medic" then + self.Model = {"models/humangrunt/mw2/brazilian_militia_pm.mdl"} + self.IsMedicSNPC = true + elseif self.Type == "Bomber" then + self.Model = {"models/wap/callofduty/mw4/chr/operators/coalition/milsim/fireteam/body_western_fireteam_west_dmr_1_2_pm.mdl"} + elseif self.Type == "Patrol" then + self.Model = {"models/humangrunt/mw2/brazilian_militia_pm.mdl"} + elseif self.Type == "Sniper" then + self.Model = {"models/humangrunt/mw2/brazilian_militia_pm.mdl"} + elseif self.Type == "Heavy" then + self.Model = {"models/wap/callofduty/mw4/chr/operators/coalition/milsim/fireteam/body_western_fireteam_west_ar_1_2_pm.mdl", "models/wap/callofduty/mw4/chr/operators/coalition/milsim/fireteam/body_western_fireteam_west_lmg_1_2_pm.mdl"} + else + self.Model = {"models/humangrunt/mw2/tf141_brazil_pm.mdl"} + end +end + +function ENT:CustomOnInitialize() + if self.Type == "Medic" then + self:SetBodygroup(6, math.random(0,4)) + self:SetBodygroup(5, math.random(0,12)) + self:SetBodygroup(4, math.random(0,3)) + self:SetBodygroup(3, math.random(0,1)) + self:SetBodygroup(3, math.random(0,1)) + self:SetBodygroup(2, math.random(0,1)) + self:SetBodygroup(1, math.random(0,3)) + self:SetSkin(math.random(0,1)) + + self:Give("weapon_vj_tdm_r870") + self:SetHealth(125) + elseif self.Type == "Sniper" then + self:SetBodygroup(6, math.random(0,4)) + self:SetBodygroup(5, math.random(0,12)) + self:SetBodygroup(4, math.random(0,3)) + self:SetBodygroup(3, math.random(0,1)) + self:SetBodygroup(3, math.random(0,1)) + self:SetBodygroup(2, math.random(0,1)) + self:SetBodygroup(1, math.random(0,3)) + self:SetSkin(math.random(0,1)) + + self:Give("weapon_vj_tdm_m24") + elseif self.Type == "Patrol" then + self:SetBodygroup(6, math.random(0,4)) + self:SetBodygroup(5, math.random(0,12)) + self:SetBodygroup(4, math.random(0,3)) + self:SetBodygroup(3, math.random(0,1)) + self:SetBodygroup(3, math.random(0,1)) + self:SetBodygroup(2, math.random(0,1)) + self:SetBodygroup(1, math.random(0,3)) + self:SetSkin(math.random(0,1)) + + self:Give("weapon_vj_tdm_m9") + self:SetHealth(75) + elseif self.Type == "Bomber" then + self:Give("weapon_vj_rpg") + self:SetHealth(175) + elseif self.Type == "Heavy" then + if math.random(1,3) == 1 then + self:Give("weapon_vj_tdm_m249") + else + self:Give("weapon_vj_tdm_m4a1") + end + self:SetHealth(200) + else + self:SetBodygroup(6, math.random(0,1)) + self:SetBodygroup(5, math.random(0,1)) + self:SetBodygroup(4, math.random(0,2)) + self:SetBodygroup(3, math.random(0,2)) + self:SetBodygroup(2, math.random(0,1)) + self:SetBodygroup(1, math.random(0,4)) + self:SetBodygroup(0, math.random(0,3)) + self:SetSkin(math.random(0,1)) + + if math.random(1,3) == 1 then + self:Give("weapon_vj_tdm_m14") + else + self:Give("weapon_vj_tdm_ump") + end + end + + self:SetNWFloat('Team', self.Team) + self.SearchCooldown = 0 + self.StuckCooldown = CurTime()+60 +end + +function ENT:FlashEntity() + self.Flinching = true + self:StopAttacks(true) + self.PlayingAttackAnimation = false + local animTbl = self.AnimTbl_Flinch + local anim = VJ_PICK(animTbl) + local animDur = self.NextMoveAfterFlinchTime == false and self:DecideAnimationLength(anim, false, self.FlinchAnimationDecreaseLengthAmount) or self.NextMoveAfterFlinchTime + self:VJ_ACT_PLAYACTIVITY(anim, true, animDur, false, 0, {SequenceDuration=animDur, PlayBackRateCalculated=true}) + timer.Create("timer_act_flinching"..self:EntIndex(), animDur, 1, function() self.Flinching = false end) + self:CustomOnFlinch_AfterFlinch(dmginfo, hitgroup) + self.NextFlinchT = CurTime() + self.NextFlinchTime +end + +function ENT:CustomOnThink() + if self.SearchCooldown < CurTime() then + for _, ent in ipairs(ents.FindInSphere(self:GetPos(), 5000)) do + if ent:IsPlayer() and ent:Team() != self.Team or ent:IsNPC() and ent.Team != self.Team and math.random(1,4) == 1 then + self:SetLastPosition(ent:GetPos()) + self:VJ_TASK_GOTO_LASTPOS() + break + end + end + self.SearchCooldown = CurTime()+math.random(15,45) + end + + if IsValid(self:GetEnemy()) then + self.SearchCooldown = CurTime()+math.random(15,45) + end + + local colmins, colmaxs = self:GetCollisionBounds() + local tr = util.TraceHull({ + start = self:GetPos(), + endpos = self:GetPos(), + filter = self, + mins = colmins, + maxs = colmaxs, + mask = MASK_SHOT_HULL + }) + if not tr.Hit then + self.StuckCooldown = CurTime()+15 + end + + if self.StuckCooldown < CurTime() then + self:TakeDamage(self:Health()) + end +end + +function ENT:CustomOnMeleeAttack_AfterChecks(hitEnt, isProp) + return self.Takedowning +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier1/shared.lua b/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier1/shared.lua new file mode 100644 index 0000000..41dfa31 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier1/shared.lua @@ -0,0 +1,22 @@ +ENT.Base = "npc_vj_human_base" +ENT.Type = "ai" +ENT.PrintName = "Soldier" + +if CLIENT then + local tm_mat = Material('tdmg/hud/teammate.png') + function ENT:Draw() + self:DrawModel() + if self:GetNWFloat('Team') == LocalPlayer():Team() then + local angle = EyeAngles() + angle = Angle( 0, angle.y, 0 ) + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + local pos = self:GetBonePosition(LocalPlayer():LookupBone("ValveBiped.Bip01_Head1"))+Vector(0,0,16) + cam.Start3D2D( pos, angle, 0.1 ) + surface.SetDrawColor(5,155,255) + surface.SetMaterial(tm_mat) + surface.DrawTexturedRect(-12, -12, 24, 24) + cam.End3D2D() + end + end +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier2/init.lua b/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier2/init.lua new file mode 100644 index 0000000..1e47fb3 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier2/init.lua @@ -0,0 +1,242 @@ +AddCSLuaFile("shared.lua") +include('shared.lua') +/*----------------------------------------------- + *** Copyright (c) 2012-2022 by DrVrej, All rights reserved. *** + No parts of this code or any of its contents may be reproduced, copied, modified or adapted, + without the prior written consent of the author, unless otherwise indicated for stand-alone materials. +-----------------------------------------------*/ +ENT.StartHealth = 100 +ENT.UsePlayerModelMovement = true +ENT.Model = {} + +ENT.BloodColor = "Red" + +ENT.HasMeleeAttack = true +ENT.AnimTbl_MeleeAttack = {"tdm_melee_weapon"} +ENT.MeleeAttackDamage = 25 +ENT.MeleeAttackReps = 3 + +ENT.FootStepTimeRun = 0.3 +ENT.FootStepTimeWalk = 0.5 +ENT.DropWeaponOnDeath = false + +ENT.VJ_NPC_Class = {"CLASS_KORTAC"} + +ENT.HasDeathAnimation = true +ENT.AnimTbl_Death = {} +for i = 1, 54 do + table.insert(ENT.AnimTbl_Death, "dead"..i) +end +ENT.DeathAnimationChance = 1 + +ENT.CanFlinch = 1 +ENT.FlinchChance = 2 +ENT.AnimTbl_Flinch = {} +for i = 1, 7 do + table.insert(ENT.AnimTbl_Flinch, "tdm_stun"..i) +end + +ENT.SoundTbl_FootStep = {"npc/footsteps/hardboot_generic1.wav","npc/footsteps/hardboot_generic2.wav","npc/footsteps/hardboot_generic3.wav","npc/footsteps/hardboot_generic4.wav","npc/footsteps/hardboot_generic5.wav","npc/footsteps/hardboot_generic6.wav","npc/footsteps/hardboot_generic8.wav"} +ENT.SoundTbl_Death = {} +for i = 1, 14 do + table.insert(ENT.SoundTbl_Death, ")tdmg/ply/death"..i..".wav") +end + +ENT.SoundTbl_CombatIdle = {} +for i = 1, 25 do + table.insert(ENT.SoundTbl_CombatIdle, ")tdmg/npc/combat ("..i..").wav") +end + +ENT.SoundTbl_Suppressing = {} +for i = 1, 7 do + table.insert(ENT.SoundTbl_Suppressing, ")tdmg/npc/contact ("..i..").wav") +end + +ENT.SoundTbl_OnKilledEnemy = {} +for i = 1, 13 do + table.insert(ENT.SoundTbl_CombatIdle, ")tdmg/npc/kill ("..i..").wav") +end + +ENT.SoundTbl_AllyDeath = {} +for i = 1, 17 do + table.insert(ENT.SoundTbl_CombatIdle, ")tdmg/npc/friendlydown"..i..".wav") +end + +ENT.SoundTbl_WeaponReload = {} +for i = 1, 15 do + table.insert(ENT.SoundTbl_WeaponReload, ")tdmg/npc/reload ("..i..").wav") +end + +ENT.HasItemDropsOnDeath = false + +ENT.DeathCorpseFade = false + +ENT.AnimTbl_Medic_GiveHealth = {"gesture_item_give_original"} +ENT.AnimTbl_CallForHelp = {"gesture_signal_forward_original"} +ENT.CallForBackUpOnDamageAnimation = {"gesture_signal_group_original"} + +ENT.FollowPlayer = false + +ENT.SightAngle = 60 +--------------------------------------------------------------------------------------------------------------------------------------------- +function ENT:CustomOnPreInitialize() + if not self.Team then + self.Team = 2 + end + + self.Type = "Light" + + if math.random(1,6) == 1 then + self.Type = "Patrol" + elseif math.random(1,6) == 1 then + self.Type = "Medic" + elseif math.random(1,8) == 1 then + self.Type = "Sniper" + elseif math.random(1,10) == 1 and COD_Invasion.HeavyUnits then + self.Type = "Bomber" + elseif math.random(1,2) == 1 and COD_Invasion.HeavyUnits then + self.Type = "Heavy" + end + + if math.random(1,2) == 1 then + self.WaitForEnemyToComeOut = false + end + + if self.Type == "Medic" then + self.Model = {"models/ops_casual/operator1.mdl"} + self.IsMedicSNPC = true + elseif self.Type == "Bomber" then + self.Model = {"models/bread/cod/characters/milsim/shadow_company.mdl"} + elseif self.Type == "Patrol" then + self.Model = {"models/ops_casual/operator1.mdl"} + elseif self.Type == "Sniper" then + self.Model = {"models/ops_casual/operator1.mdl"} + elseif self.Type == "Heavy" then + self.Model = {"models/bread/cod/characters/milsim/shadow_company.mdl"} + else + self.Model = {"models/bread/cod/characters/shadow_company/shadow_company_cqc.mdl"} + end +end + +function ENT:CustomOnInitialize() + if self.Type == "Medic" then + self:SetBodygroup(1, math.random(0,5)) + self:SetBodygroup(2, math.random(0,8)) + self:SetBodygroup(3, math.random(0,6)) + self:SetBodygroup(4, math.random(0,2)) + self:SetBodygroup(5, math.random(0,3)) + self:SetBodygroup(6, math.random(0,6)) + self:SetBodygroup(7, math.random(0,3)) + self:SetBodygroup(8, math.random(0,3)) + self:SetBodygroup(9, math.random(0,10)) + self:SetSkin(math.random(0,14)) + + local rnd = math.random(50,200) + self:SetColor(Color(rnd,rnd,rnd)) + + self:Give("weapon_vj_tdm_r870") + self:SetHealth(125) + elseif self.Type == "Sniper" then + self:SetBodygroup(1, math.random(0,5)) + self:SetBodygroup(2, math.random(0,8)) + self:SetBodygroup(3, math.random(0,6)) + self:SetBodygroup(4, math.random(0,2)) + self:SetBodygroup(5, math.random(0,3)) + self:SetBodygroup(6, math.random(0,6)) + self:SetBodygroup(7, math.random(0,3)) + self:SetBodygroup(8, math.random(0,3)) + self:SetBodygroup(9, math.random(0,10)) + self:SetSkin(math.random(0,14)) + local rnd = math.random(50,200) + self:SetColor(Color(rnd,rnd,rnd)) + + self:Give("weapon_vj_tdm_m24") + elseif self.Type == "Patrol" then + self:SetBodygroup(1, math.random(0,5)) + self:SetBodygroup(2, math.random(0,8)) + self:SetBodygroup(3, math.random(0,6)) + self:SetBodygroup(4, math.random(0,2)) + self:SetBodygroup(5, math.random(0,3)) + self:SetBodygroup(6, math.random(0,6)) + self:SetBodygroup(7, math.random(0,3)) + self:SetBodygroup(8, math.random(0,3)) + self:SetBodygroup(9, math.random(0,10)) + self:SetSkin(math.random(0,14)) + local rnd = math.random(50,200) + self:SetColor(Color(rnd,rnd,rnd)) + + self:Give("weapon_vj_tdm_makarov") + self:SetHealth(75) + elseif self.Type == "Bomber" then + self:Give("weapon_vj_rpg") + self:SetHealth(175) + elseif self.Type == "Heavy" then + if math.random(1,3) == 1 then + self:Give("weapon_vj_tdm_m249") + else + self:Give("weapon_vj_tdm_ak47") + end + self:SetHealth(200) + else + if math.random(1,3) == 1 then + self:Give("weapon_vj_tdm_m14") + else + self:Give("weapon_vj_tdm_ump") + end + end + + self:SetNWFloat('Team', self.Team) + self.SearchCooldown = 0 + self.StuckCooldown = CurTime()+60 +end + +function ENT:FlashEntity() + self.Flinching = true + self:StopAttacks(true) + self.PlayingAttackAnimation = false + local animTbl = self.AnimTbl_Flinch + local anim = VJ_PICK(animTbl) + local animDur = self.NextMoveAfterFlinchTime == false and self:DecideAnimationLength(anim, false, self.FlinchAnimationDecreaseLengthAmount) or self.NextMoveAfterFlinchTime + self:VJ_ACT_PLAYACTIVITY(anim, true, animDur, false, 0, {SequenceDuration=animDur, PlayBackRateCalculated=true}) + timer.Create("timer_act_flinching"..self:EntIndex(), animDur, 1, function() self.Flinching = false end) + self:CustomOnFlinch_AfterFlinch(dmginfo, hitgroup) + self.NextFlinchT = CurTime() + self.NextFlinchTime +end + +function ENT:CustomOnThink() + if self.SearchCooldown < CurTime() then + for _, ent in ipairs(ents.FindInSphere(self:GetPos(), 5000)) do + if ent:IsPlayer() and ent:Team() != self.Team or ent:IsNPC() and ent.Team != self.Team and math.random(1,4) == 1 then + self:SetLastPosition(ent:GetPos()) + self:VJ_TASK_GOTO_LASTPOS() + break + end + end + self.SearchCooldown = CurTime()+math.random(15,45) + end + + if IsValid(self:GetEnemy()) then + self.SearchCooldown = CurTime()+math.random(15,45) + end + + local colmins, colmaxs = self:GetCollisionBounds() + local tr = util.TraceHull({ + start = self:GetPos(), + endpos = self:GetPos(), + filter = self, + mins = colmins, + maxs = colmaxs, + mask = MASK_SHOT_HULL + }) + if not tr.Hit then + self.StuckCooldown = CurTime()+15 + end + + if self.StuckCooldown < CurTime() then + self:TakeDamage(self:Health()) + end +end + +function ENT:CustomOnMeleeAttack_AfterChecks(hitEnt, isProp) + return self.Takedowning +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier2/shared.lua b/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier2/shared.lua new file mode 100644 index 0000000..41dfa31 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/vj_tdm_invasion_soldier2/shared.lua @@ -0,0 +1,22 @@ +ENT.Base = "npc_vj_human_base" +ENT.Type = "ai" +ENT.PrintName = "Soldier" + +if CLIENT then + local tm_mat = Material('tdmg/hud/teammate.png') + function ENT:Draw() + self:DrawModel() + if self:GetNWFloat('Team') == LocalPlayer():Team() then + local angle = EyeAngles() + angle = Angle( 0, angle.y, 0 ) + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + local pos = self:GetBonePosition(LocalPlayer():LookupBone("ValveBiped.Bip01_Head1"))+Vector(0,0,16) + cam.Start3D2D( pos, angle, 0.1 ) + surface.SetDrawColor(5,155,255) + surface.SetMaterial(tm_mat) + surface.DrawTexturedRect(-12, -12, 24, 24) + cam.End3D2D() + end + end +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/vj_tdm_k9/init.lua b/gamemodes/cod_custom/entities/entities/vj_tdm_k9/init.lua new file mode 100644 index 0000000..49fe614 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/vj_tdm_k9/init.lua @@ -0,0 +1,59 @@ +AddCSLuaFile("shared.lua") +include('shared.lua') +/*----------------------------------------------- + *** Copyright (c) 2012-2022 by DrVrej, All rights reserved. *** + No parts of this code or any of its contents may be reproduced, copied, modified or adapted, + without the prior written consent of the author, unless otherwise indicated for stand-alone materials. +-----------------------------------------------*/ +ENT.StartHealth = 300 +ENT.Model = {"models/tdmg/dog_enemy.mdl"} + +ENT.BloodColor = "Red" + +ENT.VJ_NPC_Class = {""} + +ENT.HasMeleeAttack = true +ENT.AnimTbl_MeleeAttack = {"attack"} +ENT.MeleeAttackDamage = 150 + +ENT.HasDeathAnimation = true +ENT.AnimTbl_Death = {"death"} +ENT.DeathAnimationChance = 1 +ENT.SoundTbl_Death = {""} +ENT.CanFlinch = 1 -- 0 = Don't flinch | 1 = Flinch at any damage | 2 = Flinch only from certain damages +ENT.FlinchChance = 2 -- Chance of it flinching from 1 to x | 1 will make it always flinch +ENT.AnimTbl_Flinch = {"run_pain"} -- If it uses normal based animation, use this +for i=1,8 do + table.insert(ENT.SoundTbl_Death, "tdmg/dog/pain ("..math.random(1,8)..").wav") +end + +ENT.HasItemDropsOnDeath = false +ENT.MeleeAttackDistance = 96 +--------------------------------------------------------------------------------------------------------------------------------------------- +function ENT:CustomOnInitialize() + self:SetNWFloat('Team', self.Team) + self.BarkDelay = CurTime()+1 + if self.Team == 1 then + self.VJ_NPC_Class = {"CLASS_SPECGRU"} + else + self.VJ_NPC_Class = {"CLASS_KORTAC"} + end +end + +function ENT:CustomOnTakeDamage_AfterDamage(dmginfo, hitgroup) + if dmginfo:GetDamage() >= self:Health() then + self.BarkDelay = CurTime()+5 + end +end + +function ENT:FindTargets() + local enemy = self:GetEnemy() + if IsValid(enemy) and self.BarkDelay < CurTime() then + self.BarkDelay = CurTime()+math.Rand(0.4,1.2) + self:EmitSound("tdmg/dog/bark ("..math.random(1,8)..").wav") + end +end + +function ENT:CustomOnThink() + self:FindTargets() +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/vj_tdm_k9/shared.lua b/gamemodes/cod_custom/entities/entities/vj_tdm_k9/shared.lua new file mode 100644 index 0000000..97015bc --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/vj_tdm_k9/shared.lua @@ -0,0 +1,22 @@ +ENT.Base = "npc_vj_creature_base" +ENT.Type = "ai" +ENT.PrintName = "NPC" + +if CLIENT then + local tm_mat = Material('tdmg/hud/teammate.png') + function ENT:Draw() + self:DrawModel() + if self:GetNWFloat('Team') == LocalPlayer():Team() then + local angle = EyeAngles() + angle = Angle( 0, angle.y, 0 ) + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + local pos = self:GetBonePosition(24)+Vector(0,0,16) + cam.Start3D2D( pos, angle, 0.1 ) + surface.SetDrawColor(5,155,255) + surface.SetMaterial(tm_mat) + surface.DrawTexturedRect(-12, -12, 24, 24) + cam.End3D2D() + end + end +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/vj_tdm_npc/init.lua b/gamemodes/cod_custom/entities/entities/vj_tdm_npc/init.lua new file mode 100644 index 0000000..eedc829 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/vj_tdm_npc/init.lua @@ -0,0 +1,70 @@ +AddCSLuaFile("shared.lua") +include('shared.lua') +/*----------------------------------------------- + *** Copyright (c) 2012-2022 by DrVrej, All rights reserved. *** + No parts of this code or any of its contents may be reproduced, copied, modified or adapted, + without the prior written consent of the author, unless otherwise indicated for stand-alone materials. +-----------------------------------------------*/ +ENT.StartHealth = 250 +ENT.UsePlayerModelMovement = true +ENT.Model = {} + +ENT.BloodColor = "Red" + +ENT.VJ_NPC_Class = {""} + +ENT.HasMeleeAttack = true +ENT.AnimTbl_MeleeAttack = {"vjseq_seq_meleeattack01"} +ENT.AnimTbl_CallForHelp = {} +ENT.MeleeAttackDamage = 50 + +ENT.FootStepTimeRun = 0.3 +ENT.FootStepTimeWalk = 0.5 +ENT.DropWeaponOnDeath = false + +ENT.HasDeathAnimation = true +ENT.AnimTbl_Death = {} +for i = 1, 54 do + table.insert(ENT.AnimTbl_Death, "dead"..i) +end +ENT.DeathAnimationChance = 1 + +ENT.SoundTbl_FootStep = {"npc/footsteps/hardboot_generic1.wav","npc/footsteps/hardboot_generic2.wav","npc/footsteps/hardboot_generic3.wav","npc/footsteps/hardboot_generic4.wav","npc/footsteps/hardboot_generic5.wav","npc/footsteps/hardboot_generic6.wav","npc/footsteps/hardboot_generic8.wav"} + +ENT.HasItemDropsOnDeath = false + +ENT.DeathCorpseFade = false + +ENT.CallForBackUpOnDamageAnimation = {} + +ENT.SoundTbl_Death = {} +for i = 1, 14 do + table.insert(ENT.SoundTbl_Death, "tdmg/ply/death"..i..".wav") +end + +ENT.SoundTbl_WeaponReload = {} +for i = 1, 15 do + table.insert(ENT.SoundTbl_WeaponReload, "tdmg/npc/reloading"..i..".wav") +end +--------------------------------------------------------------------------------------------------------------------------------------------- +function ENT:CustomOnPreInitialize() + if self.Team == 2 then + self.Model = {"models/tdmg/pm/kortac_1_"..math.random(1,4).."_pm.mdl"} + else + self.Model = {"models/tdmg/pm/specgru_milsim_"..math.random(1,4).."_1_pm.mdl"} + end +end + +function ENT:CustomOnInitialize() + if self.Team == 2 then + self:Give("weapon_vj_tdm_ak47") + else + self:Give("weapon_vj_tdm_m4a1") + end + self:SetNWFloat('Team', self.Team) + if self.Team == 1 then + self.VJ_NPC_Class = {"CLASS_SPECGRU"} + else + self.VJ_NPC_Class = {"CLASS_KORTAC"} + end +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/entities/vj_tdm_npc/shared.lua b/gamemodes/cod_custom/entities/entities/vj_tdm_npc/shared.lua new file mode 100644 index 0000000..878a683 --- /dev/null +++ b/gamemodes/cod_custom/entities/entities/vj_tdm_npc/shared.lua @@ -0,0 +1,22 @@ +ENT.Base = "npc_vj_human_base" +ENT.Type = "ai" +ENT.PrintName = "NPC" + +if CLIENT then + local tm_mat = Material('tdmg/hud/teammate.png') + function ENT:Draw() + self:DrawModel() + if self:GetNWFloat('Team') == LocalPlayer():Team() then + local angle = EyeAngles() + angle = Angle( 0, angle.y, 0 ) + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + local pos = self:GetBonePosition(LocalPlayer():LookupBone("ValveBiped.Bip01_Head1"))+Vector(0,0,16) + cam.Start3D2D( pos, angle, 0.1 ) + surface.SetDrawColor(5,155,255) + surface.SetMaterial(tm_mat) + surface.DrawTexturedRect(-12, -12, 24, 24) + cam.End3D2D() + end + end +end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/tdm_grenade.lua b/gamemodes/cod_custom/entities/weapons/tdm_grenade.lua new file mode 100644 index 0000000..f9a46af --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/tdm_grenade.lua @@ -0,0 +1,69 @@ +AddCSLuaFile() + +SWEP.PrintName = "Grenade" +SWEP.Slot = 0 +SWEP.SlotPos = 4 +SWEP.Instructions = "" +SWEP.ViewModel = "models/tdmg/wep/c_lethal_frag.mdl" +SWEP.ViewModelFOV = 75 +SWEP.UseHands = true + +SWEP.Primary.Automatic = false +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = -1 +SWEP.Secondary.ClipSize = -1 +SWEP.Secondary.DefaultClip = -1 +SWEP.Secondary.Automatic = false + +SWEP.DrawAmmo = false + +function SWEP:Initialize() + self:SetHoldType("grenade") +end + +function SWEP:Throw() + self:SendWeaponAnim(ACT_VM_PRIMARYATTACK) + + local ply = self:GetOwner() + timer.Simple(0.1, function() + if !IsValid(ply) then return end + ply:SetAnimation(PLAYER_ATTACK1) + end) + + if SERVER then + timer.Simple(0.5, function() + if !IsValid(ply) or !IsValid(self) then return end + + local class = "tdm_frag" + if self.IsFlash then + class = "tdm_flash" + end + + local ent = ents.Create(class) + ent:SetPos(ply:EyePos()+ply:GetForward()*16) + ent.Player = ply + ent:Spawn() + ent:GetPhysicsObject():SetVelocity(ply:GetAimVector()*750+Vector(0,0,50)) + + ply:ViewPunch(Angle(10,0,0)) + ply:EmitSound("tdmg/wep/knife_miss.wav") + end) + timer.Simple(1, function() + if !IsValid(ply) or !IsValid(self) then return end + + ply:SetActiveWeapon(nil) + ply:SelectWeapon(ply.FastKnifeBeforeWep) + self:Remove() + end) + end + + return true +end + +function SWEP:PrimaryAttack() end + +function SWEP:SecondaryAttack() end + +function SWEP:Reload() end + +function SWEP:DrawWorldModel() end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/tdm_infection_knife.lua b/gamemodes/cod_custom/entities/weapons/tdm_infection_knife.lua new file mode 100644 index 0000000..ed5e338 --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/tdm_infection_knife.lua @@ -0,0 +1,101 @@ + +AddCSLuaFile() + +SWEP.PrintName = "Knife" +SWEP.Slot = 0 +SWEP.SlotPos = 4 +SWEP.Spawnable = true + +SWEP.ViewModel = Model( "models/tdmg/wep/c_knife.mdl" ) +SWEP.WorldModel = "" +SWEP.ViewModelFOV = 70 +SWEP.UseHands = true + +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = -1 +SWEP.Primary.Automatic = true +SWEP.Primary.Ammo = "none" + +SWEP.Secondary.ClipSize = -1 +SWEP.Secondary.DefaultClip = -1 +SWEP.Secondary.Automatic = true +SWEP.Secondary.Ammo = "none" + +SWEP.DrawAmmo = false + +SWEP.HitDistance = 48 + +local SwingSound = Sound( "WeaponFrag.Throw" ) +local HitSound = Sound( "Flesh.ImpactHard" ) + +function SWEP:Initialize() + self:SetHoldType( "fist" ) +end + +function SWEP:PrimaryAttack() + self:SetNextPrimaryFire(CurTime()+0.75) + self:SendWeaponAnim(ACT_VM_HITRIGHT) + self:SetAnimation(PLAYER_ATTACK1) + if SERVER then + timer.Simple(0.1, function() + if !IsValid(self) then return end + self:DealDamage() + end) + end + timer.Simple(0.6, function() + if !IsValid(self) then return end + self:SendWeaponAnim(ACT_VM_IDLE) + end) +end + +function SWEP:SecondaryAttack() end + +function SWEP:DealDamage() + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mask = MASK_SHOT_HULL + } ) + + if ( !IsValid( tr.Entity ) ) then + tr = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mins = Vector( -10, -10, -8 ), + maxs = Vector( 10, 10, 8 ), + mask = MASK_SHOT_HULL + } ) + end + + local tar = tr.Entity + if IsValid(tar) then + tar:TakeDamage(100, self:GetOwner(), self) + if tar:IsPlayer() or tar:IsNPC() then + self:EmitSound("tdmg/wep/melee_knife_0"..math.random(1,2)..".wav") + else + self:EmitSound("tdmg/wep/knife_impact_world"..math.random(1,2)..".wav") + end + else + self:EmitSound("tdmg/wep/knife_swing_miss"..math.random(1,2)..".wav") + end +end + +function SWEP:OnDrop() + self:Remove() +end + +function SWEP:Deploy() + self:EmitSound("tdmg/wep/knife_deploy.wav") + self:SendWeaponAnim(ACT_VM_DRAW) + timer.Simple(1, function() + if !IsValid(self) then return end + self:SendWeaponAnim(ACT_VM_IDLE) + end) + return true +end + +function SWEP:Holster() + return true +end diff --git a/gamemodes/cod_custom/entities/weapons/tdm_knife.lua b/gamemodes/cod_custom/entities/weapons/tdm_knife.lua new file mode 100644 index 0000000..2e3012d --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/tdm_knife.lua @@ -0,0 +1,86 @@ +AddCSLuaFile() + +SWEP.PrintName = "Knife" +SWEP.Slot = 0 +SWEP.SlotPos = 4 +SWEP.Instructions = "" +SWEP.ViewModel = "models/tdmg/wep/c_combat_knife.mdl" +SWEP.ViewModelFOV = 75 +SWEP.UseHands = true + +SWEP.Primary.Automatic = false +SWEP.Primary.ClipSize = -1 +SWEP.Primary.DefaultClip = -1 +SWEP.Secondary.ClipSize = -1 +SWEP.Secondary.DefaultClip = -1 +SWEP.Secondary.Automatic = false + +SWEP.HitDistance = 56 + +SWEP.DrawAmmo = false + +function SWEP:Initialize() + self:SetHoldType("knife") +end + +function SWEP:Knifing() + self:SendWeaponAnim(ACT_VM_PRIMARYATTACK) + + local ply = self:GetOwner() + ply:ViewPunch(Angle(0,-20,10)) + timer.Simple(0.1, function() + if !IsValid(ply) then return end + ply:SetAnimation(PLAYER_ATTACK1) + end) + + if SERVER then + ply:EmitSound("tdmg/wep/knife_miss.wav") + timer.Simple(0.15, function() + if !IsValid(ply) or !IsValid(self) then return end + + local tr = util.TraceLine( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mask = MASK_SHOT_HULL + } ) + + if ( !IsValid( tr.Entity ) ) then + tr = util.TraceHull( { + start = self.Owner:GetShootPos(), + endpos = self.Owner:GetShootPos() + self.Owner:GetAimVector() * self.HitDistance, + filter = self.Owner, + mins = Vector( -16, -16, -8 ), + maxs = Vector( 16, 16, 8 ), + mask = MASK_SHOT_HULL + } ) + end + + local ent = tr.Entity + + if IsValid(ent) and (ent:IsPlayer() or ent:IsNPC()) then + ent:TakeDamage(250, ply, self) + ply:EmitSound("tdmg/wep/knife_hit"..math.random(1,3)..".wav") + elseif tr.Hit then + ply:EmitSound("physics/concrete/rock_impact_hard"..math.random(1,6)..".wav") + end + end) + timer.Simple(0.5, function() + if !IsValid(ply) or !IsValid(self) then return end + + ply:SetActiveWeapon(nil) + ply:SelectWeapon(ply.FastKnifeBeforeWep) + self:Remove() + end) + end + + return true +end + +function SWEP:PrimaryAttack() end + +function SWEP:SecondaryAttack() end + +function SWEP:Reload() end + +function SWEP:DrawWorldModel() end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/tdm_radio.lua b/gamemodes/cod_custom/entities/weapons/tdm_radio.lua new file mode 100644 index 0000000..6e8c5be --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/tdm_radio.lua @@ -0,0 +1,111 @@ +AddCSLuaFile() + +SWEP.PrintName = "Radio" +SWEP.Slot = 0 +SWEP.SlotPos = 4 +SWEP.Instructions = "LMB - Mark Position, RMB - Zoom" +SWEP.ViewModel = "models/tdmg/wep/chands_smallradio.mdl" +SWEP.ViewModelFOV = 75 +SWEP.UseHands = true + +SWEP.Primary.Automatic = false +SWEP.Secondary.Automatic = false + +SWEP.DrawAmmo = false + +function SWEP:Initialize() + self.Called = false + self.FOVED = false + self.EndAfter = 0 + self.PosTable = {} + self:SetNWBool('drawarrow', true) + if not self.Killstreak then + self.Killstreak = "package" + end +end + +function SWEP:Deploy() + self:SendWeaponAnim(ACT_VM_DRAW) + self:SetHoldType("slam") + return true +end + +function SWEP:CheckSky() + local tr = self:GetOwner():GetEyeTrace().HitPos + + local tr2 = util.TraceLine({ + start = tr, + endpos = tr+Vector(0,0,99999), + filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end, + }) + + return tr2.HitSky +end + +function SWEP:PrimaryAttack() + if self.Called then return end + if not self:CheckSky() then return end + self.Called = true + self:SendWeaponAnim(ACT_VM_PULLBACK) + timer.Simple(0.3, function() + if !IsValid(self) then return end + self:EmitSound("tdmg/radio_apply.wav") + self:SendWeaponAnim(ACT_VM_IDLE) + end) + if SERVER then + local ply = self:GetOwner() + local pos = ply:GetEyeTrace().HitPos + local cannext = true + if self.ManyTimes then + table.insert(self.PosTable, pos) + pos = self.PosTable + + self.EndAfter = self.EndAfter - 1 + if self.EndAfter > 0 then + cannext = false + end + end + if cannext then + ply:SetFOV(0, 0.25) + self:SetNWBool('drawarrow', false) + timer.Simple(0.3, function() + if !IsValid(self) then return end + COD:ChooseKillstreakRadio(ply, self, pos) + end) + timer.Simple(1.2, function() + if !IsValid(self) then return end + if IsValid(ply) then + ply:SelectWeapon(ply.RadioBeforeWep) + end + self:Remove() + end) + else + timer.Simple(1, function() + if !IsValid(self) then return end + self.Called = false + end) + end + end + timer.Simple(0.4, function() + if !IsValid(self) then return end + if self.EndAfter == 0 then + self:SendWeaponAnim(ACT_VM_HOLSTER) + end + end) +end + +function SWEP:SecondaryAttack() + if self.Called then return end + if SERVER then + local ply = self:GetOwner() + if not self.FOVED then + self.FOVED = true + ply:SetFOV(50, 0.25) + else + self.FOVED = false + ply:SetFOV(0, 0.25) + end + end +end + +function SWEP:DrawWorldModel() end \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/weapon_base/ai_translations.lua b/gamemodes/cod_custom/entities/weapons/weapon_base/ai_translations.lua new file mode 100644 index 0000000..36c91d5 --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_base/ai_translations.lua @@ -0,0 +1,192 @@ + +--[[--------------------------------------------------------- + Name: SetupWeaponHoldTypeForAI + Desc: Sets up ACT translations from generic activities to NPC specific activies. In a seperate file to clean up the init.lua + Not all NPCs have support for all animations (for example Citizens don't have pistol animations) + This only supports the holdtypes the default NPC models can support + All of these are taken directly from IMPLEMENT_ACTTABLE() macro of the C++ weapons +-----------------------------------------------------------]] +function SWEP:SetupWeaponHoldTypeForAI( t ) + + self.ActivityTranslateAI = {} + + -- Default is pistol/revolver for reasons + self.ActivityTranslateAI[ ACT_IDLE ] = ACT_IDLE_PISTOL + self.ActivityTranslateAI[ ACT_IDLE_ANGRY ] = ACT_IDLE_ANGRY_PISTOL + self.ActivityTranslateAI[ ACT_RANGE_ATTACK1 ] = ACT_RANGE_ATTACK_PISTOL + self.ActivityTranslateAI[ ACT_RELOAD ] = ACT_RELOAD_PISTOL + self.ActivityTranslateAI[ ACT_WALK_AIM ] = ACT_WALK_AIM_PISTOL + self.ActivityTranslateAI[ ACT_RUN_AIM ] = ACT_RUN_AIM_PISTOL + self.ActivityTranslateAI[ ACT_GESTURE_RANGE_ATTACK1 ] = ACT_GESTURE_RANGE_ATTACK_PISTOL + self.ActivityTranslateAI[ ACT_RELOAD_LOW ] = ACT_RELOAD_PISTOL_LOW + + self.ActivityTranslateAI[ ACT_RANGE_ATTACK1_LOW ] = ACT_RANGE_ATTACK_PISTOL_LOW + self.ActivityTranslateAI[ ACT_COVER_LOW ] = ACT_COVER_PISTOL_LOW + self.ActivityTranslateAI[ ACT_RANGE_AIM_LOW ] = ACT_RANGE_AIM_PISTOL_LOW + self.ActivityTranslateAI[ ACT_GESTURE_RELOAD ] = ACT_GESTURE_RELOAD_PISTOL + + self.ActivityTranslateAI[ ACT_WALK ] = ACT_WALK_PISTOL + self.ActivityTranslateAI[ ACT_RUN ] = ACT_RUN_PISTOL + + self.ActivityTranslateAI[ ACT_IDLE_RELAXED ] = ACT_IDLE_PISTOL + self.ActivityTranslateAI[ ACT_IDLE_STIMULATED ] = ACT_IDLE_STIMULATED + self.ActivityTranslateAI[ ACT_IDLE_AGITATED ] = ACT_IDLE_ANGRY_PISTOL + self.ActivityTranslateAI[ ACT_IDLE_STEALTH ] = ACT_IDLE_STEALTH_PISTOL + + self.ActivityTranslateAI[ ACT_WALK_RELAXED ] = ACT_WALK + self.ActivityTranslateAI[ ACT_WALK_STIMULATED ] = ACT_WALK_STIMULATED + self.ActivityTranslateAI[ ACT_WALK_AGITATED ] = ACT_WALK_AIM_PISTOL + self.ActivityTranslateAI[ ACT_WALK_STEALTH ] = ACT_WALK_STEALTH_PISTOL + + self.ActivityTranslateAI[ ACT_RUN_RELAXED ] = ACT_RUN + self.ActivityTranslateAI[ ACT_RUN_STIMULATED ] = ACT_RUN_STIMULATED + self.ActivityTranslateAI[ ACT_RUN_AGITATED ] = ACT_RUN_AIM_PISTOL + self.ActivityTranslateAI[ ACT_RUN_STEALTH ] = ACT_RUN_STEALTH_PISTOL + + self.ActivityTranslateAI[ ACT_IDLE_AIM_RELAXED ] = ACT_IDLE_PISTOL + self.ActivityTranslateAI[ ACT_IDLE_AIM_STIMULATED ] = ACT_IDLE_ANGRY_PISTOL + self.ActivityTranslateAI[ ACT_IDLE_AIM_AGITATED ] = ACT_IDLE_ANGRY_PISTOL + self.ActivityTranslateAI[ ACT_IDLE_AIM_STEALTH ] = ACT_IDLE_STEALTH_PISTOL + + self.ActivityTranslateAI[ ACT_WALK_AIM_RELAXED ] = ACT_WALK + self.ActivityTranslateAI[ ACT_WALK_AIM_STIMULATED ] = ACT_WALK_AIM_PISTOL + self.ActivityTranslateAI[ ACT_WALK_AIM_AGITATED ] = ACT_WALK_AIM_PISTOL + self.ActivityTranslateAI[ ACT_WALK_AIM_STEALTH ] = ACT_WALK_AIM_STEALTH_PISTOL + + self.ActivityTranslateAI[ ACT_RUN_AIM_RELAXED ] = ACT_RUN + self.ActivityTranslateAI[ ACT_RUN_AIM_STIMULATED ] = ACT_RUN_AIM_PISTOL + self.ActivityTranslateAI[ ACT_RUN_AIM_AGITATED ] = ACT_RUN_AIM_PISTOL + self.ActivityTranslateAI[ ACT_RUN_AIM_STEALTH ] = ACT_RUN_AIM_STEALTH_PISTOL + + self.ActivityTranslateAI[ ACT_CROUCHIDLE_STIMULATED] = ACT_CROUCHIDLE_STIMULATED + self.ActivityTranslateAI[ ACT_CROUCHIDLE_AIM_STIMULATED ] = ACT_RANGE_AIM_PISTOL_LOW + self.ActivityTranslateAI[ ACT_CROUCHIDLE_AGITATED ] = ACT_RANGE_AIM_PISTOL_LOW + + self.ActivityTranslateAI[ ACT_READINESS_RELAXED_TO_STIMULATED ] = ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED + self.ActivityTranslateAI[ ACT_READINESS_RELAXED_TO_STIMULATED_WALK ] = ACT_READINESS_PISTOL_RELAXED_TO_STIMULATED_WALK + self.ActivityTranslateAI[ ACT_READINESS_AGITATED_TO_STIMULATED ] = ACT_READINESS_PISTOL_AGITATED_TO_STIMULATED + self.ActivityTranslateAI[ ACT_READINESS_STIMULATED_TO_RELAXED ] = ACT_READINESS_PISTOL_STIMULATED_TO_RELAXED + + if ( t == "ar2" || t == "smg" ) then + + self.ActivityTranslateAI[ ACT_RANGE_ATTACK1 ] = ACT_RANGE_ATTACK_AR2 + self.ActivityTranslateAI[ ACT_RELOAD ] = ACT_RELOAD_SMG1 + self.ActivityTranslateAI[ ACT_IDLE ] = ACT_IDLE_SMG1 + self.ActivityTranslateAI[ ACT_IDLE_ANGRY ] = ACT_IDLE_ANGRY_SMG1 + + self.ActivityTranslateAI[ ACT_WALK ] = ACT_WALK_RIFLE + self.ActivityTranslateAI[ ACT_WALK_AIM ] = ACT_WALK_AIM_RIFLE + + self.ActivityTranslateAI[ ACT_IDLE_RELAXED ] = ACT_IDLE_SMG1_RELAXED + self.ActivityTranslateAI[ ACT_IDLE_STIMULATED ] = ACT_IDLE_SMG1_STIMULATED + self.ActivityTranslateAI[ ACT_IDLE_AGITATED ] = ACT_IDLE_ANGRY_SMG1 + + self.ActivityTranslateAI[ ACT_WALK_RELAXED ] = ACT_WALK_RIFLE_RELAXED + self.ActivityTranslateAI[ ACT_WALK_STIMULATED ] = ACT_WALK_RIFLE_STIMULATED + self.ActivityTranslateAI[ ACT_WALK_AGITATED ] = ACT_WALK_AIM_RIFLE + + self.ActivityTranslateAI[ ACT_RUN_RELAXED ] = ACT_RUN_RIFLE_RELAXED + self.ActivityTranslateAI[ ACT_RUN_STIMULATED ] = ACT_RUN_RIFLE_STIMULATED + self.ActivityTranslateAI[ ACT_RUN_AGITATED ] = ACT_RUN_AIM_RIFLE + + self.ActivityTranslateAI[ ACT_IDLE_AIM_RELAXED ] = ACT_IDLE_SMG1_RELAXED + self.ActivityTranslateAI[ ACT_IDLE_AIM_STIMULATED ] = ACT_IDLE_AIM_RIFLE_STIMULATED + self.ActivityTranslateAI[ ACT_IDLE_AIM_AGITATED ] = ACT_IDLE_ANGRY_SMG1 + + self.ActivityTranslateAI[ ACT_WALK_AIM_RELAXED ] = ACT_WALK_RIFLE_RELAXED + self.ActivityTranslateAI[ ACT_WALK_AIM_STIMULATED ] = ACT_WALK_AIM_RIFLE_STIMULATED + self.ActivityTranslateAI[ ACT_WALK_AIM_AGITATED ] = ACT_WALK_AIM_RIFLE + + self.ActivityTranslateAI[ ACT_RUN_AIM_RELAXED ] = ACT_RUN_RIFLE_RELAXED + self.ActivityTranslateAI[ ACT_RUN_AIM_STIMULATED ] = ACT_RUN_AIM_RIFLE_STIMULATED + self.ActivityTranslateAI[ ACT_RUN_AIM_AGITATED ] = ACT_RUN_AIM_RIFLE + + self.ActivityTranslateAI[ ACT_WALK_CROUCH ] = ACT_WALK_CROUCH_RIFLE + self.ActivityTranslateAI[ ACT_WALK_CROUCH_AIM ] = ACT_WALK_CROUCH_AIM_RIFLE + self.ActivityTranslateAI[ ACT_RUN ] = ACT_RUN_RIFLE + self.ActivityTranslateAI[ ACT_RUN_AIM ] = ACT_RUN_AIM_RIFLE + self.ActivityTranslateAI[ ACT_RUN_CROUCH ] = ACT_RUN_CROUCH_RIFLE + self.ActivityTranslateAI[ ACT_RUN_CROUCH_AIM ] = ACT_RUN_CROUCH_AIM_RIFLE + self.ActivityTranslateAI[ ACT_GESTURE_RANGE_ATTACK1 ] = ACT_GESTURE_RANGE_ATTACK_AR2 + self.ActivityTranslateAI[ ACT_RANGE_ATTACK1_LOW ] = ACT_RANGE_ATTACK_SMG1_LOW + self.ActivityTranslateAI[ ACT_COVER_LOW ] = ACT_COVER_SMG1_LOW + self.ActivityTranslateAI[ ACT_RANGE_AIM_LOW ] = ACT_RANGE_AIM_AR2_LOW + self.ActivityTranslateAI[ ACT_RELOAD_LOW ] = ACT_RELOAD_SMG1_LOW + self.ActivityTranslateAI[ ACT_GESTURE_RELOAD ] = ACT_GESTURE_RELOAD_SMG1 + + -- Extra overrides for SMG holdtype + if ( t == "smg" ) then + self.ActivityTranslateAI[ ACT_RANGE_ATTACK1 ] = ACT_RANGE_ATTACK_SMG1 + self.ActivityTranslateAI[ ACT_GESTURE_RANGE_ATTACK1 ] = ACT_GESTURE_RANGE_ATTACK_SMG1 + self.ActivityTranslateAI[ ACT_RANGE_AIM_LOW ] = ACT_RANGE_AIM_SMG1_LOW + end + + return + end + + if ( t == "shotgun" || t == "crossbow" ) then + self.ActivityTranslateAI[ ACT_IDLE ] = ACT_IDLE_SMG1 + + self.ActivityTranslateAI[ ACT_RANGE_ATTACK1 ] = ACT_RANGE_ATTACK_SHOTGUN + self.ActivityTranslateAI[ ACT_RELOAD ] = ACT_RELOAD_SHOTGUN + self.ActivityTranslateAI[ ACT_WALK ] = ACT_WALK_RIFLE + self.ActivityTranslateAI[ ACT_IDLE_ANGRY ] = ACT_IDLE_ANGRY_SHOTGUN + + self.ActivityTranslateAI[ ACT_IDLE_RELAXED ] = ACT_IDLE_SHOTGUN_RELAXED + self.ActivityTranslateAI[ ACT_IDLE_STIMULATED ] = ACT_IDLE_SHOTGUN_STIMULATED + self.ActivityTranslateAI[ ACT_IDLE_AGITATED ] = ACT_IDLE_SHOTGUN_AGITATED + + self.ActivityTranslateAI[ ACT_WALK_RELAXED ] = ACT_WALK_RIFLE_RELAXED + self.ActivityTranslateAI[ ACT_WALK_STIMULATED ] = ACT_WALK_RIFLE_STIMULATED + self.ActivityTranslateAI[ ACT_WALK_AGITATED ] = ACT_WALK_AIM_RIFLE + + self.ActivityTranslateAI[ ACT_RUN_RELAXED ] = ACT_RUN_RIFLE_RELAXED + self.ActivityTranslateAI[ ACT_RUN_STIMULATED ] = ACT_RUN_RIFLE_STIMULATED + self.ActivityTranslateAI[ ACT_RUN_AGITATED ] = ACT_RUN_AIM_RIFLE + + self.ActivityTranslateAI[ ACT_IDLE_AIM_RELAXED ] = ACT_IDLE_SMG1_RELAXED + self.ActivityTranslateAI[ ACT_IDLE_AIM_STIMULATED ] = ACT_IDLE_AIM_RIFLE_STIMULATED + self.ActivityTranslateAI[ ACT_IDLE_AIM_AGITATED ] = ACT_IDLE_ANGRY_SMG1 + + self.ActivityTranslateAI[ ACT_WALK_AIM_RELAXED ] = ACT_WALK_RIFLE_RELAXED + self.ActivityTranslateAI[ ACT_WALK_AIM_STIMULATED ] = ACT_WALK_AIM_RIFLE_STIMULATED + self.ActivityTranslateAI[ ACT_WALK_AIM_AGITATED ] = ACT_WALK_AIM_RIFLE + + self.ActivityTranslateAI[ ACT_RUN_AIM_RELAXED ] = ACT_RUN_RIFLE_RELAXED + self.ActivityTranslateAI[ ACT_RUN_AIM_STIMULATED ] = ACT_RUN_AIM_RIFLE_STIMULATED + self.ActivityTranslateAI[ ACT_RUN_AIM_AGITATED ] = ACT_RUN_AIM_RIFLE + + self.ActivityTranslateAI[ ACT_WALK_AIM ] = ACT_WALK_AIM_SHOTGUN + self.ActivityTranslateAI[ ACT_WALK_CROUCH ] = ACT_WALK_CROUCH_RIFLE + self.ActivityTranslateAI[ ACT_WALK_CROUCH_AIM ] = ACT_WALK_CROUCH_AIM_RIFLE + self.ActivityTranslateAI[ ACT_RUN ] = ACT_RUN_RIFLE + self.ActivityTranslateAI[ ACT_RUN_AIM ] = ACT_RUN_AIM_SHOTGUN + self.ActivityTranslateAI[ ACT_RUN_CROUCH ] = ACT_RUN_CROUCH_RIFLE + self.ActivityTranslateAI[ ACT_RUN_CROUCH_AIM ] = ACT_RUN_CROUCH_AIM_RIFLE + self.ActivityTranslateAI[ ACT_GESTURE_RANGE_ATTACK1 ] = ACT_GESTURE_RANGE_ATTACK_SHOTGUN + self.ActivityTranslateAI[ ACT_RANGE_ATTACK1_LOW ] = ACT_RANGE_ATTACK_SHOTGUN_LOW + self.ActivityTranslateAI[ ACT_RELOAD_LOW ] = ACT_RELOAD_SHOTGUN_LOW + self.ActivityTranslateAI[ ACT_GESTURE_RELOAD ] = ACT_GESTURE_RELOAD_SHOTGUN + + return + end + + if ( t == "rpg" ) then + self.ActivityTranslateAI[ ACT_RANGE_ATTACK1 ] = ACT_RANGE_ATTACK_RPG + + self.ActivityTranslateAI[ ACT_IDLE_RELAXED ] = ACT_IDLE_RPG_RELAXED + self.ActivityTranslateAI[ ACT_IDLE_STIMULATED ] = ACT_IDLE_ANGRY_RPG + self.ActivityTranslateAI[ ACT_IDLE_AGITATED ] = ACT_IDLE_ANGRY_RPG + + self.ActivityTranslateAI[ ACT_IDLE ] = ACT_IDLE_RPG + self.ActivityTranslateAI[ ACT_IDLE_ANGRY ] = ACT_IDLE_ANGRY_RPG + self.ActivityTranslateAI[ ACT_WALK ] = ACT_WALK_RPG + self.ActivityTranslateAI[ ACT_WALK_CROUCH ] = ACT_WALK_CROUCH_RPG + self.ActivityTranslateAI[ ACT_RUN ] = ACT_RUN_RPG + self.ActivityTranslateAI[ ACT_RUN_CROUCH ] = ACT_RUN_CROUCH_RPG + self.ActivityTranslateAI[ ACT_COVER_LOW ] = ACT_COVER_LOW_RPG + + return + end + +end diff --git a/gamemodes/cod_custom/entities/weapons/weapon_base/cl_init.lua b/gamemodes/cod_custom/entities/weapons/weapon_base/cl_init.lua new file mode 100644 index 0000000..84c0df9 --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_base/cl_init.lua @@ -0,0 +1,212 @@ + +include( "ai_translations.lua" ) +include( "sh_anim.lua" ) +include( "shared.lua" ) + +SWEP.Slot = 0 -- Slot in the weapon selection menu +SWEP.SlotPos = 10 -- Position in the slot +SWEP.DrawAmmo = true -- Should draw the default HL2 ammo counter +SWEP.DrawCrosshair = true -- Should draw the default crosshair +SWEP.DrawWeaponInfoBox = true -- Should draw the weapon info box +SWEP.BounceWeaponIcon = true -- Should the weapon icon bounce? +SWEP.SwayScale = 1.0 -- The scale of the viewmodel sway +SWEP.BobScale = 1.0 -- The scale of the viewmodel bob + +SWEP.RenderGroup = RENDERGROUP_OPAQUE + +-- Override this in your SWEP to set the icon in the weapon selection +SWEP.WepSelectIcon = surface.GetTextureID( "weapons/swep" ) + +-- This is the corner of the speech bubble +SWEP.SpeechBubbleLid = surface.GetTextureID( "gui/speech_lid" ) + +--[[--------------------------------------------------------- + You can draw to the HUD here - it will only draw when + the client has the weapon deployed.. +-----------------------------------------------------------]] +function SWEP:DrawHUD() +end + +--[[--------------------------------------------------------- + Checks the objects before any action is taken + This is to make sure that the entities haven't been removed +-----------------------------------------------------------]] +function SWEP:DrawWeaponSelection( x, y, wide, tall, alpha ) + + -- Set us up the texture + surface.SetDrawColor( 255, 255, 255, alpha ) + surface.SetTexture( self.WepSelectIcon ) + + -- Lets get a sin wave to make it bounce + local fsin = 0 + + if ( self.BounceWeaponIcon == true ) then + fsin = math.sin( CurTime() * 10 ) * 5 + end + + -- Borders + y = y + 10 + x = x + 10 + wide = wide - 20 + + -- Draw that mother + surface.DrawTexturedRect( x + fsin, y - fsin, wide - fsin * 2 , ( wide / 2 ) + fsin ) + + -- Draw weapon info box + self:PrintWeaponInfo( x + wide + 20, y + tall * 0.95, alpha ) + +end + +--[[--------------------------------------------------------- + This draws the weapon info box +-----------------------------------------------------------]] +function SWEP:PrintWeaponInfo( x, y, alpha ) + + if ( self.DrawWeaponInfoBox == false ) then return end + + if (self.InfoMarkup == nil ) then + local str + local title_color = "" + local text_color = "" + + str = "" + if ( self.Author != "" ) then str = str .. title_color .. "Author:\t" .. text_color .. self.Author .. "\n" end + if ( self.Contact != "" ) then str = str .. title_color .. "Contact:\t" .. text_color .. self.Contact .. "\n\n" end + if ( self.Purpose != "" ) then str = str .. title_color .. "Purpose:\n" .. text_color .. self.Purpose .. "\n\n" end + if ( self.Instructions != "" ) then str = str .. title_color .. "Instructions:\n" .. text_color .. self.Instructions .. "\n" end + str = str .. "" + + self.InfoMarkup = markup.Parse( str, 250 ) + end + + surface.SetDrawColor( 60, 60, 60, alpha ) + surface.SetTexture( self.SpeechBubbleLid ) + + surface.DrawTexturedRect( x, y - 64 - 5, 128, 64 ) + draw.RoundedBox( 8, x - 5, y - 6, 260, self.InfoMarkup:GetHeight() + 18, Color( 60, 60, 60, alpha ) ) + + self.InfoMarkup:Draw( x + 5, y + 5, nil, nil, alpha ) + +end + +--[[--------------------------------------------------------- + Name: SWEP:FreezeMovement() + Desc: Return true to freeze moving the view +-----------------------------------------------------------]] +function SWEP:FreezeMovement() + return false +end + +--[[--------------------------------------------------------- + Name: SWEP:ViewModelDrawn( viewModel ) + Desc: Called straight after the viewmodel has been drawn +-----------------------------------------------------------]] +function SWEP:ViewModelDrawn( vm ) +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: Called immediately after a "load" +-----------------------------------------------------------]] +function SWEP:OnRestore() +end + +--[[--------------------------------------------------------- + Name: CustomAmmoDisplay + Desc: Return a table +-----------------------------------------------------------]] +function SWEP:CustomAmmoDisplay() +end + +--[[--------------------------------------------------------- + Name: GetViewModelPosition + Desc: Allows you to re-position the view model +-----------------------------------------------------------]] +function SWEP:GetViewModelPosition( pos, ang ) + + return pos, ang + +end + +--[[--------------------------------------------------------- + Name: TranslateFOV + Desc: Allows the weapon to translate the player's FOV (clientside) +-----------------------------------------------------------]] +function SWEP:TranslateFOV( current_fov ) + + return current_fov + +end + +--[[--------------------------------------------------------- + Name: DrawWorldModel + Desc: Draws the world model (not the viewmodel) +-----------------------------------------------------------]] +function SWEP:DrawWorldModel() + + self:DrawModel() + +end + +--[[--------------------------------------------------------- + Name: DrawWorldModelTranslucent + Desc: Draws the world model (not the viewmodel) +-----------------------------------------------------------]] +function SWEP:DrawWorldModelTranslucent() + + self:DrawModel() + +end + +--[[--------------------------------------------------------- + Name: AdjustMouseSensitivity + Desc: Allows you to adjust the mouse sensitivity. +-----------------------------------------------------------]] +function SWEP:AdjustMouseSensitivity() + + return nil + +end + +--[[--------------------------------------------------------- + Name: GetTracerOrigin + Desc: Allows you to override where the tracer comes from (in first person view) + returning anything but a vector indicates that you want the default action +-----------------------------------------------------------]] +function SWEP:GetTracerOrigin() + +--[[ + local ply = self:GetOwner() + local pos = ply:EyePos() + ply:EyeAngles():Right() * -5 + return pos +--]] + +end + +--[[--------------------------------------------------------- + Name: FireAnimationEvent + Desc: Allows you to override weapon animation events +-----------------------------------------------------------]] +function SWEP:FireAnimationEvent( pos, ang, event, options ) + + if ( !self.CSMuzzleFlashes ) then return end + + -- CS Muzzle flashes + if ( event == 5001 or event == 5011 or event == 5021 or event == 5031 ) then + + local data = EffectData() + data:SetFlags( 0 ) + data:SetEntity( self.Owner:GetViewModel() ) + data:SetAttachment( math.floor( ( event - 4991 ) / 10 ) ) + data:SetScale( 1 ) + + if ( self.CSMuzzleX ) then + util.Effect( "CS_MuzzleFlash_X", data ) + else + util.Effect( "CS_MuzzleFlash", data ) + end + + return true + end + +end diff --git a/gamemodes/cod_custom/entities/weapons/weapon_base/init.lua b/gamemodes/cod_custom/entities/weapons/weapon_base/init.lua new file mode 100644 index 0000000..c716b53 --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_base/init.lua @@ -0,0 +1,104 @@ + +AddCSLuaFile( "cl_init.lua" ) +AddCSLuaFile( "ai_translations.lua" ) +AddCSLuaFile( "sh_anim.lua" ) +AddCSLuaFile( "shared.lua" ) + +include( "ai_translations.lua" ) +include( "sh_anim.lua" ) +include( "shared.lua" ) + +SWEP.Weight = 5 -- Decides whether we should switch from/to this +SWEP.AutoSwitchTo = true -- Auto switch to if we pick it up +SWEP.AutoSwitchFrom = true -- Auto switch from if you pick up a better weapon + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: The game has just been reloaded. This is usually the right place + to call the GetNW* functions to restore the script's values. +-----------------------------------------------------------]] +function SWEP:OnRestore() +end + +--[[--------------------------------------------------------- + Name: AcceptInput + Desc: Accepts input, return true to override/accept input +-----------------------------------------------------------]] +function SWEP:AcceptInput( name, activator, caller, data ) + return false +end + +--[[--------------------------------------------------------- + Name: KeyValue + Desc: Called when a keyvalue is added to us +-----------------------------------------------------------]] +function SWEP:KeyValue( key, value ) +end + +--[[--------------------------------------------------------- + Name: Equip + Desc: A player or NPC has picked the weapon up +-----------------------------------------------------------]] +function SWEP:Equip( newOwner ) +end + +--[[--------------------------------------------------------- + Name: EquipAmmo + Desc: The player has picked up the weapon and has taken the ammo from it + The weapon will be removed immidiately after this call. +-----------------------------------------------------------]] +function SWEP:EquipAmmo( newOwner ) +end + + +--[[--------------------------------------------------------- + Name: OnDrop + Desc: Weapon was dropped +-----------------------------------------------------------]] +function SWEP:OnDrop() +end + +--[[--------------------------------------------------------- + Name: ShouldDropOnDie + Desc: Should this weapon be dropped when its owner dies? +-----------------------------------------------------------]] +function SWEP:ShouldDropOnDie() + return true +end + +--[[--------------------------------------------------------- + Name: GetCapabilities + Desc: For NPCs, returns what they should try to do with it. +-----------------------------------------------------------]] +function SWEP:GetCapabilities() + + return CAP_WEAPON_RANGE_ATTACK1 + +end + +--[[--------------------------------------------------------- + Name: NPCShoot_Secondary + Desc: NPC tried to fire secondary attack +-----------------------------------------------------------]] +function SWEP:NPCShoot_Secondary( shootPos, shootDir ) + + self:SecondaryAttack() + +end + +--[[--------------------------------------------------------- + Name: NPCShoot_Secondary + Desc: NPC tried to fire primary attack +-----------------------------------------------------------]] +function SWEP:NPCShoot_Primary( shootPos, shootDir ) + + self:PrimaryAttack() + +end + +-- These tell the NPC how to use the weapon +AccessorFunc( SWEP, "fNPCMinBurst", "NPCMinBurst" ) +AccessorFunc( SWEP, "fNPCMaxBurst", "NPCMaxBurst" ) +AccessorFunc( SWEP, "fNPCFireRate", "NPCFireRate" ) +AccessorFunc( SWEP, "fNPCMinRestTime", "NPCMinRest" ) +AccessorFunc( SWEP, "fNPCMaxRestTime", "NPCMaxRest" ) diff --git a/gamemodes/cod_custom/entities/weapons/weapon_base/sh_anim.lua b/gamemodes/cod_custom/entities/weapons/weapon_base/sh_anim.lua new file mode 100644 index 0000000..d22e2ed --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_base/sh_anim.lua @@ -0,0 +1,87 @@ + +local ActIndex = { + [ "pistol" ] = ACT_HL2MP_IDLE_PISTOL, + [ "smg" ] = ACT_HL2MP_IDLE_SMG1, + [ "grenade" ] = ACT_HL2MP_IDLE_GRENADE, + [ "ar2" ] = ACT_HL2MP_IDLE_AR2, + [ "shotgun" ] = ACT_HL2MP_IDLE_SHOTGUN, + [ "rpg" ] = ACT_HL2MP_IDLE_RPG, + [ "physgun" ] = ACT_HL2MP_IDLE_PHYSGUN, + [ "crossbow" ] = ACT_HL2MP_IDLE_CROSSBOW, + [ "melee" ] = ACT_HL2MP_IDLE_MELEE, + [ "slam" ] = ACT_HL2MP_IDLE_SLAM, + [ "normal" ] = ACT_HL2MP_IDLE, + [ "fist" ] = ACT_HL2MP_IDLE_FIST, + [ "melee2" ] = ACT_HL2MP_IDLE_MELEE2, + [ "passive" ] = ACT_HL2MP_IDLE_PASSIVE, + [ "knife" ] = ACT_HL2MP_IDLE_KNIFE, + [ "duel" ] = ACT_HL2MP_IDLE_DUEL, + [ "camera" ] = ACT_HL2MP_IDLE_CAMERA, + [ "magic" ] = ACT_HL2MP_IDLE_MAGIC, + [ "revolver" ] = ACT_HL2MP_IDLE_REVOLVER +} + +--[[--------------------------------------------------------- + Name: SetWeaponHoldType + Desc: Sets up the translation table, to translate from normal + standing idle pose, to holding weapon pose. +-----------------------------------------------------------]] +function SWEP:SetWeaponHoldType( t ) + + t = string.lower( t ) + local index = ActIndex[ t ] + + if ( index == nil ) then + Msg( "SWEP:SetWeaponHoldType - ActIndex[ \"" .. t .. "\" ] isn't set! (defaulting to normal)\n" ) + t = "normal" + index = ActIndex[ t ] + end + + self.ActivityTranslate = {} + self.ActivityTranslate[ ACT_MP_STAND_IDLE ] = index + self.ActivityTranslate[ ACT_MP_WALK ] = index + 1 + self.ActivityTranslate[ ACT_MP_RUN ] = index + 2 + self.ActivityTranslate[ ACT_MP_CROUCH_IDLE ] = index + 3 + self.ActivityTranslate[ ACT_MP_CROUCHWALK ] = index + 4 + self.ActivityTranslate[ ACT_MP_ATTACK_STAND_PRIMARYFIRE ] = index + 5 + self.ActivityTranslate[ ACT_MP_ATTACK_CROUCH_PRIMARYFIRE ] = index + 5 + self.ActivityTranslate[ ACT_MP_RELOAD_STAND ] = index + 6 + self.ActivityTranslate[ ACT_MP_RELOAD_CROUCH ] = index + 6 + self.ActivityTranslate[ ACT_MP_JUMP ] = index + 7 + self.ActivityTranslate[ ACT_RANGE_ATTACK1 ] = index + 8 + self.ActivityTranslate[ ACT_MP_SWIM ] = index + 9 + + -- "normal" jump animation doesn't exist + if ( t == "normal" ) then + self.ActivityTranslate[ ACT_MP_JUMP ] = ACT_HL2MP_JUMP_SLAM + end + + self:SetupWeaponHoldTypeForAI( t ) + +end + +-- Default hold pos is the pistol +SWEP:SetWeaponHoldType( "pistol" ) + +--[[--------------------------------------------------------- + Name: weapon:TranslateActivity() + Desc: Translate a player's Activity into a weapon's activity + So for example, ACT_HL2MP_RUN becomes ACT_HL2MP_RUN_PISTOL + Depending on how you want the player to be holding the weapon +-----------------------------------------------------------]] +function SWEP:TranslateActivity( act ) + + if ( self.Owner:IsNPC() ) then + if ( self.ActivityTranslateAI[ act ] ) then + return self.ActivityTranslateAI[ act ] + end + return -1 + end + + if ( self.ActivityTranslate[ act ] != nil ) then + return self.ActivityTranslate[ act ] + end + + return -1 + +end diff --git a/gamemodes/cod_custom/entities/weapons/weapon_base/shared.lua b/gamemodes/cod_custom/entities/weapons/weapon_base/shared.lua new file mode 100644 index 0000000..750b446 --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_base/shared.lua @@ -0,0 +1,273 @@ + +-- Variables that are used on both client and server + +SWEP.PrintName = "Scripted Weapon" -- 'Nice' Weapon name (Shown on HUD) +SWEP.Author = "" +SWEP.Contact = "" +SWEP.Purpose = "" +SWEP.Instructions = "" + +SWEP.ViewModelFOV = 62 +SWEP.ViewModelFlip = false +SWEP.ViewModel = "models/weapons/v_pistol.mdl" +SWEP.WorldModel = "models/weapons/w_357.mdl" + +SWEP.Spawnable = false +SWEP.AdminOnly = false + +SWEP.Primary.ClipSize = 8 -- Size of a clip +SWEP.Primary.DefaultClip = 32 -- Default number of bullets in a clip +SWEP.Primary.Automatic = false -- Automatic/Semi Auto +SWEP.Primary.Ammo = "Pistol" + +SWEP.Secondary.ClipSize = 8 -- Size of a clip +SWEP.Secondary.DefaultClip = 32 -- Default number of bullets in a clip +SWEP.Secondary.Automatic = false -- Automatic/Semi Auto +SWEP.Secondary.Ammo = "Pistol" + +--[[--------------------------------------------------------- + Name: SWEP:Initialize() + Desc: Called when the weapon is first loaded +-----------------------------------------------------------]] +function SWEP:Initialize() + + self:SetHoldType( "pistol" ) + +end + +--[[--------------------------------------------------------- + Name: SWEP:PrimaryAttack() + Desc: +attack1 has been pressed +-----------------------------------------------------------]] +function SWEP:PrimaryAttack() + + -- Make sure we can shoot first + if ( !self:CanPrimaryAttack() ) then return end + + -- Play shoot sound + self:EmitSound( "Weapon_AR2.Single" ) + + -- Shoot 9 bullets, 150 damage, 0.75 aimcone + self:ShootBullet( 150, 1, 0.01, self.Primary.Ammo ) + + -- Remove 1 bullet from our clip + self:TakePrimaryAmmo( 1 ) + + -- Punch the player's view + if ( !self.Owner:IsNPC() ) then self.Owner:ViewPunch( Angle( -1, 0, 0 ) ) end + +end + +--[[--------------------------------------------------------- + Name: SWEP:SecondaryAttack() + Desc: +attack2 has been pressed +-----------------------------------------------------------]] +function SWEP:SecondaryAttack() + + -- Make sure we can shoot first + if ( !self:CanSecondaryAttack() ) then return end + + -- Play shoot sound + self:EmitSound("Weapon_Shotgun.Single") + + -- Shoot 9 bullets, 150 damage, 0.75 aimcone + self:ShootBullet( 150, 9, 0.2, self.Secondary.Ammo ) + + -- Remove 1 bullet from our clip + self:TakeSecondaryAmmo( 1 ) + + -- Punch the player's view + if ( !self.Owner:IsNPC() ) then self.Owner:ViewPunch( Angle( -10, 0, 0 ) ) end + +end + +--[[--------------------------------------------------------- + Name: SWEP:Reload() + Desc: Reload is being pressed +-----------------------------------------------------------]] +function SWEP:Reload() + self:DefaultReload( ACT_VM_RELOAD ) +end + +--[[--------------------------------------------------------- + Name: SWEP:Think() + Desc: Called every frame +-----------------------------------------------------------]] +function SWEP:Think() +end + +--[[--------------------------------------------------------- + Name: SWEP:Holster( weapon_to_swap_to ) + Desc: Weapon wants to holster + RetV: Return true to allow the weapon to holster +-----------------------------------------------------------]] +function SWEP:Holster( wep ) + return true +end + +--[[--------------------------------------------------------- + Name: SWEP:Deploy() + Desc: Whip it out +-----------------------------------------------------------]] +function SWEP:Deploy() + return true +end + +--[[--------------------------------------------------------- + Name: SWEP:ShootEffects() + Desc: A convenience function to create shoot effects +-----------------------------------------------------------]] +function SWEP:ShootEffects() + + self:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) -- View model animation + self.Owner:MuzzleFlash() -- Crappy muzzle light + self.Owner:SetAnimation( PLAYER_ATTACK1 ) -- 3rd Person Animation + +end + +--[[--------------------------------------------------------- + Name: SWEP:ShootBullet() + Desc: A convenience function to shoot bullets +-----------------------------------------------------------]] +function SWEP:ShootBullet( damage, num_bullets, aimcone, ammo_type, force, tracer ) + + local bullet = {} + bullet.Num = num_bullets + bullet.Src = self.Owner:GetShootPos() -- Source + bullet.Dir = self.Owner:GetAimVector() -- Dir of bullet + bullet.Spread = Vector( aimcone, aimcone, 0 ) -- Aim Cone + bullet.Tracer = tracer || 5 -- Show a tracer on every x bullets + bullet.Force = force || 1 -- Amount of force to give to phys objects + bullet.Damage = damage + bullet.AmmoType = ammo_type || self.Primary.Ammo + + self.Owner:FireBullets( bullet ) + + self:ShootEffects() + +end + +--[[--------------------------------------------------------- + Name: SWEP:TakePrimaryAmmo() + Desc: A convenience function to remove ammo +-----------------------------------------------------------]] +function SWEP:TakePrimaryAmmo( num ) + + -- Doesn't use clips + if ( self:Clip1() <= 0 ) then + + if ( self:Ammo1() <= 0 ) then return end + + self.Owner:RemoveAmmo( num, self:GetPrimaryAmmoType() ) + + return end + + self:SetClip1( self:Clip1() - num ) + +end + +--[[--------------------------------------------------------- + Name: SWEP:TakeSecondaryAmmo() + Desc: A convenience function to remove ammo +-----------------------------------------------------------]] +function SWEP:TakeSecondaryAmmo( num ) + + -- Doesn't use clips + if ( self:Clip2() <= 0 ) then + + if ( self:Ammo2() <= 0 ) then return end + + self.Owner:RemoveAmmo( num, self:GetSecondaryAmmoType() ) + + return end + + self:SetClip2( self:Clip2() - num ) + +end + +--[[--------------------------------------------------------- + Name: SWEP:CanPrimaryAttack() + Desc: Helper function for checking for no ammo +-----------------------------------------------------------]] +function SWEP:CanPrimaryAttack() + + if ( self:Clip1() <= 0 ) then + + self:EmitSound( "Weapon_Pistol.Empty" ) + self:SetNextPrimaryFire( CurTime() + 0.2 ) + self:Reload() + return false + + end + + return true + +end + +--[[--------------------------------------------------------- + Name: SWEP:CanSecondaryAttack() + Desc: Helper function for checking for no ammo +-----------------------------------------------------------]] +function SWEP:CanSecondaryAttack() + + if ( self:Clip2() <= 0 ) then + + self:EmitSound( "Weapon_Pistol.Empty" ) + self:SetNextSecondaryFire( CurTime() + 0.2 ) + return false + + end + + return true + +end + +--[[--------------------------------------------------------- + Name: OnRemove + Desc: Called just before entity is deleted +-----------------------------------------------------------]] +function SWEP:OnRemove() +end + +--[[--------------------------------------------------------- + Name: OwnerChanged + Desc: When weapon is dropped or picked up by a new player +-----------------------------------------------------------]] +function SWEP:OwnerChanged() +end + +--[[--------------------------------------------------------- + Name: Ammo1 + Desc: Returns how much of ammo1 the player has +-----------------------------------------------------------]] +function SWEP:Ammo1() + return self.Owner:GetAmmoCount( self:GetPrimaryAmmoType() ) +end + +--[[--------------------------------------------------------- + Name: Ammo2 + Desc: Returns how much of ammo2 the player has +-----------------------------------------------------------]] +function SWEP:Ammo2() + return self.Owner:GetAmmoCount( self:GetSecondaryAmmoType() ) +end + +--[[--------------------------------------------------------- + Name: SetDeploySpeed + Desc: Sets the weapon deploy speed. + This value needs to match on client and server. +-----------------------------------------------------------]] +function SWEP:SetDeploySpeed( speed ) + self.m_WeaponDeploySpeed = tonumber( speed ) +end + +--[[--------------------------------------------------------- + Name: DoImpactEffect + Desc: Callback so the weapon can override the impact effects it makes + return true to not do the default thing - which is to call UTIL_ImpactTrace in c++ +-----------------------------------------------------------]] +function SWEP:DoImpactEffect( tr, nDamageType ) + + return false + +end diff --git a/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_ak47/shared.lua b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_ak47/shared.lua new file mode 100644 index 0000000..0d03ef7 --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_ak47/shared.lua @@ -0,0 +1,54 @@ +if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end +--------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Base = "weapon_vj_base" +SWEP.PrintName = "AK47" +SWEP.Author = "DrVrej" +SWEP.Contact = "http://steamcommunity.com/groups/vrejgaming" +SWEP.Purpose = "This weapon is made for Players and NPCs" +SWEP.Instructions = "Controls are like a regular weapon." +SWEP.Category = "VJ Base" + -- Client Settings --------------------------------------------------------------------------------------------------------------------------------------------- +if CLIENT then +SWEP.Slot = 1 -- Which weapon slot you want your SWEP to be in? (1 2 3 4 5 6) +SWEP.SlotPos = 1 -- Which part of that slot do you want the SWEP to be in? (1 2 3 4 5 6) +SWEP.SwayScale = 2 -- Default is 1, The scale of the viewmodel sway +end + -- NPC Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.NPC_NextPrimaryFire = 0.12 -- Next time it can use primary fire +SWEP.NPC_CustomSpread = 0.8 -- This is added on top of the custom spread that's set inside the SNPC! | Starting from 1: Closer to 0 = better accuracy, Farther than 1 = worse accuracy + -- Main Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HoldType = "ar2" +SWEP.ViewModelFOV = 70 -- Player FOV for the view model +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + -- Primary Fire --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Primary.AllowFireInWater = true -- If true, you will be able to use primary fire in water +SWEP.Primary.Damage = 16 -- Damage +SWEP.Primary.PlayerDamage = 16 -- Only applies for players | "Same" = Same as self.Primary.Damage, "Double" = Double the self.Primary.Damage OR put a number to be different from self.Primary.Damage +SWEP.Primary.Force = 5 -- Force applied on the object the bullet hits +SWEP.Primary.ClipSize = 30 -- Max amount of bullets per clip +SWEP.Primary.Recoil = 0.3 -- How much recoil does the player get? +SWEP.Primary.Cone = 5 -- How accurate is the bullet? (Players) +SWEP.Primary.Delay = 0.01 -- Time until it can shoot again +SWEP.Primary.Automatic = true -- Is it automatic? +SWEP.Primary.Ammo = "AR2" -- Ammo type +SWEP.Primary.Sound = {"viper/weapons/akilo47/weap_akilo47_fire_plr_01.ogg", "viper/weapons/akilo47/weap_akilo47_fire_plr_02.ogg", "viper/weapons/akilo47/weap_akilo47_fire_plr_03.ogg", "viper/weapons/akilo47/weap_akilo47_fire_plr_04.ogg", "viper/weapons/akilo47/weap_akilo47_fire_plr_05.ogg", "viper/weapons/akilo47/weap_akilo47_fire_plr_06.ogg"} +SWEP.Primary.DistantSound = {"viper/weapons/akilo47/weap_akilo47_fire_plr_01.ogg", "viper/weapons/akilo47/weap_akilo47_fire_plr_02.ogg", "viper/weapons/akilo47/weap_akilo47_fire_plr_03.ogg", "viper/weapons/akilo47/weap_akilo47_fire_plr_04.ogg", "viper/weapons/akilo47/weap_akilo47_fire_plr_05.ogg", "viper/weapons/akilo47/weap_akilo47_fire_plr_06.ogg"} +SWEP.PrimaryEffects_MuzzleAttachment = 1 +SWEP.PrimaryEffects_ShellAttachment = "ejectbrass" +SWEP.PrimaryEffects_ShellType = "VJ_Weapon_PistolShell1" +SWEP.MadeForNPCsOnly = true -- Is this weapon meant to be for NPCs only? + -- Deployment Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.DelayOnDeploy = 0.4 -- Time until it can shoot again after deploying the weapon +SWEP.AnimTbl_Deploy = {ACT_VM_IDLE_TO_LOWERED} + -- Reload Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HasReloadSound = true -- Does it have a reload sound? Remember even if this is set to false, the animation sound will still play! +SWEP.ReloadSound = "vj_weapons/glock_17/reload.wav" +SWEP.Reload_TimeUntilAmmoIsSet = 1.5 -- Time until ammo is set to the weapon +SWEP.Reload_TimeUntilFinished = 2 -- How much time until the player can play idle animation, shoot, etc. + +SWEP.WorldModel_UseCustomPosition = true -- Should the gun use custom position? This can be used to fix guns that are in the crotch +SWEP.WorldModel_CustomPositionAngle = Vector(-8, -5, 180) +SWEP.WorldModel_CustomPositionOrigin = Vector(0, 4, 1) + +SWEP.WorldModel = "models/tdmg/invasion/w_akm.mdl" \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m14/shared.lua b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m14/shared.lua new file mode 100644 index 0000000..5ce03e7 --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m14/shared.lua @@ -0,0 +1,54 @@ +if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end +--------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Base = "weapon_vj_base" +SWEP.PrintName = "M14" +SWEP.Author = "DrVrej" +SWEP.Contact = "http://steamcommunity.com/groups/vrejgaming" +SWEP.Purpose = "This weapon is made for Players and NPCs" +SWEP.Instructions = "Controls are like a regular weapon." +SWEP.Category = "VJ Base" + -- Client Settings --------------------------------------------------------------------------------------------------------------------------------------------- +if CLIENT then +SWEP.Slot = 1 -- Which weapon slot you want your SWEP to be in? (1 2 3 4 5 6) +SWEP.SlotPos = 1 -- Which part of that slot do you want the SWEP to be in? (1 2 3 4 5 6) +SWEP.SwayScale = 2 -- Default is 1, The scale of the viewmodel sway +end + -- NPC Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.NPC_NextPrimaryFire = 0.3 -- Next time it can use primary fire +SWEP.NPC_CustomSpread = 0.3 -- This is added on top of the custom spread that's set inside the SNPC! | Starting from 1: Closer to 0 = better accuracy, Farther than 1 = worse accuracy + -- Main Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HoldType = "ar2" +SWEP.ViewModelFOV = 70 -- Player FOV for the view model +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + -- Primary Fire --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Primary.AllowFireInWater = true -- If true, you will be able to use primary fire in water +SWEP.Primary.Damage = 25 -- Damage +SWEP.Primary.PlayerDamage = 25 -- Only applies for players | "Same" = Same as self.Primary.Damage, "Double" = Double the self.Primary.Damage OR put a number to be different from self.Primary.Damage +SWEP.Primary.Force = 5 -- Force applied on the object the bullet hits +SWEP.Primary.ClipSize = 30 -- Max amount of bullets per clip +SWEP.Primary.Recoil = 0.3 -- How much recoil does the player get? +SWEP.Primary.Cone = 5 -- How accurate is the bullet? (Players) +SWEP.Primary.Delay = 0.01 -- Time until it can shoot again +SWEP.Primary.Automatic = true -- Is it automatic? +SWEP.Primary.Ammo = "AR2" -- Ammo type +SWEP.Primary.Sound = {"viper/weapons/mike14/weap_mike14_fire_plr_01.ogg"} +SWEP.Primary.DistantSound = {"viper/weapons/mike14/weap_mike14_fire_plr_01.ogg"} +SWEP.PrimaryEffects_MuzzleAttachment = 1 +SWEP.PrimaryEffects_ShellAttachment = "ejectbrass" +SWEP.PrimaryEffects_ShellType = "VJ_Weapon_PistolShell1" +SWEP.MadeForNPCsOnly = true -- Is this weapon meant to be for NPCs only? + -- Deployment Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.DelayOnDeploy = 0.4 -- Time until it can shoot again after deploying the weapon +SWEP.AnimTbl_Deploy = {ACT_VM_IDLE_TO_LOWERED} + -- Reload Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HasReloadSound = true -- Does it have a reload sound? Remember even if this is set to false, the animation sound will still play! +SWEP.ReloadSound = "vj_weapons/glock_17/reload.wav" +SWEP.Reload_TimeUntilAmmoIsSet = 1.5 -- Time until ammo is set to the weapon +SWEP.Reload_TimeUntilFinished = 2 -- How much time until the player can play idle animation, shoot, etc. + +SWEP.WorldModel_UseCustomPosition = true -- Should the gun use custom position? This can be used to fix guns that are in the crotch +SWEP.WorldModel_CustomPositionAngle = Vector(-8, -5, 180) +SWEP.WorldModel_CustomPositionOrigin = Vector(0, 2, 0) + +SWEP.WorldModel = "models/tdmg/invasion/w_mini14.mdl" \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m24/shared.lua b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m24/shared.lua new file mode 100644 index 0000000..7eb0b07 --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m24/shared.lua @@ -0,0 +1,57 @@ +if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end +--------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Base = "weapon_vj_base" +SWEP.PrintName = "M24" +SWEP.Author = "DrVrej" +SWEP.Contact = "http://steamcommunity.com/groups/vrejgaming" +SWEP.Purpose = "This weapon is made for Players and NPCs" +SWEP.Instructions = "Controls are like a regular weapon." +SWEP.Category = "VJ Base" + -- Client Settings --------------------------------------------------------------------------------------------------------------------------------------------- +if CLIENT then +SWEP.Slot = 1 -- Which weapon slot you want your SWEP to be in? (1 2 3 4 5 6) +SWEP.SlotPos = 1 -- Which part of that slot do you want the SWEP to be in? (1 2 3 4 5 6) +SWEP.SwayScale = 2 -- Default is 1, The scale of the viewmodel sway +end + -- NPC Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.NPC_NextPrimaryFire = 1.5 -- Next time it can use primary fire +SWEP.NPC_CustomSpread = 0.1 -- This is added on top of the custom spread that's set inside the SNPC! | Starting from 1: Closer to 0 = better accuracy, Farther than 1 = worse accuracy + -- Main Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HoldType = "rpg" +SWEP.ViewModelFOV = 70 -- Player FOV for the view model +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + -- Primary Fire --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Primary.AllowFireInWater = true -- If true, you will be able to use primary fire in water +SWEP.Primary.Damage = 50 -- Damage +SWEP.Primary.PlayerDamage = 50 -- Only applies for players | "Same" = Same as self.Primary.Damage, "Double" = Double the self.Primary.Damage OR put a number to be different from self.Primary.Damage +SWEP.Primary.Force = 5 -- Force applied on the object the bullet hits +SWEP.Primary.ClipSize = 5 -- Max amount of bullets per clip +SWEP.Primary.Recoil = 0.3 -- How much recoil does the player get? +SWEP.Primary.Cone = 5 -- How accurate is the bullet? (Players) +SWEP.Primary.Delay = 0.01 -- Time until it can shoot again +SWEP.Primary.Automatic = true -- Is it automatic? +SWEP.Primary.Ammo = "AR2" -- Ammo type +SWEP.Primary.Sound = {"weapons/romeo700/weap_romeo700_fire_bang_plr_01.ogg"} +SWEP.Primary.DistantSound = {"weapons/romeo700/weap_romeo700_fire_bang_plr_01.ogg"} +SWEP.PrimaryEffects_MuzzleAttachment = 1 +SWEP.PrimaryEffects_ShellAttachment = "ejectbrass" +SWEP.PrimaryEffects_ShellType = "VJ_Weapon_PistolShell1" +SWEP.MadeForNPCsOnly = true -- Is this weapon meant to be for NPCs only? + -- Deployment Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.DelayOnDeploy = 0.4 -- Time until it can shoot again after deploying the weapon +SWEP.AnimTbl_Deploy = {ACT_VM_IDLE_TO_LOWERED} + -- Reload Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HasReloadSound = true -- Does it have a reload sound? Remember even if this is set to false, the animation sound will still play! +SWEP.ReloadSound = "vj_weapons/reload_boltaction.wav" +SWEP.Reload_TimeUntilAmmoIsSet = 1.5 -- Time until ammo is set to the weapon +SWEP.Reload_TimeUntilFinished = 2 -- How much time until the player can play idle animation, shoot, etc. + +SWEP.NPC_ExtraFireSound = {"vj_weapons/perform_boltaction.wav"} -- Plays an extra sound after it fires (Example: Bolt action sound) +SWEP.NPC_ExtraFireSoundTime = 0.4 -- How much time until it plays the sound (After Firing)? + +SWEP.WorldModel_UseCustomPosition = true -- Should the gun use custom position? This can be used to fix guns that are in the crotch +SWEP.WorldModel_CustomPositionAngle = Vector(-8, -5, 180) +SWEP.WorldModel_CustomPositionOrigin = Vector(0, 4, 1) + +SWEP.WorldModel = "models/tdmg/invasion/w_m40.mdl" \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m249/shared.lua b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m249/shared.lua new file mode 100644 index 0000000..88df603 --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m249/shared.lua @@ -0,0 +1,54 @@ +if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end +--------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Base = "weapon_vj_base" +SWEP.PrintName = "M249" +SWEP.Author = "DrVrej" +SWEP.Contact = "http://steamcommunity.com/groups/vrejgaming" +SWEP.Purpose = "This weapon is made for Players and NPCs" +SWEP.Instructions = "Controls are like a regular weapon." +SWEP.Category = "VJ Base" + -- Client Settings --------------------------------------------------------------------------------------------------------------------------------------------- +if CLIENT then +SWEP.Slot = 1 -- Which weapon slot you want your SWEP to be in? (1 2 3 4 5 6) +SWEP.SlotPos = 1 -- Which part of that slot do you want the SWEP to be in? (1 2 3 4 5 6) +SWEP.SwayScale = 2 -- Default is 1, The scale of the viewmodel sway +end + -- NPC Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.NPC_NextPrimaryFire = 0.1 -- Next time it can use primary fire +SWEP.NPC_CustomSpread = 1 -- This is added on top of the custom spread that's set inside the SNPC! | Starting from 1: Closer to 0 = better accuracy, Farther than 1 = worse accuracy + -- Main Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HoldType = "ar2" +SWEP.ViewModelFOV = 70 -- Player FOV for the view model +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + -- Primary Fire --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Primary.AllowFireInWater = true -- If true, you will be able to use primary fire in water +SWEP.Primary.Damage = 10 -- Damage +SWEP.Primary.PlayerDamage = 10 -- Only applies for players | "Same" = Same as self.Primary.Damage, "Double" = Double the self.Primary.Damage OR put a number to be different from self.Primary.Damage +SWEP.Primary.Force = 5 -- Force applied on the object the bullet hits +SWEP.Primary.ClipSize = 100 -- Max amount of bullets per clip +SWEP.Primary.Recoil = 0.3 -- How much recoil does the player get? +SWEP.Primary.Cone = 5 -- How accurate is the bullet? (Players) +SWEP.Primary.Delay = 0.01 -- Time until it can shoot again +SWEP.Primary.Automatic = true -- Is it automatic? +SWEP.Primary.Ammo = "AR2" -- Ammo type +SWEP.Primary.Sound = {"viper/weapons/scharlie/weap_scharlie_fire_plr_02.ogg"} +SWEP.Primary.DistantSound = {"viper/weapons/scharlie/weap_scharlie_fire_plr_02.ogg"} +SWEP.PrimaryEffects_MuzzleAttachment = 1 +SWEP.PrimaryEffects_ShellAttachment = "ejectbrass" +SWEP.PrimaryEffects_ShellType = "VJ_Weapon_PistolShell1" +SWEP.MadeForNPCsOnly = true -- Is this weapon meant to be for NPCs only? + -- Deployment Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.DelayOnDeploy = 0.4 -- Time until it can shoot again after deploying the weapon +SWEP.AnimTbl_Deploy = {ACT_VM_IDLE_TO_LOWERED} + -- Reload Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HasReloadSound = true -- Does it have a reload sound? Remember even if this is set to false, the animation sound will still play! +SWEP.ReloadSound = "vj_weapons/glock_17/reload.wav" +SWEP.Reload_TimeUntilAmmoIsSet = 1.5 -- Time until ammo is set to the weapon +SWEP.Reload_TimeUntilFinished = 2 -- How much time until the player can play idle animation, shoot, etc. + +SWEP.WorldModel_UseCustomPosition = true -- Should the gun use custom position? This can be used to fix guns that are in the crotch +SWEP.WorldModel_CustomPositionAngle = Vector(-8, -5, 180) +SWEP.WorldModel_CustomPositionOrigin = Vector(0, 4, 1) + +SWEP.WorldModel = "models/tdmg/invasion/w_m249.mdl" \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m4a1/shared.lua b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m4a1/shared.lua new file mode 100644 index 0000000..c744f9b --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m4a1/shared.lua @@ -0,0 +1,54 @@ +if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end +--------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Base = "weapon_vj_base" +SWEP.PrintName = "M4A1" +SWEP.Author = "DrVrej" +SWEP.Contact = "http://steamcommunity.com/groups/vrejgaming" +SWEP.Purpose = "This weapon is made for Players and NPCs" +SWEP.Instructions = "Controls are like a regular weapon." +SWEP.Category = "VJ Base" + -- Client Settings --------------------------------------------------------------------------------------------------------------------------------------------- +if CLIENT then +SWEP.Slot = 1 -- Which weapon slot you want your SWEP to be in? (1 2 3 4 5 6) +SWEP.SlotPos = 1 -- Which part of that slot do you want the SWEP to be in? (1 2 3 4 5 6) +SWEP.SwayScale = 2 -- Default is 1, The scale of the viewmodel sway +end + -- NPC Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.NPC_NextPrimaryFire = 0.12 -- Next time it can use primary fire +SWEP.NPC_CustomSpread = 0.8 -- This is added on top of the custom spread that's set inside the SNPC! | Starting from 1: Closer to 0 = better accuracy, Farther than 1 = worse accuracy + -- Main Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HoldType = "ar2" +SWEP.ViewModelFOV = 70 -- Player FOV for the view model +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + -- Primary Fire --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Primary.AllowFireInWater = true -- If true, you will be able to use primary fire in water +SWEP.Primary.Damage = 16 -- Damage +SWEP.Primary.PlayerDamage = 16 -- Only applies for players | "Same" = Same as self.Primary.Damage, "Double" = Double the self.Primary.Damage OR put a number to be different from self.Primary.Damage +SWEP.Primary.Force = 5 -- Force applied on the object the bullet hits +SWEP.Primary.ClipSize = 30 -- Max amount of bullets per clip +SWEP.Primary.Recoil = 0.3 -- How much recoil does the player get? +SWEP.Primary.Cone = 5 -- How accurate is the bullet? (Players) +SWEP.Primary.Delay = 0.01 -- Time until it can shoot again +SWEP.Primary.Automatic = true -- Is it automatic? +SWEP.Primary.Ammo = "AR2" -- Ammo type +SWEP.Primary.Sound = {"viper/weapons/mike4/weap_mike4_fire_plr_01.ogg", "viper/weapons/mike4/weap_mike4_fire_plr_02.ogg", "viper/weapons/mike4/weap_mike4_fire_plr_03.ogg", "viper/weapons/mike4/weap_mike4_fire_plr_04.ogg", "viper/weapons/mike4/weap_mike4_fire_plr_05.ogg", "viper/weapons/mike4/weap_mike4_fire_plr_06.ogg"} +SWEP.Primary.DistantSound = {"viper/weapons/mike4/weap_mike4_fire_plr_01.ogg", "viper/weapons/mike4/weap_mike4_fire_plr_02.ogg", "viper/weapons/mike4/weap_mike4_fire_plr_03.ogg", "viper/weapons/mike4/weap_mike4_fire_plr_04.ogg", "viper/weapons/mike4/weap_mike4_fire_plr_05.ogg", "viper/weapons/mike4/weap_mike4_fire_plr_06.ogg"} +SWEP.PrimaryEffects_MuzzleAttachment = 1 +SWEP.PrimaryEffects_ShellAttachment = "ejectbrass" +SWEP.PrimaryEffects_ShellType = "VJ_Weapon_PistolShell1" +SWEP.MadeForNPCsOnly = true -- Is this weapon meant to be for NPCs only? + -- Deployment Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.DelayOnDeploy = 0.4 -- Time until it can shoot again after deploying the weapon +SWEP.AnimTbl_Deploy = {ACT_VM_IDLE_TO_LOWERED} + -- Reload Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HasReloadSound = true -- Does it have a reload sound? Remember even if this is set to false, the animation sound will still play! +SWEP.ReloadSound = "vj_weapons/glock_17/reload.wav" +SWEP.Reload_TimeUntilAmmoIsSet = 1.5 -- Time until ammo is set to the weapon +SWEP.Reload_TimeUntilFinished = 2 -- How much time until the player can play idle animation, shoot, etc. + +SWEP.WorldModel_UseCustomPosition = true -- Should the gun use custom position? This can be used to fix guns that are in the crotch +SWEP.WorldModel_CustomPositionAngle = Vector(-8, -5, 180) +SWEP.WorldModel_CustomPositionOrigin = Vector(0, 4, 1) + +SWEP.WorldModel = "models/tdmg/invasion/w_m16.mdl" \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m9/shared.lua b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m9/shared.lua new file mode 100644 index 0000000..f6f9fde --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_m9/shared.lua @@ -0,0 +1,54 @@ +if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end +--------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Base = "weapon_vj_base" +SWEP.PrintName = "M9" +SWEP.Author = "DrVrej" +SWEP.Contact = "http://steamcommunity.com/groups/vrejgaming" +SWEP.Purpose = "This weapon is made for Players and NPCs" +SWEP.Instructions = "Controls are like a regular weapon." +SWEP.Category = "VJ Base" + -- Client Settings --------------------------------------------------------------------------------------------------------------------------------------------- +if CLIENT then +SWEP.Slot = 1 -- Which weapon slot you want your SWEP to be in? (1 2 3 4 5 6) +SWEP.SlotPos = 1 -- Which part of that slot do you want the SWEP to be in? (1 2 3 4 5 6) +SWEP.SwayScale = 2 -- Default is 1, The scale of the viewmodel sway +end + -- NPC Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.NPC_NextPrimaryFire = 0.18 -- Next time it can use primary fire +SWEP.NPC_CustomSpread = 0.5 -- This is added on top of the custom spread that's set inside the SNPC! | Starting from 1: Closer to 0 = better accuracy, Farther than 1 = worse accuracy + -- Main Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HoldType = "revolver" +SWEP.ViewModelFOV = 70 -- Player FOV for the view model +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + -- Primary Fire --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Primary.AllowFireInWater = true -- If true, you will be able to use primary fire in water +SWEP.Primary.Damage = 9 -- Damage +SWEP.Primary.PlayerDamage = 9 -- Only applies for players | "Same" = Same as self.Primary.Damage, "Double" = Double the self.Primary.Damage OR put a number to be different from self.Primary.Damage +SWEP.Primary.Force = 5 -- Force applied on the object the bullet hits +SWEP.Primary.ClipSize = 15 -- Max amount of bullets per clip +SWEP.Primary.Recoil = 0.3 -- How much recoil does the player get? +SWEP.Primary.Cone = 5 -- How accurate is the bullet? (Players) +SWEP.Primary.Delay = 0.01 -- Time until it can shoot again +SWEP.Primary.Automatic = true -- Is it automatic? +SWEP.Primary.Ammo = "AR2" -- Ammo type +SWEP.Primary.Sound = {"weapons/mike9/weap_mike9a3_fire_plr_01.ogg"} +SWEP.Primary.DistantSound = {"weapons/mike9/weap_mike9a3_fire_plr_01.ogg"} +SWEP.PrimaryEffects_MuzzleAttachment = 1 +SWEP.PrimaryEffects_ShellAttachment = "ejectbrass" +SWEP.PrimaryEffects_ShellType = "VJ_Weapon_PistolShell1" +SWEP.MadeForNPCsOnly = true -- Is this weapon meant to be for NPCs only? + -- Deployment Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.DelayOnDeploy = 0.4 -- Time until it can shoot again after deploying the weapon +SWEP.AnimTbl_Deploy = {ACT_VM_IDLE_TO_LOWERED} + -- Reload Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HasReloadSound = true -- Does it have a reload sound? Remember even if this is set to false, the animation sound will still play! +SWEP.ReloadSound = "vj_weapons/glock_17/reload.wav" +SWEP.Reload_TimeUntilAmmoIsSet = 1.5 -- Time until ammo is set to the weapon +SWEP.Reload_TimeUntilFinished = 2 -- How much time until the player can play idle animation, shoot, etc. + +SWEP.WorldModel_UseCustomPosition = true -- Should the gun use custom position? This can be used to fix guns that are in the crotch +SWEP.WorldModel_CustomPositionAngle = Vector(-8, -5, 180) +SWEP.WorldModel_CustomPositionOrigin = Vector(0, 0, -1.5) + +SWEP.WorldModel = "models/tdmg/wep/m18.mdl" \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_makarov/shared.lua b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_makarov/shared.lua new file mode 100644 index 0000000..b870046 --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_makarov/shared.lua @@ -0,0 +1,54 @@ +if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end +--------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Base = "weapon_vj_base" +SWEP.PrintName = "Makarov" +SWEP.Author = "DrVrej" +SWEP.Contact = "http://steamcommunity.com/groups/vrejgaming" +SWEP.Purpose = "This weapon is made for Players and NPCs" +SWEP.Instructions = "Controls are like a regular weapon." +SWEP.Category = "VJ Base" + -- Client Settings --------------------------------------------------------------------------------------------------------------------------------------------- +if CLIENT then +SWEP.Slot = 1 -- Which weapon slot you want your SWEP to be in? (1 2 3 4 5 6) +SWEP.SlotPos = 1 -- Which part of that slot do you want the SWEP to be in? (1 2 3 4 5 6) +SWEP.SwayScale = 2 -- Default is 1, The scale of the viewmodel sway +end + -- NPC Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.NPC_NextPrimaryFire = 0.2 -- Next time it can use primary fire +SWEP.NPC_CustomSpread = 0.5 -- This is added on top of the custom spread that's set inside the SNPC! | Starting from 1: Closer to 0 = better accuracy, Farther than 1 = worse accuracy + -- Main Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HoldType = "revolver" +SWEP.ViewModelFOV = 70 -- Player FOV for the view model +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + -- Primary Fire --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Primary.AllowFireInWater = true -- If true, you will be able to use primary fire in water +SWEP.Primary.Damage = 14 -- Damage +SWEP.Primary.PlayerDamage = 14 -- Only applies for players | "Same" = Same as self.Primary.Damage, "Double" = Double the self.Primary.Damage OR put a number to be different from self.Primary.Damage +SWEP.Primary.Force = 5 -- Force applied on the object the bullet hits +SWEP.Primary.ClipSize = 8 -- Max amount of bullets per clip +SWEP.Primary.Recoil = 0.3 -- How much recoil does the player get? +SWEP.Primary.Cone = 5 -- How accurate is the bullet? (Players) +SWEP.Primary.Delay = 0.01 -- Time until it can shoot again +SWEP.Primary.Automatic = true -- Is it automatic? +SWEP.Primary.Ammo = "AR2" -- Ammo type +SWEP.Primary.Sound = {"weapons/mike/weap_mike_fire_plr.ogg"} +SWEP.Primary.DistantSound = {"weapons/mike/weap_mike_fire_plr.ogg"} +SWEP.PrimaryEffects_MuzzleAttachment = 1 +SWEP.PrimaryEffects_ShellAttachment = "ejectbrass" +SWEP.PrimaryEffects_ShellType = "VJ_Weapon_PistolShell1" +SWEP.MadeForNPCsOnly = true -- Is this weapon meant to be for NPCs only? + -- Deployment Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.DelayOnDeploy = 0.4 -- Time until it can shoot again after deploying the weapon +SWEP.AnimTbl_Deploy = {ACT_VM_IDLE_TO_LOWERED} + -- Reload Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HasReloadSound = true -- Does it have a reload sound? Remember even if this is set to false, the animation sound will still play! +SWEP.ReloadSound = "vj_weapons/glock_17/reload.wav" +SWEP.Reload_TimeUntilAmmoIsSet = 1.5 -- Time until ammo is set to the weapon +SWEP.Reload_TimeUntilFinished = 2 -- How much time until the player can play idle animation, shoot, etc. + +SWEP.WorldModel_UseCustomPosition = true -- Should the gun use custom position? This can be used to fix guns that are in the crotch +SWEP.WorldModel_CustomPositionAngle = Vector(-8, -5, 180) +SWEP.WorldModel_CustomPositionOrigin = Vector(0, 4, 1) + +SWEP.WorldModel = "models/tdmg/invasion/w_makarov.mdl" \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_r870/shared.lua b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_r870/shared.lua new file mode 100644 index 0000000..7fbf73f --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_r870/shared.lua @@ -0,0 +1,58 @@ +if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end +--------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Base = "weapon_vj_base" +SWEP.PrintName = "R870" +SWEP.Author = "DrVrej" +SWEP.Contact = "http://steamcommunity.com/groups/vrejgaming" +SWEP.Purpose = "This weapon is made for Players and NPCs" +SWEP.Instructions = "Controls are like a regular weapon." +SWEP.Category = "VJ Base" + -- Client Settings --------------------------------------------------------------------------------------------------------------------------------------------- +if CLIENT then +SWEP.Slot = 1 -- Which weapon slot you want your SWEP to be in? (1 2 3 4 5 6) +SWEP.SlotPos = 1 -- Which part of that slot do you want the SWEP to be in? (1 2 3 4 5 6) +SWEP.SwayScale = 2 -- Default is 1, The scale of the viewmodel sway +end + -- NPC Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.NPC_NextPrimaryFire = 1 -- Next time it can use primary fire +SWEP.NPC_CustomSpread = 2 -- This is added on top of the custom spread that's set inside the SNPC! | Starting from 1: Closer to 0 = better accuracy, Farther than 1 = worse accuracy + -- Main Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HoldType = "ar2" +SWEP.ViewModelFOV = 70 -- Player FOV for the view model +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + -- Primary Fire --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Primary.AllowFireInWater = true -- If true, you will be able to use primary fire in water +SWEP.Primary.Damage = 18 -- Damage +SWEP.Primary.PlayerDamage = 18 -- Only applies for players | "Same" = Same as self.Primary.Damage, "Double" = Double the self.Primary.Damage OR put a number to be different from self.Primary.Damage +SWEP.Primary.Force = 5 -- Force applied on the object the bullet hits +SWEP.Primary.ClipSize = 6 -- Max amount of bullets per clip +SWEP.Primary.Recoil = 0.3 -- How much recoil does the player get? +SWEP.Primary.Cone = 5 -- How accurate is the bullet? (Players) +SWEP.Primary.Delay = 0.01 -- Time until it can shoot again +SWEP.Primary.Automatic = true -- Is it automatic? +SWEP.Primary.NumberOfShots = 6 +SWEP.Primary.Ammo = "AR2" -- Ammo type +SWEP.Primary.Sound = {"weapons/romeo870/weap_romeo870_fire_plr_01.ogg"} +SWEP.Primary.DistantSound = {"weapons/romeo870/weap_romeo870_fire_plr_01.ogg"} +SWEP.PrimaryEffects_MuzzleAttachment = 1 +SWEP.PrimaryEffects_ShellAttachment = "ejectbrass" +SWEP.PrimaryEffects_ShellType = "VJ_Weapon_PistolShell1" +SWEP.MadeForNPCsOnly = true -- Is this weapon meant to be for NPCs only? + -- Deployment Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.DelayOnDeploy = 0.4 -- Time until it can shoot again after deploying the weapon +SWEP.AnimTbl_Deploy = {ACT_VM_IDLE_TO_LOWERED} + -- Reload Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HasReloadSound = true -- Does it have a reload sound? Remember even if this is set to false, the animation sound will still play! +SWEP.ReloadSound = "vj_weapons/glock_17/reload.wav" +SWEP.Reload_TimeUntilAmmoIsSet = 1.5 -- Time until ammo is set to the weapon +SWEP.Reload_TimeUntilFinished = 2 -- How much time until the player can play idle animation, shoot, etc. + +SWEP.NPC_ExtraFireSound = {"vj_weapons/perform_shotgunpump.wav"} -- Plays an extra sound after it fires (Example: Bolt action sound) +SWEP.NPC_FiringDistanceScale = 0.5 -- Changes how far the NPC can fire | 1 = No change, x < 1 = closer, x > 1 = farther + +SWEP.WorldModel_UseCustomPosition = true -- Should the gun use custom position? This can be used to fix guns that are in the crotch +SWEP.WorldModel_CustomPositionAngle = Vector(-8, -5, 180) +SWEP.WorldModel_CustomPositionOrigin = Vector(0, 4, 1) + +SWEP.WorldModel = "models/tdmg/invasion/w_m590.mdl" \ No newline at end of file diff --git a/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_ump/shared.lua b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_ump/shared.lua new file mode 100644 index 0000000..677f7db --- /dev/null +++ b/gamemodes/cod_custom/entities/weapons/weapon_vj_tdm_ump/shared.lua @@ -0,0 +1,54 @@ +if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end +--------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Base = "weapon_vj_base" +SWEP.PrintName = "UMP-45" +SWEP.Author = "DrVrej" +SWEP.Contact = "http://steamcommunity.com/groups/vrejgaming" +SWEP.Purpose = "This weapon is made for Players and NPCs" +SWEP.Instructions = "Controls are like a regular weapon." +SWEP.Category = "VJ Base" + -- Client Settings --------------------------------------------------------------------------------------------------------------------------------------------- +if CLIENT then +SWEP.Slot = 1 -- Which weapon slot you want your SWEP to be in? (1 2 3 4 5 6) +SWEP.SlotPos = 1 -- Which part of that slot do you want the SWEP to be in? (1 2 3 4 5 6) +SWEP.SwayScale = 2 -- Default is 1, The scale of the viewmodel sway +end + -- NPC Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.NPC_NextPrimaryFire = 0.12 -- Next time it can use primary fire +SWEP.NPC_CustomSpread = 0.8 -- This is added on top of the custom spread that's set inside the SNPC! | Starting from 1: Closer to 0 = better accuracy, Farther than 1 = worse accuracy + -- Main Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HoldType = "smg" +SWEP.ViewModelFOV = 70 -- Player FOV for the view model +SWEP.Spawnable = true +SWEP.AdminSpawnable = false + -- Primary Fire --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.Primary.AllowFireInWater = true -- If true, you will be able to use primary fire in water +SWEP.Primary.Damage = 12 -- Damage +SWEP.Primary.PlayerDamage = 12 -- Only applies for players | "Same" = Same as self.Primary.Damage, "Double" = Double the self.Primary.Damage OR put a number to be different from self.Primary.Damage +SWEP.Primary.Force = 5 -- Force applied on the object the bullet hits +SWEP.Primary.ClipSize = 30 -- Max amount of bullets per clip +SWEP.Primary.Recoil = 0.3 -- How much recoil does the player get? +SWEP.Primary.Cone = 5 -- How accurate is the bullet? (Players) +SWEP.Primary.Delay = 0.01 -- Time until it can shoot again +SWEP.Primary.Automatic = true -- Is it automatic? +SWEP.Primary.Ammo = "AR2" -- Ammo type +SWEP.Primary.Sound = {"weapons/smgolf45/weap_smgolf45_fire_plr_01.ogg"} +SWEP.Primary.DistantSound = {"weapons/smgolf45/weap_smgolf45_fire_plr_01.ogg"} +SWEP.PrimaryEffects_MuzzleAttachment = 1 +SWEP.PrimaryEffects_ShellAttachment = "ejectbrass" +SWEP.PrimaryEffects_ShellType = "VJ_Weapon_PistolShell1" +SWEP.MadeForNPCsOnly = true -- Is this weapon meant to be for NPCs only? + -- Deployment Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.DelayOnDeploy = 0.4 -- Time until it can shoot again after deploying the weapon +SWEP.AnimTbl_Deploy = {ACT_VM_IDLE_TO_LOWERED} + -- Reload Settings --------------------------------------------------------------------------------------------------------------------------------------------- +SWEP.HasReloadSound = true -- Does it have a reload sound? Remember even if this is set to false, the animation sound will still play! +SWEP.ReloadSound = "vj_weapons/glock_17/reload.wav" +SWEP.Reload_TimeUntilAmmoIsSet = 1.5 -- Time until ammo is set to the weapon +SWEP.Reload_TimeUntilFinished = 2 -- How much time until the player can play idle animation, shoot, etc. + +SWEP.WorldModel_UseCustomPosition = true -- Should the gun use custom position? This can be used to fix guns that are in the crotch +SWEP.WorldModel_CustomPositionAngle = Vector(-8, -5, 180) +SWEP.WorldModel_CustomPositionOrigin = Vector(0, 4, 1) + +SWEP.WorldModel = "models/tdmg/invasion/w_ump45.mdl" \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/cl_init.lua b/gamemodes/cod_custom/gamemode/cl_init.lua new file mode 100644 index 0000000..bb2d729 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/cl_init.lua @@ -0,0 +1,13 @@ +include("shared.lua") +include('client/cl_hud.lua') +include("client/cl_outline.lua") +include("client/cl_menu.lua") +include("client/cl_takedown.lua") +include("client/cl_scoreboard.lua") +include("client/cl_abilities.lua") +include("client/cl_killfeed.lua") +include("client/cl_radar.lua") +include("client/cl_cutscenes.lua") +include("client/cl_killcam.lua") +include("client/cl_error.lua") +include("post_shared.lua") \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/client/cl_abilities.lua b/gamemodes/cod_custom/gamemode/client/cl_abilities.lua new file mode 100644 index 0000000..6f7633b --- /dev/null +++ b/gamemodes/cod_custom/gamemode/client/cl_abilities.lua @@ -0,0 +1,109 @@ +local meta = FindMetaTable("Player") + +function meta:IsDowned() + return self:GetNWBool('Downed') +end + +function meta:MovingDirection(threshold) --This function was made by OpenAI ChatGPT + threshold = threshold or 0.1 + local vel = self:GetVelocity() + local forward = self:GetForward() + local right = self:GetRight() + local forwardDot = vel:Dot(forward) + local rightDot = vel:Dot(right) + + if forwardDot > threshold then + return "forward" + elseif forwardDot < -threshold then + return "backward" + end + + if rightDot > threshold then + return "right" + elseif rightDot < -threshold then + return "left" + end + + return "stand" +end + +hook.Add("CalcMainActivity", "TDMAnimsRevive", function(ply, vel) + if ply:IsDowned() and ply:GetNWString('SVAnim') == "" then + local anim1 = ply:LookupSequence("laststand_idle") + local anim2 = ply:LookupSequence("laststand_crawl_forward") + local anim3 = ply:LookupSequence("laststand_crawl_backward") + local anim4 = ply:LookupSequence("laststand_crawl_left") + local anim5 = ply:LookupSequence("laststand_crawl_right") + local dir = ply:MovingDirection(4) + local vel = ply:GetVelocity():Length2D() > 10 + if dir == "forward" and vel then + return -1, anim2 + elseif dir == "backward" and vel then + return -1, anim3 + elseif dir == "left" and vel then + return -1, anim4 + elseif dir == "right" and vel then + return -1, anim5 + else + return -1, anim1 + end + end +end) + +hook.Add("Think", "TDMRevive", function() + local ply = LocalPlayer() + if ply:IsDowned() and ply:Alive() and !ply:ShouldDrawLocalPlayer() then + if not model then + model = ClientsideModel(ply:GetModel()) + end + model:SetNoDraw(false) + model:SetAngles(Angle(0,ply:GetAngles().y+10,0)) + model:ManipulateBoneAngles(model:LookupBone('ValveBiped.Bip01_R_Forearm'), Angle(0,270,0)) + model:ManipulateBoneAngles(model:LookupBone('ValveBiped.Bip01_L_Forearm'), Angle(0,270,0)) + model:ManipulateBoneAngles(model:LookupBone('ValveBiped.Bip01_R_UpperArm'), Angle(0,270,0)) + model:SetCycle(ply:GetCycle()) + model:SetModel(ply:GetModel()) + + local vel = ply:GetVelocity() + local anim1 = ply:LookupSequence("laststand_idle") + local anim2 = ply:LookupSequence("laststand_crawl_forward") + local anim3 = ply:LookupSequence("laststand_crawl_backward") + local anim4 = ply:LookupSequence("laststand_crawl_left") + local anim5 = ply:LookupSequence("laststand_crawl_right") + local speed = vel:Length2D() > 5 + local dir = ply:MovingDirection(8) + + if ply:EyeAngles().x > 25 then + ply:SetEyeAngles(Angle(25, ply:EyeAngles().y, 0)) + end + if ply:EyeAngles().x < -25 then + ply:SetEyeAngles(Angle(-25, ply:EyeAngles().y, 0)) + end + if dir == "forward" and speed then + model:ResetSequence(anim2) + elseif dir == "backward" and speed then + model:ResetSequence(anim3) + elseif dir == "left" and speed then + model:ResetSequence(anim4) + elseif dir == "right" and speed then + model:ResetSequence(anim5) + else + model:ResetSequence(anim1) + end + model:SetPos(ply:GetPos()+Vector(0,0,4)+ply:GetForward()*8+ply:GetRight()*8) + else + if model then + model:SetNoDraw(true) + end + end +end) + +local delay = CurTime()+5 +hook.Add("Think", "TDMApplyCommands", function() + if delay < CurTime() then + delay = CurTime()+5 + for k, v in pairs(COD.ApplyCommands["Client"]) do + RunConsoleCommand(k, v) + end + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/client/cl_cutscenes.lua b/gamemodes/cod_custom/gamemode/client/cl_cutscenes.lua new file mode 100644 index 0000000..40d9b96 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/client/cl_cutscenes.lua @@ -0,0 +1,58 @@ +local cutscene_table = { + [1] = {}, + [2] = {}, + [3] = {}, + [4] = {}, +} + +function COD:PrecacheCutscene(path, frames, dest) + for i=1,frames do + local num = i + if num < 10 then + num = "000"..num + elseif num < 100 then + num = "00"..num + elseif num < 1000 then + num = "0"..num + end + local mat = Material(path..num..".jpg") + table.insert(dest, mat) + end +end + +function COD:PlayCutscene(tab, sound, fps, screenfade) + local time = 0 + local tab = cutscene_table[tab] + surface.PlaySound(sound) + hook.Add("HUDPaint", "!!!CODCutscene", function() + time = time + FrameTime() + local frame = math.ceil(time/(1/fps)) + + if frame > #tab then + hook.Remove("HUDPaint", "!!!CODCutscene") + COD.HideHUD = false + if screenfade then + LocalPlayer():ScreenFade(SCREENFADE.IN, color_black, 1, 1) + end + else + surface.SetMaterial(tab[frame]) + surface.SetDrawColor(255,255,255) + surface.DrawTexturedRect(0, 0, ScrW(), ScrH()) + COD.HideHUD = true + end + end) +end + +COD:PrecacheCutscene("tdmg/heli/spawn_cutscene/", 111, cutscene_table[1]) +COD:PrecacheCutscene("tdmg/heli/shotdown_bullet_cutscene/", 117, cutscene_table[2]) +COD:PrecacheCutscene("tdmg/heli/shotdown_rocket_cutscene/", 100, cutscene_table[3]) +COD:PrecacheCutscene("tdmg/nuke/explode_cutscene/", 296, cutscene_table[4]) + +net.Receive("COD.Cutscene", function() + local tab = net.ReadTable() + local num = tab.num_of_cutscene + local snd = tab.path_of_sound + local fps = tab.fps + local scr = tab.screenfade + COD:PlayCutscene(num, snd, fps, scr) +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/client/cl_error.lua b/gamemodes/cod_custom/gamemode/client/cl_error.lua new file mode 100644 index 0000000..5b4d619 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/client/cl_error.lua @@ -0,0 +1,46 @@ + +local noafk = false +hook.Add("Think", "ButtonCheckErrors", function() + local ply = LocalPlayer() + if ply:KeyDown(IN_FORWARD) then + noafk = true + end + if noafk then + hook.Remove("Think", "ButtonCheckErrors") + + local mod = ClientsideModel("models/player/breen.mdl") + timer.Simple(1, function() + local seq = mod:LookupSequence("laststand_idle") + mod:Remove() + + if seq == -1 then + local frame = vgui.Create("DFrame") + frame:SetSize( 300, 150 ) + frame:Center() + frame:SetTitle("CUSTOM ANIMS DONT WORK!") + frame:MakePopup() + + local Labels = vgui.Create("DLabel", frame) + Labels:SetText("Animations don't work! You can try to fix them using this button. If you still see T-Pose animations or game crashing, then try restarting the game and removing the animation mods.") + Labels:SetWrap(true) + Labels:SetPos( 25, 25 ) + Labels:SetSize( 250, 75 ) + + local DermaButton = vgui.Create("DButton", frame) + DermaButton:SetText("Try Fix") + DermaButton:SetPos( 25, 100 ) + DermaButton:SetSize( 250, 30 ) + DermaButton.DoClick = function() + RunConsoleCommand("wos_dynabase_fixconflicts") + RunConsoleCommand("wos_dynabase_reloadmodels") + frame:Remove() + end + end + + if jit.version_num != 20100 then + surface.PlaySound("npc/turret_floor/ping.wav") + chat.AddText(Color(255,0,0), "[WARNING] ", Color(255,255,255), "I advise you to install the x64 version to avoid errors and improve performance.") + end + end) + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/client/cl_hud.lua b/gamemodes/cod_custom/gamemode/client/cl_hud.lua new file mode 100644 index 0000000..cde4240 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/client/cl_hud.lua @@ -0,0 +1,1368 @@ +COD.HideHUD = false +COD.HUD_DisableSomeThink = false +COD.TimeMatch = 0 +COD.UAV_Active = false +COD.Adv_UAV_Active = false +COD.Counter_UAV_Active = false + +local hide = { + ["CHudHealth"] = true, + ["CHudAmmo"] = true, + ["CHudSecondaryAmmo"] = true, + ["CHudBattery"] = true, + ["CHudDamageIndicator"] = true +} + +hook.Add("HUDShouldDraw", "HideHUD", function(name) + if hide[name] then + return false + end +end) + +hook.Add("DrawDeathNotice", "DisableKillfeed", function() + return 0,0 +end) + +hook.Add("HUDDrawTargetID", "HidePlayerInfo", function() + return false +end) + +function GM:HUDDrawPickupHistory() end + +-------------------------------------------- + + +local color_white1 = Color(255,255,255) +local color_white2 = Color(255,255,255,150) +local color_grey1 = Color(220,220,220) +local color_grey2 = Color(40,40,40,150) +local color_yellow1 = Color(200,150,0) +local color_red1 = Color(220,40,40) +local color_red2 = Color(240,60,60) +local color_red3 = Color(250,50,50) +local color_blue1 = Color(60,60,240) +local color_blue2 = Color(20,20,200) +local color_blue3 = Color(150,150,250) +local color_green1 = Color(20,120,20,200) + +local team_color1 = Color(85,165,95) +local team_color2 = Color(195,165,85) + +local gradient_mat = Material('tdmg/hud/gradient.png') +local gradient_mat2 = Material('tdmg/hud/gradient2.png') +local hm_mat = Material('tdmg/hud/hitmark.png') +local blood_mat = Material('tdmg/hud/bloodoverlay.png') +local team1_mat = Material('tdmg/hud/teams/specgru.png') +local team2_mat = Material('tdmg/hud/teams/kortac.png') +local tm_mat = Material('tdmg/hud/teammate.png') +local rev_mat = Material('tdmg/hud/revive.png') +local jug_mat = Material('tdmg/hud/jugoverlay.png') +local ar1_mat = Material('tdmg/hud/armor-full.png') +local ar2_mat = Material('tdmg/hud/armor-broken.png') +local arrow_mat = Material('tdmg/hud/arrows.png') +local dwn_mat = Material('tdmg/hud/downed.png') +local he_mat = Material('tdmg/hud/he.png') +local flash_mat = Material('tdmg/hud/flash.png') + +local revtime = 0 + +surface.CreateFont("TDMG_SmallFont1",{ + font = "Doloman Pavljenko Light", + extended = true, + size = 20, + antialias = true, +}) + +surface.CreateFont("TDMG_SmallFont2",{ + font = "Doloman Pavljenko Light", + extended = true, + size = 16, + antialias = true, +}) + +surface.CreateFont("TDMG_MediumFont1",{ + font = "Doloman Pavljenko Light", + extended = true, + size = 28, + antialias = true, +}) + +surface.CreateFont("TDMG_MediumFont2",{ + font = "Doloman Pavljenko Light", + extended = true, + size = 32, + antialias = true, +}) + +surface.CreateFont("TDMG_LargeFont1",{ + font = "Doloman Pavljenko Light", + extended = true, + size = 48, + antialias = true, +}) + +surface.CreateFont("TDMG_LargeFont2",{ + font = "Doloman Pavljenko Light", + extended = true, + size = 64, + antialias = true, +}) + +surface.CreateFont("TDMG_Other_Big1",{ + font = "Boxed Round SemiBold", + extended = true, + size = 64, + antialias = true, +}) + +surface.CreateFont("TDMG_Other_Big2",{ + font = "Boxed Round SemiBold", + extended = true, + size = 72, + antialias = true, +}) + +surface.CreateFont("TDMG_Other_Medium1",{ + font = "Boxed Round SemiBold", + extended = true, + size = 24, + antialias = true, +}) + +surface.CreateFont("TDMG_Other_Medium2",{ + font = "Boxed Round SemiBold", + extended = true, + size = 32, + antialias = true, +}) + +function COD:GiveThemeName(type) + local snd = "" + local custom = GetConVar("cod_custom_music_enable"):GetBool() + + if type == "infil" then + snd = "tdmg/themes/start"..math.random(1,6)..".wav" + elseif type == "win" then + snd = "tdmg/themes/victory.wav" + elseif type == "defeat" then + snd = "tdmg/themes/defeat.wav" + end + + if custom then + local files = file.Find("sound/cod_gamemode/themes/"..type.."/*", "GAME") + if #files > 0 then + snd = "cod_gamemode/themes/"..type.."/"..table.Random(files) + end + end + + return snd +end + +local function DrawKiller(ply) + if ply == LocalPlayer() then return end + local alpha = 255 + local cando = false + timer.Simple(2.5, function() + cando = true + end) + hook.Add("HUDPaint", "TDMGKillPlayerMark", function() + if IsValid(ply) then + local nick = ply:GetClass() + if ply:IsPlayer() then + nick = ply:Nick() + end + draw.SimpleText(COD.Language["hud_killer"]..nick, "TDMG_LargeFont1", ScrW()/2, ScrH()/1.5, Color(255,255,255,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + if cando then + alpha = alpha - FrameTime()/0.0025 + end + if alpha <= 0 then + hook.Remove("HUDPaint", "TDMGKillPlayerMark") + end + end) +end + +local function DrawKilled() + local ply = net.ReadEntity() + if ply == LocalPlayer() or !ply:IsPlayer() then return end + local alpha = 0 + local cando = false + local nick = ply:Nick() + timer.Simple(5, function() + cando = true + end) + local parsed = markup.Parse(""..COD.Language["hud_killed"]..""..nick.."") + hook.Add("HUDPaint", "TDMGKillPlayerMark", function() + if IsValid(ply) then + parsed:Draw(ScrW()/2, ScrH()/2+275, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, alpha) + end + if cando then + alpha = alpha - FrameTime()/0.0025 + else + alpha = math.min(alpha + FrameTime()/0.0025, 255) + end + if alpha <= 0 and cando then + hook.Remove("HUDPaint", "TDMGKillPlayerMark") + end + end) +end + +local function DrawScoreGiving(text) + local alpha = 255 + local cando = false + timer.Simple(1, function() + cando = true + end) + hook.Add("HUDPaint", "TDMGScoreMark", function() + draw.SimpleText(text, "TDMG_SmallFont1", ScrW()/2+50, ScrH()/2, Color(255,255,255,alpha), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + if cando then + alpha = alpha - FrameTime()/0.0025 + end + if alpha <= 0 then + hook.Remove("HUDPaint", "TDMGScoreMark") + end + end) +end + +local annMat = Material("tdmg/hud/announcment_bg.png") +local titleMat = Material("tdmg/hud/modes/title.png") +local gMat = { + [1] = Material("tdmg/hud/modes/deathmatch.png"), + [2] = Material("tdmg/hud/modes/invasion.png"), + [3] = Material("tdmg/hud/modes/knockout.png"), + [4] = Material("tdmg/hud/modes/infected.png"), + [5] = Material("tdmg/hud/modes/domination.png"), +} + +local function ShowStartTitleOfGamemode() + local gm = COD.DataTable["Gamemode"] + local modemat = gMat[gm] + local title = COD.Language["gamemode_"..gm] + local lower = COD.Language["gamemode_"..gm.."_desc"] + local scale = 0 + local showing = true + + COD:SpeakerSay("tdmg/speaker/gamemode"..gm..".wav") + if gm < 4 then + COD:SpeakerSay("tdmg/speaker/main_intro.wav") + elseif gm == 4 then + COD:SpeakerSay("tdmg/speaker/infected_intro.wav") + elseif gm == 5 then + COD:SpeakerSay("tdmg/speaker/domination_intro.wav") + end + + timer.Simple(5, function() + showing = false + end) + + local w, h = ScrW(), ScrH() + + hook.Add("HUDPaint", "StartModeShow", function() + if showing then + scale = math.min(scale+FrameTime()*5, 1) + else + scale = math.max(scale-FrameTime()*5, 0) + if scale == 0 then + hook.Remove("HUDPaint", "StartModeShow") + end + end + surface.SetDrawColor(color_white) + surface.SetMaterial(modemat) + surface.DrawTexturedRect(w/2-(100*scale), 100, 200*scale, 200*scale) + + surface.SetDrawColor(200,200,200,250) + surface.SetMaterial(titleMat) + surface.DrawTexturedRect(w/2-(350*scale), 300, 700*scale, 150*scale) + + if scale == 1 then + surface.SetDrawColor(225,150,0) + surface.DrawRect(w/2-314, 372, 628, 4) + + draw.SimpleText(title, "TDMG_Other_Big1", w/2, 335, Color(225,175,0), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + draw.SimpleText(lower, "TDMG_Other_Medium2", w/2, 410, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + end) +end + +local function ShowStartOperationOfGamemode() + local showing = true + + timer.Simple(10, function() + showing = false + end) + + local alpha = 255 + local w, h = ScrW(), ScrH() + local wid = -200 + local day = math.random(1,999) + local time = math.random(10,20)..":"..math.random(10,59) + + hook.Add("HUDPaint", "StartOperationShow", function() + if showing then + wid = math.min(wid+FrameTime()*500, 100) + else + alpha = math.max(alpha-FrameTime()*500, -200) + if alpha == 0 then + hook.Remove("HUDPaint", "StartOperationShow") + end + end + surface.SetDrawColor(255,255,255,alpha) + surface.DrawRect(wid-6, h-200, 4, 90) + + draw.SimpleText("OPERATION/", "TDMG_Other_Medium1", wid, h-190, Color(255,255,255,alpha), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + draw.SimpleText(string.upper(game.GetMap()), "TDMG_Other_Medium2", wid, h-170, Color(255,255,255,alpha), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + draw.SimpleText("CLASSIFIED", "TDMG_Other_Medium1", wid, h-140, Color(255,255,255,alpha), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + draw.SimpleText("DAY "..day.." "..time, "TDMG_Other_Medium1", wid, h-120, Color(255,255,255,alpha), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + end) +end + +local function DrawTimerScreen(num, show) + local nums = num + for i=1,nums do + timer.Simple(i, function() + num = num - 1 + if i == nums then + hook.Remove("HUDPaint", "ShowStartScreenTDM") + hook.Remove("CreateMove", "ShowStartScreenTDM") + COD.HideHUD = false + if show then + timer.Simple(1, function() + ShowStartTitleOfGamemode() + end) + else + surface.PlaySound("tdmg/alert.wav") + end + else + surface.PlaySound("tdmg/timer.wav") + end + end) + end + hook.Add("HUDPaint", "ShowStartScreenTDM", function( ply, pos, angles, fov ) + draw.SimpleText(num, "TDMG_LargeFont2", ScrW()/2, 300, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end) +end + +local function DrawStartScreen() + LocalPlayer():ScreenFade(SCREENFADE.IN, color_black, 2, 3) + ShowStartOperationOfGamemode() + if GetConVar("cod_music_enable"):GetBool() then + surface.PlaySound(COD:GiveThemeName("infil")) + end + COD.HideHUD = true + timer.Simple(COD.DataTable["Delay_Before_Start"]-5, function() + DrawTimerScreen(5, true) + end) + hook.Add("CreateMove", "ShowStartScreenTDM", function(cmd) + cmd:RemoveKey(IN_JUMP) + cmd:RemoveKey(IN_DUCK) + cmd:RemoveKey(IN_ATTACK) + cmd:SetForwardMove(0) + cmd:SetSideMove(0) + end) +end + +local function DrawWinScreen(win) + local alpha = 0 + local alphadeg = false + timer.Simple(5, function() + alphadeg = true + end) + COD.HideHUD = true + + if GetConVar("cod_music_enable"):GetBool() then + if win then + surface.PlaySound(COD:GiveThemeName("win")) + else + surface.PlaySound(COD:GiveThemeName("defeat")) + end + end + + hook.Add("HUDPaint", "TDMGEndScr", function() + if alphadeg then + alpha = alpha-FrameTime()/0.005 + else + alpha = math.Clamp(alpha+FrameTime()/0.002, 0, 255) + end + + if win then + surface.SetDrawColor(55,105,55,alpha/2) + surface.DrawRect(0, 0, ScrW(), ScrH()) + + surface.SetDrawColor(0,0,0,alpha/2) + surface.DrawRect(ScrW()/2-125, ScrH()/1.5-25, 250, 50) + + draw.SimpleText(COD.Language["hud_win"], "TDMG_LargeFont1", ScrW()/2, ScrH()/1.5, Color(255,255,255,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + + surface.SetDrawColor(255,255,255,alpha) + surface.SetMaterial(team1_mat) + surface.DrawTexturedRect(350, 120, 230, 256) + + draw.SimpleText(COD.DataTable["Team1_Kills"], "TDMG_LargeFont1", 465, 420, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + + surface.SetDrawColor(255,255,255,alpha) + surface.SetMaterial(team2_mat) + surface.DrawTexturedRect(ScrW()-600, 120, 256, 256) + + draw.SimpleText(COD.DataTable["Team2_Kills"], "TDMG_LargeFont1", ScrW()-470, 420, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + else + surface.SetDrawColor(105,5,5,alpha/2) + surface.DrawRect(0, 0, ScrW(), ScrH()) + + surface.SetDrawColor(0,0,0,alpha/2) + surface.DrawRect(ScrW()/2-150, ScrH()/1.5-25, 300, 50) + + draw.SimpleText(COD.Language["hud_lose"], "TDMG_LargeFont1", ScrW()/2, ScrH()/1.5, Color(255,255,255,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + + surface.SetDrawColor(255,255,255,alpha) + surface.SetMaterial(team1_mat) + surface.DrawTexturedRect(350, 120, 230, 256) + + draw.SimpleText(COD.DataTable["Team1_Kills"], "TDMG_LargeFont1", 465, 420, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + + surface.SetDrawColor(255,255,255,alpha) + surface.SetMaterial(team2_mat) + surface.DrawTexturedRect(ScrW()-600, 120, 256, 256) + + draw.SimpleText(COD.DataTable["Team2_Kills"], "TDMG_LargeFont1", ScrW()-470, 420, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + + if alpha <= 0 and alphadeg then + hook.Remove("HUDPaint", "TDMGEndScr") + COD.HideHUD = false + end + end) +end + +local function DrawPerks(unlocks) + local ply = LocalPlayer() + local alpha = 0 + local up = true + local time = 5 + + if unlocks >= 1 then + time = 8 + if GetConVar("cod_music_enable"):GetBool() then + surface.PlaySound("tdmg/themes/perk_earned.wav") + end + end + + timer.Simple(time, function() + up = false + end) + + hook.Add("HUDPaint", "TDMPerksShow", function() + if up and not COD.HideHUD then + alpha = math.Clamp(alpha+FrameTime()*500, 0, 255) + else + if alpha == 0 or COD.HideHUD then + hook.Remove("HUDPaint", "TDMPerksShow") + end + alpha = math.Clamp(alpha-FrameTime()*500, 0, 255) + end + if ply:GetNWFloat('Perk1_Choose') > 0 then + surface.SetDrawColor(Color(120,100,30,alpha/2.5)) + surface.DrawRect(ScrW()/2-175, ScrH()-100, 150, 75) + + local wh = 255 + if ply:GetNWFloat('Perk1_Choose') != ply:GetNWFloat('Perk1') then + wh = 0 + end + surface.SetDrawColor(Color(wh,wh,wh,alpha)) + surface.SetMaterial(COD.Perks["Type1"][ply:GetNWFloat('Perk1_Choose')].icon) + surface.DrawTexturedRect(ScrW()/2-140, ScrH()-100, 75, 75) + + draw.SimpleText(COD.Perks["Type1"][ply:GetNWFloat('Perk1_Choose')].name, "TDMG_SmallFont1", ScrW()/2-102, ScrH()-125, Color(255,255,255,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + + if ply:GetNWFloat('Perk2_Choose') > 0 then + surface.SetDrawColor(Color(60,120,60,alpha/2.5)) + surface.DrawRect(ScrW()/2+25, ScrH()-100, 150, 75) + + local wh = 255 + if ply:GetNWFloat('Perk2_Choose') != ply:GetNWFloat('Perk2') then + wh = 0 + end + surface.SetDrawColor(Color(wh,wh,wh,alpha)) + surface.SetMaterial(COD.Perks["Type2"][ply:GetNWFloat('Perk2_Choose')].icon) + surface.DrawTexturedRect(ScrW()/2+62, ScrH()-100, 75, 75) + + draw.SimpleText(COD.Perks["Type2"][ply:GetNWFloat('Perk2_Choose')].name, "TDMG_SmallFont1", ScrW()/2+100, ScrH()-125, Color(255,255,255,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + if unlocks == 1 then + surface.SetDrawColor(Color(255,255,255,alpha)) + surface.SetMaterial(COD.Perks["Type1"][ply:GetNWFloat('Perk1_Choose')].icon) + surface.DrawTexturedRect(ScrW()/2-50, ScrH()/2-300, 100, 100) + + draw.SimpleText(COD.Perks["Type1"][ply:GetNWFloat('Perk1_Choose')].name..COD.Language["hud_unlockmainperk"], "TDMG_SmallFont1", ScrW()/2, ScrH()/2-200, Color(255,255,255,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + draw.SimpleText(COD.Perks["Type1"][ply:GetNWFloat('Perk1_Choose')].desc, "TDMG_SmallFont2", ScrW()/2, ScrH()/2-180, Color(255,255,255,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + elseif unlocks == 2 then + surface.SetDrawColor(Color(255,255,255,alpha)) + surface.SetMaterial(COD.Perks["Type2"][ply:GetNWFloat('Perk2_Choose')].icon) + surface.DrawTexturedRect(ScrW()/2-50, ScrH()/2-300, 100, 100) + + draw.SimpleText(COD.Perks["Type2"][ply:GetNWFloat('Perk2_Choose')].name..COD.Language["hud_unlockhighperk"], "TDMG_SmallFont1", ScrW()/2, ScrH()/2-200, Color(255,255,255,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + draw.SimpleText(COD.Perks["Type2"][ply:GetNWFloat('Perk2_Choose')].desc, "TDMG_SmallFont2", ScrW()/2, ScrH()/2-180, Color(255,255,255,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + end) +end + +local function ShowAnnouncment(type) + local str = "" + local scale = 0 + local showing = true + local origtext = 400 + if type == 1 then + str = COD.Language["hud_invasion_1"] + elseif type == 2 then + str = COD.Language["hud_invasion_2"] + end + + surface.SetFont("TDMG_Other_Big2") + local width, height = surface.GetTextSize(str) + + origtext = origtext+(width-150) + + + surface.PlaySound("tdmg/alert2.wav") + + timer.Simple(4, function() + showing = false + end) + + local w, h = ScrW(), ScrH() + + hook.Add("HUDPaint", "StartAnnShow", function() + if showing then + scale = math.min(scale+FrameTime()*5, 1) + else + scale = math.max(scale-FrameTime()*5, 0) + if scale == 0 then + hook.Remove("HUDPaint", "StartAnnShow") + end + end + + surface.SetDrawColor(0,150,0,200) + surface.SetMaterial(annMat) + surface.DrawTexturedRect(w/2-(origtext/2*scale), 200, origtext*scale, 150*scale) + + if scale == 1 then + draw.SimpleText(str, "TDMG_Other_Big2", w/2-3, 265-3, Color(0,0,0,200), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + draw.SimpleText(str, "TDMG_Other_Big2", w/2, 265, Color(255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + end) +end + +local speakerdelay = 0 +function COD:SpeakerSay(sound) + if !GetConVar("cod_announcer_enable"):GetBool() then return end + + local delay = speakerdelay + local dur = SoundDuration(sound)+0.1 + + speakerdelay = speakerdelay + dur + + timer.Simple(delay, function() + surface.PlaySound(sound) + end) + timer.Simple(delay+dur, function() + speakerdelay = speakerdelay - dur + end) +end + +local function DrawNewKillStreak(ksn) + local alpha = 0 + local alphadeg = false + timer.Simple(5, function() + alphadeg = true + end) + + COD:SpeakerSay(COD.Killstreaks[ksn].sound) + + hook.Add("HUDPaint", "TDMGKillstreakShow", function() + if alphadeg then + alpha = alpha-FrameTime()/0.005 + else + alpha = math.Clamp(alpha+FrameTime()/0.002, 0, 255) + end + + surface.SetDrawColor(20,150,20,alpha/2) + surface.SetMaterial(gradient_mat2) + surface.DrawTexturedRect(ScrW()/2-400, 250 , 800, 40) + + + draw.SimpleText(COD.Killstreaks[ksn].name, "TDMG_MediumFont2", ScrW()/2, 255, Color(255,255,255,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + draw.SimpleText(COD.Language["hud_unlockkillstreak"], "TDMG_SmallFont1", ScrW()/2, 300, Color(255,255,255,alpha), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + + surface.SetDrawColor(255,255,255,alpha) + surface.SetMaterial(COD.Killstreaks[ksn].icon) + surface.DrawTexturedRect(ScrW()/2-64, 120, 128, 128) + + if alpha <= 0 and alphadeg then + hook.Remove("HUDPaint", "TDMGKillstreakShow") + end + end) +end + +local function CanSee(pos1, pos2) + local tr = util.TraceLine( { + start = pos1, + endpos = pos2, + filter = function(ent) if ent:IsWorld() then return true end end, + }) + return !tr.Hit +end + +hook.Add("RenderScreenspaceEffects", "TDMHealth", function() + local ply = LocalPlayer() + local alpha = math.Clamp((ply:Health()/ply:GetMaxHealth())+0.2, 0.2, 1) + + if !ply:Alive() then + alpha = 1 + end + + local tab = { + [ "$pp_colour_addr" ] = 0, + [ "$pp_colour_addg" ] = 0, + [ "$pp_colour_addb" ] = 0, + [ "$pp_colour_brightness" ] = 0, + [ "$pp_colour_contrast" ] = 1, + [ "$pp_colour_colour" ] = alpha, + [ "$pp_colour_mulr" ] = 0, + [ "$pp_colour_mulg" ] = 0, + [ "$pp_colour_mulb" ] = 0 + } + + DrawColorModify(tab) +end) + +hook.Add("HUDPaint", "TDMGHudTeammates", function() + if not COD.HideHUD then + for _, ply in ipairs(player.GetAll()) do + if ply:Team() == LocalPlayer():Team() and !ply:GetNoDraw() and ply != LocalPlayer() and ply:Alive() then + if ply:LookupBone("ValveBiped.Bip01_Head1") and CanSee(LocalPlayer():EyePos(), ply:EyePos()) then + local pos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))+Vector(0,0,20) + pos = pos:ToScreen() + + surface.SetDrawColor(5,155,255) + surface.SetMaterial(tm_mat) + surface.DrawTexturedRect(pos.x-12, pos.y-12, 24, 24) + draw.SimpleText(ply:Nick(), "TDMG_SmallFont2", pos.x, pos.y-32, Color(5,105,205), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + + if ply:IsDowned() then + surface.SetDrawColor(255,255,255) + surface.SetMaterial(rev_mat) + surface.DrawTexturedRect(pos.x-16, pos.y-16, 32, 32) + end + end + end + end + end +end) + +hook.Add("PostDrawOpaqueRenderables", "TDMGHudPackages", function() + for _, p in ipairs(ents.FindByClass("tdm_package")) do + local float = p:GetNWFloat('Item') + if float > 0 and p:GetNWEntity('Owner') == LocalPlayer() then + render.SetMaterial(COD.Killstreaks[float].icon) + render.DrawSprite(p:GetPos()+Vector(0,0,40), 16, 16, color_white) + end + end + local ply = LocalPlayer() + local wep = ply:GetActiveWeapon() + if ply:Alive() and IsValid(wep) and wep:GetClass() == "tdm_radio" and wep:GetNWBool('drawarrow') then + local tr = ply:GetEyeTrace().HitPos + + local tr2 = util.TraceLine({ + start = tr, + endpos = tr+Vector(0,0,99999), + filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end, + }) + if tr2.HitSky then + render.SetMaterial(arrow_mat) + render.DrawQuadEasy(tr+Vector(0,0,32), -ply:GetAimVector(), 16, 16, color_white1, 180) + local dlight = DynamicLight(ply:EntIndex()) + if dlight then + dlight.pos = tr + dlight.r = 255 + dlight.g = 255 + dlight.b = 255 + dlight.brightness = 0.5 + dlight.Decay = 256 + dlight.Size = 64 + dlight.DieTime = CurTime() + 0.1 + end + else + render.SetMaterial(arrow_mat) + render.DrawQuadEasy(tr+Vector(0,0,32), -ply:GetAimVector(), 16, 16, color_red2, 180) + local dlight = DynamicLight(ply:EntIndex()) + if dlight then + dlight.pos = tr + dlight.r = 200 + dlight.g = 0 + dlight.b = 0 + dlight.brightness = 0.5 + dlight.Decay = 256 + dlight.Size = 64 + dlight.DieTime = CurTime() + 0.1 + end + end + end +end) + +local carepackagepickupprogress = 0 +hook.Add("HUDPaint", "TDMGHud", function() + local ply = LocalPlayer() + local tr = ply:GetEyeTrace() + + --care package pickup-- + + if IsValid(tr.Entity) and ply:Alive() and tr.Entity:GetClass() == "tdm_package" and tr.HitPos:Distance(ply:GetPos()) < 64 then + if ply:KeyDown(IN_USE) and tr.Entity:GetNWEntity('Owner') != ply then + carepackagepickupprogress = carepackagepickupprogress + FrameTime()/5 + elseif ply:KeyDown(IN_USE) and tr.Entity:GetNWEntity('Owner') == ply then + carepackagepickupprogress = carepackagepickupprogress + FrameTime()/1 + else + carepackagepickupprogress = 0 + end + if carepackagepickupprogress > 0 then + surface.SetDrawColor(0,0,0,200) + surface.DrawRect(ScrW()/2-125, ScrH()/1.75, 250, 15) + + surface.SetDrawColor(220,220,220,200) + surface.DrawRect(ScrW()/2-125+2, ScrH()/1.75+2, 246*(carepackagepickupprogress/1), 11) + if carepackagepickupprogress > 1 then + carepackagepickupprogress = 0 + net.Start("COD.PickupCarePackage") + net.WriteEntity(tr.Entity) + net.SendToServer() + end + else + local float = tr.Entity:GetNWFloat('Item') + if float > 0 and tr.Entity:GetNWEntity('Owner') == LocalPlayer() then + draw.SimpleText(COD.Language["hud_package"]..COD.Killstreaks[float].name, "TDMG_MediumFont1", ScrW()/2, ScrH()/1.75, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + else + draw.SimpleText(COD.Language["hud_fullpackage"], "TDMG_MediumFont1", ScrW()/2, ScrH()/1.75, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + end + else + carepackagepickupprogress = 0 + end + + if COD.HideHUD then return end + + if ply:Alive() then + ---blood overlay--- + + if ply:GetNWBool('jugger') then + surface.SetDrawColor(color_white1) + surface.SetMaterial(jug_mat) + surface.DrawTexturedRect(0, 0, ScrW(), ScrH()) + end + + if not ply:IsDowned() and ply:Alive() then + local tr = ply:GetEyeTrace() + local ent = tr.Entity + local dist = ply:EyePos():DistToSqr(tr.HitPos) < 5000 + if ent:IsPlayer() and dist and ent:IsDowned() and ply:Team() == ent:Team() then + if ply:KeyDown(IN_USE) then + draw.SimpleText(COD.Language["hud_revive"], "TDMG_SmallFont1", ScrW()/2, ScrH()/2+100, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + revtime = revtime + FrameTime()/3 + surface.SetDrawColor(color_grey2) + surface.DrawRect(ScrW()/2-100, ScrH()/2+110, 200, 24) + + surface.SetDrawColor(color_grey1) + surface.DrawRect(ScrW()/2-98, ScrH()/2+112, 196*(math.min(revtime, 1)/1), 20) + else + draw.SimpleText(COD.Language["hud_torevive"], "TDMG_SmallFont1", ScrW()/2, ScrH()/2+115, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + revtime = 0 + end + end + end + + if ply:Health() < 80 and not ply:IsDowned() then + local alpha = (255*(ply:Health()/ply:GetMaxHealth())*-1)+255 + surface.SetDrawColor(255,255,255,alpha) + surface.SetMaterial(blood_mat) + surface.DrawTexturedRect(0, 0, ScrW(), ScrH()) + + surface.SetDrawColor(100,0,0,alpha/4) + surface.DrawRect(0, 0, ScrW(), ScrH()) + elseif ply:IsDowned() then + surface.SetDrawColor(255,255,255) + surface.SetMaterial(blood_mat) + surface.DrawTexturedRect(0, 0, ScrW(), ScrH()) + + surface.SetDrawColor(100,0,0,50) + surface.DrawRect(0, 0, ScrW(), ScrH()) + + local times = ply:GetNWFloat('DownedTime')-CurTime()+0.5 + local allowedselfrevive = COD.DataTable["Gamemode"] != 3 + if ply:IsDowned() and IsValid(ply:GetNWEntity('Reviver')) then + draw.SimpleText(COD.Language["hud_reviver"], "TDMG_SmallFont1", ScrW()/2, ScrH()/2+100, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + revtime = revtime + FrameTime()/3 + surface.SetDrawColor(color_grey2) + surface.DrawRect(ScrW()/2-100, ScrH()/2+110, 200, 24) + + surface.SetDrawColor(color_grey1) + surface.DrawRect(ScrW()/2-98, ScrH()/2+112, 196*(math.min(revtime, 1)/1), 20) + elseif ply:KeyDown(IN_USE) and ply:IsDowned() and !IsValid(ply:GetNWEntity('Reviver')) and allowedselfrevive then + draw.SimpleText(COD.Language["hud_selfrevive"], "TDMG_SmallFont1", ScrW()/2, ScrH()/2+100, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + revtime = revtime + FrameTime()/5.5 + surface.SetDrawColor(color_grey2) + surface.DrawRect(ScrW()/2-100, ScrH()/2+110, 200, 24) + + surface.SetDrawColor(color_grey1) + surface.DrawRect(ScrW()/2-98, ScrH()/2+112, 196*(math.min(revtime, 1)/1), 20) + elseif !ply:KeyDown(IN_USE) and ply:IsDowned() and !IsValid(ply:GetNWEntity('Reviver')) and allowedselfrevive then + draw.SimpleText(COD.Language["hud_toselfrevive"], "TDMG_SmallFont1", ScrW()/2, ScrH()/2+115, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + revtime = 0 + end + if ply:IsDowned() then + draw.SimpleText(string.FormattedTime(math.max(times, 0), "%02i:%02i" ), "TDMG_MediumFont2", ScrW()/2, ScrH()/2+250, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + end + end + + ---left bottom corner--- + + surface.SetDrawColor(color_white2) + surface.SetMaterial(gradient_mat) + surface.DrawTexturedRect(35, ScrH()-135, 400, 80) + + surface.SetDrawColor(color_grey2) + surface.DrawRect(50, ScrH()-100, 200, 6) + + surface.SetDrawColor(color_grey1) + surface.DrawRect(50, ScrH()-100, 200*(ply:Health()/ply:GetMaxHealth()), 6) + + if ply:Armor() > 0 then + surface.SetDrawColor(color_blue2) + surface.DrawRect(50, ScrH()-105, 200*(ply:Armor()/ply:GetMaxArmor()), 6) + end + + draw.SimpleText("+"..ply:Health(), "TDMG_MediumFont1", 48, ScrH()-90, color_grey1, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + + local teamcolor = color_grey1 + if ply:Team() == 2 then + teamcolor = team_color2 + elseif ply:Team() == 1 then + teamcolor = team_color1 + end + + draw.SimpleText(ply:Nick(), "TDMG_SmallFont1", 48, ScrH()-110, teamcolor, TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM) + + ---right bottom corner--- + + surface.SetDrawColor(color_white2) + surface.SetMaterial(gradient_mat) + surface.DrawTexturedRectRotated(ScrW()-160, ScrH()-95, 240, 80, 180) + + local wep = ply:GetActiveWeapon() + + if IsValid(wep) then + draw.SimpleText(wep:GetPrintName(), "TDMG_SmallFont1", ScrW()-50, ScrH()-110, color_yellow1, TEXT_ALIGN_RIGHT, TEXT_ALIGN_BOTTOM) + + if wep.DrawAmmo then + local clip = wep:Clip1() + local ammocount = ply:GetAmmoCount(wep:GetPrimaryAmmoType()) + local clipcolor = color_grey1 + local ammocolor = color_grey1 + if clip < 1 then + clipcolor = color_red1 + end + if ammocount < 1 then + ammocolor = color_red1 + end + draw.SimpleText(clip, "TDMG_MediumFont1", ScrW()-75, ScrH()-75, clipcolor, TEXT_ALIGN_RIGHT, TEXT_ALIGN_BOTTOM) + draw.SimpleText(ammocount, "TDMG_SmallFont2", ScrW()-50, ScrH()-75, ammocolor, TEXT_ALIGN_RIGHT, TEXT_ALIGN_TOP) + end + else + draw.SimpleText("Hands", "TDMG_SmallFont1", ScrW()-50, ScrH()-110, color_yellow1, TEXT_ALIGN_RIGHT, TEXT_ALIGN_BOTTOM) + end + + for i = 1, ply:GetNWFloat('FragGrenades') do + surface.SetDrawColor(color_white) + surface.SetMaterial(he_mat) + surface.DrawTexturedRect(ScrW()-75-(8*i), ScrH()-42, 32, 32) + end + + for i = 1, ply:GetNWFloat('FlashGrenades') do + surface.SetDrawColor(color_white) + surface.SetMaterial(flash_mat) + surface.DrawTexturedRect(ScrW()-150-(8*i), ScrH()-42, 32, 32) + end + + ---killstreaks panel--- + + local tab = COD.Killstreaks + local ks1 = ply:GetNWFloat('KillStreak1') + local ks2 = ply:GetNWFloat('KillStreak2') + local ks3 = ply:GetNWFloat('KillStreak3') + local ks4 = ply.KillstreakOthers + + if ks1 > 0 or ks2 > 0 or ks3 > 0 then + surface.SetDrawColor(color_white2) + surface.SetMaterial(gradient_mat) + surface.DrawTexturedRectRotated(ScrW()-90, ScrH()/2, 100, 360, 180) + + if ks1 > 0 then + if ply:GetNWBool('KillStreak1_Gave') and not ply:GetNWBool('KillStreak1_Used') then + surface.SetDrawColor(color_green1) + surface.DrawRect(ScrW()-95, ScrH()/2-150, 48, 48) + end + + surface.SetDrawColor(color_white1) + surface.SetMaterial(tab[ks1].icon) + surface.DrawTexturedRect(ScrW()-95, ScrH()/2-150, 48, 48) + + if tab[ks1].kills <= ply:GetNWFloat('KillsP') or ply:GetNWBool('KillStreak1_Gave') then + draw.SimpleText("✔", "TDMG_SmallFont1", ScrW()-70, ScrH()/2-100, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + else + draw.SimpleText(tab[ks1].kills - ply:GetNWFloat('KillsP') , "TDMG_SmallFont1", ScrW()-70, ScrH()/2-100, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + end + + if ks2 > 0 then + if ply:GetNWBool('KillStreak2_Gave') and not ply:GetNWBool('KillStreak2_Used') then + surface.SetDrawColor(color_green1) + surface.DrawRect(ScrW()-95, ScrH()/2-24, 48, 48) + end + + surface.SetDrawColor(color_white1) + surface.SetMaterial(tab[ks2].icon) + surface.DrawTexturedRect(ScrW()-95, ScrH()/2-24, 48, 48) + + if tab[ks2].kills <= ply:GetNWFloat('KillsP') or ply:GetNWBool('KillStreak2_Gave') then + draw.SimpleText("✔", "TDMG_SmallFont1", ScrW()-70, ScrH()/2+24, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + else + draw.SimpleText(tab[ks2].kills - ply:GetNWFloat('KillsP') , "TDMG_SmallFont1", ScrW()-70, ScrH()/2+24, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + end + + if ks3 > 0 then + if ply:GetNWBool('KillStreak3_Gave') and not ply:GetNWBool('KillStreak3_Used') then + surface.SetDrawColor(color_green1) + surface.DrawRect(ScrW()-95, ScrH()/2+105, 48, 48) + end + + surface.SetDrawColor(color_white1) + surface.SetMaterial(tab[ks3].icon) + surface.DrawTexturedRect(ScrW()-95, ScrH()/2+105, 48, 48) + + if tab[ks3].kills <= ply:GetNWFloat('KillsP') or ply:GetNWBool('KillStreak3_Gave') then + draw.SimpleText("✔", "TDMG_SmallFont1", ScrW()-70, ScrH()/2+155, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + else + draw.SimpleText(tab[ks3].kills - ply:GetNWFloat('KillsP') , "TDMG_SmallFont1", ScrW()-70, ScrH()/2+155, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + end + + if istable(ks4) and #ks4 > 0 then + local num = ks4[#ks4] + + surface.SetDrawColor(color_green1) + surface.DrawRect(ScrW()-95, ScrH()/2-240, 48, 48) + + surface.SetDrawColor(color_white1) + surface.SetMaterial(tab[num].icon) + surface.DrawTexturedRect(ScrW()-95, ScrH()/2-240, 48, 48) + end + + draw.SimpleText(COD.Language["hud_kills"]..ply:GetNWFloat('KillsP'), "TDMG_SmallFont2", ScrW()-45, ScrH()/2-175, color_grey1, TEXT_ALIGN_RIGHT, TEXT_ALIGN_TOP) + end + else + revtime = 0 + end + + + ---left upper corner--- + + local teamred, teamblue, teammax = COD.DataTable["Team1_Kills"], COD.DataTable["Team2_Kills"], COD.DataTable["MaxKills"] + local offset = 250 + if !ply:Alive() then + offset = 0 + end + + if ply:Team() == 1 then + surface.SetDrawColor(color_grey2) + surface.DrawRect(50, 50+offset, 210, 60) + + surface.SetDrawColor(color_grey2) --Team RED + surface.DrawRect(60, 60+offset, 190, 10) + + surface.SetDrawColor(team_color1) --Team RED + surface.DrawRect(60, 60+offset, 190*(teamred/teammax), 10) + + surface.SetDrawColor(color_grey2) --Team BLUE + surface.DrawRect(60, 90+offset, 190, 10) + + surface.SetDrawColor(team_color2) --Team BLUE + surface.DrawRect(60, 90+offset, 190*(teamblue/teammax), 10) + + draw.SimpleText(COD.Language["scoreboard_score"], "TDMG_SmallFont1", 260, 25+offset, color_grey1, TEXT_ALIGN_RIGHT, TEXT_ALIGN_RIGHT) + draw.SimpleText(teamred, "TDMG_MediumFont1", 48, 50+offset, color_grey1, TEXT_ALIGN_RIGHT, TEXT_ALIGN_RIGHT) + draw.SimpleText(teamblue, "TDMG_MediumFont1", 48, 84+offset, color_grey1, TEXT_ALIGN_RIGHT, TEXT_ALIGN_RIGHT) + elseif ply:Team() == 2 then + surface.SetDrawColor(color_grey2) + surface.DrawRect(50, 50+offset, 210, 60) + + surface.SetDrawColor(color_grey2) --Team RED + surface.DrawRect(60, 60+offset, 190, 10) + + surface.SetDrawColor(team_color2) --Team RED + surface.DrawRect(60, 60+offset, 190*(teamblue/teammax), 10) + + surface.SetDrawColor(color_grey2) --Team BLUE + surface.DrawRect(60, 90+offset, 190, 10) + + surface.SetDrawColor(team_color1) --Team BLUE + surface.DrawRect(60, 90+offset, 190*(teamred/teammax), 10) + + draw.SimpleText(COD.Language["scoreboard_score"], "TDMG_SmallFont1", 260, 25+offset, color_grey1, TEXT_ALIGN_RIGHT, TEXT_ALIGN_RIGHT) + draw.SimpleText(teamblue, "TDMG_MediumFont1", 48, 50+offset, color_grey1, TEXT_ALIGN_RIGHT, TEXT_ALIGN_RIGHT) + draw.SimpleText(teamred, "TDMG_MediumFont1", 48, 84+offset, color_grey1, TEXT_ALIGN_RIGHT, TEXT_ALIGN_RIGHT) + end + + ---upper center--- + + local timesec = COD.TimeMatch-CurTime() + local time = string.FormattedTime( timesec, "%02i:%02i" ) + if timesec > 0 then + draw.SimpleText(time, "TDMG_SmallFont1", ScrW()/2, 25, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end +end) + +local function GiveHitMarker(kill) + local alpha = 255 + if not kill then + surface.PlaySound("tdmg/impacts/hit.wav") + hook.Add("HUDPaint", "TDMGHitsMark", function() + surface.SetDrawColor(255,255,255,alpha) + surface.SetMaterial(hm_mat) + surface.DrawTexturedRect(ScrW()/2-32, ScrH()/2-32, 64, 64) + alpha = alpha - FrameTime()*500 + if alpha <= 0 then + hook.Remove("HUDPaint", "TDMGHitsMark") + end + end) + else + surface.PlaySound("tdmg/impacts/kill.wav") + hook.Add("HUDPaint", "TDMGHitsMark", function() + surface.SetDrawColor(220,40,40,alpha) + surface.SetMaterial(hm_mat) + surface.DrawTexturedRect(ScrW()/2-32, ScrH()/2-32, 64, 64) + alpha = alpha - FrameTime()*500 + if alpha <= 0 then + hook.Remove("HUDPaint", "TDMGHitsMark") + end + end) + end +end + +local function GiveHitMarkerArmor(break1) + local alpha = 255 + if not break1 then + surface.PlaySound("tdmg/impacts/hitarmor ("..math.random(1,2)..").wav") + hook.Add("HUDPaint", "TDMGHitsMark2", function() + surface.SetDrawColor(255,255,255,alpha) + surface.SetMaterial(ar1_mat) + surface.DrawTexturedRect(ScrW()/2+40, ScrH()/2+40, 32, 32) + alpha = alpha - FrameTime()*600 + if alpha <= 0 then + hook.Remove("HUDPaint", "TDMGHitsMark2") + end + end) + else + surface.PlaySound("tdmg/impacts/armorbreak.wav") + hook.Add("HUDPaint", "TDMGHitsMark2", function() + surface.SetDrawColor(255,255,255,alpha) + surface.SetMaterial(ar2_mat) + surface.DrawTexturedRect(ScrW()/2+50, ScrH()/2+50, 32, 32) + alpha = alpha - FrameTime()*600 + if alpha <= 0 then + hook.Remove("HUDPaint", "TDMGHitsMark2") + end + end) + end +end + +local function GiveHitMarkerDowned() + local alpha = 255 + hook.Add("HUDPaint", "TDMGHitsMark2", function() + surface.SetDrawColor(255,255,255,alpha) + surface.SetMaterial(dwn_mat) + surface.DrawTexturedRect(ScrW()/2+24, ScrH()/2+16, 64, 64) + alpha = alpha - FrameTime()*400 + if alpha <= 0 then + hook.Remove("HUDPaint", "TDMGHitsMark2") + end + end) +end + +local function bpla() + COD.UAV_Active = true + timer.Create("BPLADeleteTime", 45, 1, function() + COD.UAV_Active = false + end) +end + +local function mbpla() + COD.Adv_UAV_Active = true + timer.Create("BPLADeleteTime2", 90, 1, function() + COD.Adv_UAV_Active = false + end) +end + +local function cbpla() + COD.Counter_UAV_Active = true + timer.Create("BPLADeleteTime3", 60, 1, function() + COD.Counter_UAV_Active = false + end) +end + +local function AirPatrol(bool) + if bool then + timer.Remove("BPLADeleteTime") + timer.Remove("BPLADeleteTime2") + COD.Adv_UAV_Active = false + COD.UAV_Active = false + else + timer.Remove("BPLADeleteTime3") + COD.Counter_UAV_Active = false + end +end + +local function DrawPlayerKillStreakUse(killstreak, ply) + local tab = COD.Killstreaks[killstreak] + local w = 0 + local upper = true + local nick = ply:Nick() + timer.Simple(4, function() + upper = false + end) + hook.Add("HUDPaint", "DrawPlayerKillStreakUse", function() + if upper then + w = math.Clamp(w-FrameTime()/0.001, -450, 0) + else + w = math.Clamp(w+FrameTime()/0.001, -450, 0) + if w >= 0 then + hook.Remove("HUDPaint", "DrawPlayerKillStreakUse") + end + end + if IsValid(ply) then + surface.SetDrawColor(0,0,0,200) + surface.DrawRect(ScrW()+w, 100, 350, 100) + + surface.SetDrawColor(25,150,0,200) + surface.DrawRect(ScrW()+w, 125, 350, 40) + + surface.SetDrawColor(255,255,255) + surface.SetMaterial(tab.icon) + surface.DrawTexturedRect(ScrW()+15+w, 125, 40, 40) + + draw.SimpleText(COD.Language["hud_killstreak"], "TDMG_SmallFont2", ScrW()+175+w, 112, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + draw.SimpleText(tab.name, "TDMG_MediumFont1", ScrW()+70+w, 160, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM) + draw.SimpleText(nick, "TDMG_SmallFont1", ScrW()+10+w, 190, team.GetColor(ply:Team()), TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM) + end + end) +end + +local function ExplodeNuke() + local sec = 10 + + timer.Simple(5, function() + hook.Add("HUDPaint", "DrawPlayerKillStreakUseNuke", function( ply, pos, angles, fov ) + sec = sec-FrameTime() + + surface.SetDrawColor(0,0,0,240) + surface.DrawRect(0, 200, ScrW(), 100) + + draw.SimpleText(COD.Language["hud_nuke"], "TDMG_MediumFont2", ScrW()/2, 225, Color(200,0,0), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + draw.SimpleText(math.Round(sec, 1), "TDMG_LargeFont1", ScrW()/2, 275, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end) + end) + + LocalPlayer():EmitSound("ambient/alarms/combine_bank_alarm_loop1.wav") + + timer.Simple(15, function() + LocalPlayer():StopSound("ambient/alarms/combine_bank_alarm_loop1.wav") + hook.Remove("HUDPaint", "DrawPlayerKillStreakUseNuke") + local plusthis = 0 + hook.Add("RenderScreenspaceEffects", "NukeFuckTDM", function() + plusthis = math.min(plusthis+FrameTime()*0.1, 1) + local tab = { + [ "$pp_colour_addr" ] = plusthis, + [ "$pp_colour_addg" ] = plusthis/2, + [ "$pp_colour_addb" ] = 0, + [ "$pp_colour_brightness" ] = plusthis/4, + [ "$pp_colour_contrast" ] = 1, + [ "$pp_colour_colour" ] = 1+plusthis/3, + [ "$pp_colour_mulr" ] = 0, + [ "$pp_colour_mulg" ] = 0, + [ "$pp_colour_mulb" ] = 0 + } + DrawColorModify( tab ) + end) + timer.Simple(4, function() + hook.Remove("RenderScreenspaceEffects", "NukeFuckTDM") + COD:PlayCutscene(4, "tdmg/nuke/cutscene.wav", 30, true) + end) + surface.PlaySound("ambient/explosions/explode_6.wav") + end) +end + +net.Receive("COD.ShowAnnouncment", function() + local type = net.ReadFloat() + ShowAnnouncment(type) +end) + +net.Receive("COD.OtherKillstreak", function() + local tab = net.ReadTable() + LocalPlayer().KillstreakOthers = tab +end) + +net.Receive("COD.HitMarkEnemy", function() + local bool = net.ReadBool() + local isself = net.ReadBool() + if not isself then + GiveHitMarker(bool) + else + LocalPlayer():EmitSound("tdmg/impacts/dmgp ("..math.random(1,6)..").wav") + end +end) + +net.Receive("COD.HitMarkEnemy2", function() + local break1 = net.ReadBool() + local downed = net.ReadBool() + if not downed then + GiveHitMarkerArmor(break1) + else + GiveHitMarkerDowned() + end +end) + +net.Receive("COD.ScoreMarkEnemy", function() + local type = net.ReadFloat() + local message = COD.Language["hud_scoreadd_1"] + if type == 1 then + message = COD.Language["hud_scoreadd_2"] + elseif type == 2 then + message = COD.Language["hud_scoreadd_3"] + elseif type == 3 then + message = COD.Language["hud_scoreadd_4"] + elseif type == 4 then + message = COD.Language["hud_scoreadd_5"] + elseif type == 5 then + message = COD.Language["hud_scoreadd_6"] + elseif type == 6 then + message = COD.Language["hud_scoreadd_7"] + elseif type == 7 then + message = COD.Language["hud_message_1"] + elseif type == 8 then + message = COD.Language["hud_message_2"] + elseif type == 9 then + message = COD.Language["hud_message_3"] + elseif type == 10 then + message = COD.Language["hud_domination_4"] + elseif type == 11 then + message = COD.Language["hud_domination_5"] + end + DrawScoreGiving(message) +end) + +net.Receive("COD.AirPatrol", function() + local bool = net.ReadBool() + AirPatrol(bool) +end) + +net.Receive("COD.KillstreaksHUD", function() + local type = net.ReadFloat() + DrawNewKillStreak(type) +end) + +net.Receive("COD.KillstreaksHUD2", function() + local type = net.ReadFloat() + local ent = net.ReadEntity() + DrawPlayerKillStreakUse(type, ent) +end) + +net.Receive("COD.EndingHUD", function() + local bool = net.ReadBool() + DrawWinScreen(bool) +end) + +net.Receive("COD.CounterUAVStart", cbpla) + +net.Receive("COD.UAVStart", function() + local bool = net.ReadBool() + if bool then + mbpla() + else + bpla() + end +end) + +net.Receive("COD.StartMatchHUD", DrawStartScreen) + +net.Receive("COD.TimerShow", function() + local float = net.ReadFloat() + DrawTimerScreen(float) +end) + +net.Receive("COD.NukeEffect", ExplodeNuke) + +net.Receive("COD.KillNick", DrawKilled) + +net.Receive("COD.PerksShow", function() + local type = net.ReadFloat() + DrawPerks(type) +end) + +net.Receive("COD.SendData", function() + local tab = net.ReadTable() + COD.DataTable = tab +end) + +hook.Add("PreDrawOutlines", "Perk1Vis", function() + local ply = LocalPlayer() + if ply:GetNWFloat('Perk1') == 2 then + local tab = {} + for _, ent in ipairs(ents.GetAll()) do + if !ent:IsPlayer() and ent:GetNWFloat('Team') > 0 and ent:GetNWFloat('Team') != ply:Team() or ent:GetClass() == "tdm_package" and ent:GetPos():DistToSqr(ply:GetPos()) < 750000 then + table.insert(tab, ent) + end + end + outline.Add(tab, Color(240,40,20), 1) + end +end) + +local menus = false +local showhint1 = true +local time1 = CurTime()+30 +hook.Add("HUDPaint", "CheckControlGUI", function() + local ply = LocalPlayer() + menus = input.IsKeyDown(KEY_INSERT) + if ply:KeyDown(IN_FORWARD) and time1 < CurTime() or menus then + showhint1 = false + end + if menus then + surface.SetDrawColor(0,0,0,230) + surface.DrawRect(ScrW()/2-200, ScrH()-195, 400, 200) + + surface.SetDrawColor(255,255,255) + surface.DrawOutlinedRect(ScrW()/2-200, ScrH()-195, 400, 200, 2) + + draw.SimpleText(COD.Language["contols_main"], "TDMG_MediumFont2", ScrW()/2, ScrH()-190, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + + draw.SimpleText(COD.Language["contols_f1"], "TDMG_SmallFont1", ScrW()/2, ScrH()-150, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + draw.SimpleText(COD.Language["contols_e"], "TDMG_SmallFont1", ScrW()/2, ScrH()-130, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + draw.SimpleText(COD.Language["contols_q"], "TDMG_SmallFont1", ScrW()/2, ScrH()-110, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + draw.SimpleText(COD.Language["contols_v"], "TDMG_SmallFont1", ScrW()/2, ScrH()-90, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + draw.SimpleText(COD.Language["contols_0"], "TDMG_SmallFont1", ScrW()/2, ScrH()-70, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + draw.SimpleText(COD.Language["contols_tab"], "TDMG_SmallFont1", ScrW()/2, ScrH()-50, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + if showhint1 then + surface.SetDrawColor(0,0,0,230) + surface.DrawRect(ScrW()/2-250, ScrH()/1.5, 500, 40) + + draw.SimpleText(COD.Language["contols_open"], "TDMG_MediumFont1", ScrW()/2, ScrH()/1.5+4, color_grey1, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/client/cl_killcam.lua b/gamemodes/cod_custom/gamemode/client/cl_killcam.lua new file mode 100644 index 0000000..6968999 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/client/cl_killcam.lua @@ -0,0 +1,225 @@ +local TickTable = {} +local KillCamStore = {} +local hm_mat = Material('tdmg/hud/hitmark.png') + +local function TransferBones(base, ragdoll) + if !IsValid(base) or !IsValid(ragdoll) then return end + for i = 0, ragdoll:GetPhysicsObjectCount() - 1 do + local bone = ragdoll:GetPhysicsObjectNum( i ) + if ( IsValid( bone ) ) then + local pos, ang = base:GetBonePosition( ragdoll:TranslatePhysBoneToBone( i ) ) + if ( pos ) then bone:SetPos( pos ) end + if ( ang ) then bone:SetAngles( ang ) end + end + end +end + +local function GiveHitMarker(kill) + local alpha = 255 + if not kill then + surface.PlaySound("tdmg/impacts/hit.wav") + hook.Add("HUDPaint", "TDMGHitsMark", function() + surface.SetDrawColor(255,255,255,alpha) + surface.SetMaterial(hm_mat) + surface.DrawTexturedRect(ScrW()/2-32, ScrH()/2-32, 64, 64) + alpha = alpha - FrameTime()*500 + if alpha <= 0 then + hook.Remove("HUDPaint", "TDMGHitsMark") + end + end) + else + surface.PlaySound("tdmg/impacts/kill.wav") + hook.Add("HUDPaint", "TDMGHitsMark", function() + surface.SetDrawColor(220,40,40,alpha) + surface.SetMaterial(hm_mat) + surface.DrawTexturedRect(ScrW()/2-32, ScrH()/2-32, 64, 64) + alpha = alpha - FrameTime()*500 + if alpha <= 0 then + hook.Remove("HUDPaint", "TDMGHitsMark") + end + end) + end +end + +function COD:StopKillcam() + local ply = LocalPlayer() + hook.Remove("HUDPaint", "!!!KillCamTDM") + hook.Remove("Tick", "!!!KillCamTDM") + hook.Remove("CalcView", "!!!KillCamTDM") + ply.InKillCam = false + COD.HideHUD = false + ply:ConCommand("-jump") + ply:ConCommand("+jump") + timer.Simple(0.1, function() + ply:ConCommand("-jump") + end) + ply:ScreenFade(SCREENFADE.IN, color_black, 0.5, 0) + for _, ent in ipairs(ents.GetAll()) do + if not ent.IsKillcamEnt and (ent:IsPlayer() or ent:IsNPC() or ent:IsWeapon() or ent:GetClass() == "prop_ragdoll" or string.match(ent:GetClass(), "tdm_")) then + ent:SetNoDraw(false) + end + end + for _, ent in pairs(KillCamStore) do + ent:SetNoDraw(true) + ent:Remove() + end + KillCamStore = {} +end + +function COD:GetMeFromTable(tab) + local tab2 = tab.other + for k=1,#tab2.ent do + local v = tab2.ent[k] + if v == LocalPlayer():EntIndex() then + return tab.other.alive[k], tab.other.pos[k], tab.other.ang[k] + end + end +end + +function COD:PlayKillcam(tabl, islast) + if !GetConVar("cod_killcam_enable"):GetBool() and not islast then return end + + local frame = 0 + local tab = tabl[frame] + + LocalPlayer():ScreenFade(SCREENFADE.IN, color_black, 0.5, 0) + + hook.Add("HUDPaint", "!!!KillCamTDM", function() + if istable(tab) then + local alive, opos = COD:GetMeFromTable(tab) + + if alive then + local pos = (opos+Vector(0,0,72)):ToScreen() + draw.SimpleText("YOU", "TDMG_SmallFont1", pos.x, pos.y-16, Color(200,150,0), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + draw.SimpleText("▼", "TDMG_SmallFont1", pos.x, pos.y, Color(200,150,0), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + end + + surface.SetDrawColor(0,0,0,200) + surface.DrawRect(0, 0, ScrW(), 100) + + surface.SetDrawColor(0,0,0,200) + surface.DrawRect(0, ScrH()-100, ScrW(), 100) + + if islast then + draw.SimpleText(COD.Language["killcam_2"], "TDMG_LargeFont1", ScrW()/2, 50, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + else + draw.SimpleText(COD.Language["killcam_1"], "TDMG_LargeFont1", ScrW()/2, 50, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + draw.SimpleText(COD.Language["killcam_3"], "TDMG_MediumFont1", ScrW()/2, ScrH()-50, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + end) + + hook.Add("Tick", "!!!KillCamTDM", function(ply, origin, angles, fov) + local ply = LocalPlayer() + local drawframes = true + ply.InKillCam = true + frame = frame + 1 + tab = tabl[math.ceil(frame)] + COD.HideHUD = true + + if frame >= #tabl or ply:KeyDown(IN_JUMP) or COD.HUD_DisableSomeThink then + COD:StopKillcam() + drawframes = false + end + + if drawframes then + if istable(tab) then + local s1 = tab.ply.snd + + if istable(s1) then + for _, ss in ipairs(s1) do + ply:EmitSound(ss) + end + tab.ply.snd = "" + end + + local b1 = tab.ply.blt + if b1 != {} then + b1.Callback = nil + b1.Tracer = 0 + ply:FireBullets(b1) + tab.ply.blt = {} + end + + local hit = tab.ply.hit + if hit == 1 then + GiveHitMarker() + elseif hit == 2 then + GiveHitMarker(true) + end + + local tab2 = tab.other + + for v, ent in pairs(tab2.ent) do + local ent = Entity(ent) + if !IsValid(ent.KCModel) and tab2.model[v] != "" then + ent.KCModel = ClientsideModel(tab2.model[v]) + table.insert(KillCamStore, ent.KCModel) + else + ent.KCModel.IsKillcamEnt = true + ent.KCModel:SetPos(tab2.pos[v]) + ent.KCModel:SetAngles(tab2.ang[v]) + ent.KCModel:SetModel(tab2.model[v]) + ent.KCModel:SetSequence(tab2.seq[v]) + ent.KCModel:SetPoseParameter("move_x", 1) + ent.KCModel:SetCycle(tab2.cycle[v]) + ent.KCModel:SetNoDraw(!tab2.alive[v]) + if tab2.alive[v] then + ent.SpawnRagdoll = false + end + if !tab2.alive[v] and !ent.SpawnRagdoll then + ent.SpawnRagdoll = true + local rag = ClientsideRagdoll(tab2.model[v]) + rag:SetPos(tab2.pos[v]) + rag.IsKillcamEnt = true + rag:SetNoDraw(false) + table.insert(KillCamStore, rag) + TransferBones(ent.KCModel, rag) + end + end + end + end + + for _, ent in ipairs(ents.GetAll()) do + if not ent.IsKillcamEnt and (ent:IsPlayer() or ent:IsNPC() or ent:IsWeapon() or ent:GetClass() == "prop_ragdoll" or string.match(ent:GetClass(), "tdm_")) then + ent:SetNoDraw(true) + end + end + end + end) + + local lastang = + hook.Add("CalcView", "!!!KillCamTDM", function(ply, origin, angles, fov) + if istable(tab) then + lastang = tab.ply.ang + if tab.ply.lock then + local alive, pos = COD:GetMeFromTable(tab) + if alive and isvector(pos) then + pos = pos+Vector(0,0,32) + lastang = (pos-tab.ply.pos):GetNormalized():Angle() + end + end + + local view = { + origin = tab.ply.pos, + angles = lastang, + fov = fov, + drawviewer = false, + znear = 0.1, + zfar = 10000, + } + + return view + end + end) +end + +net.Receive("COD.KillcamSend", function() + local flt = net.ReadUInt(32) + local tab = net.ReadData(flt) + local bool = net.ReadBool() + tab = util.Decompress(tab) + local tab2 = util.JSONToTable(tab) + + COD:PlayKillcam(tab2, bool) +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/client/cl_killfeed.lua b/gamemodes/cod_custom/gamemode/client/cl_killfeed.lua new file mode 100644 index 0000000..39cdc84 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/client/cl_killfeed.lua @@ -0,0 +1,84 @@ +local killfeed = vgui.Create("DPanel") +killfeed:SetSize(500, 290) +killfeed:SetPos(10, 400) +killfeed.Paint = function(self, w, h) end + +local nametab = { + ["prop_dynamic"] = "Killstreak", + ["env_explosion"] = "Explosion", + ["tdm_package"] = "Care Package", + ["vj_tdm_k9"] = "Dog", + ["vj_tdm_npc"] = "AI Soldier", +} + +killicon.Add("default", "tdmg/hud/skull", Color(255,255,255)) +killicon.Add("takedown", "tdmg/hud/takedown", Color(255,255,255)) +killicon.Add("knife", "tdmg/hud/knife", Color(255,255,255)) +killicon.Add("explosion", "tdmg/hud/explosion", Color(255,255,255)) + +local function AddKillfeedEntry(attacker, inflictor, killed) + if !IsValid(killed) then return end + + local entry = vgui.Create("DPanel", killfeed) + entry:SetSize(200, 30) + entry:Dock(TOP) + entry:DockMargin(5, 5, 5, 0) + entry.Paint = function(self, w, h) end + + local color1 = Color(255, 255, 255) + local name = "" + + if IsValid(attacker) and attacker != killed then + if attacker:IsPlayer() then + name = attacker:Nick() + color1 = team.GetColor(attacker:Team()) + elseif attacker:GetNWFloat('Team') then + name = nametab[attacker:GetClass()] or attacker.PrintName or attacker:GetClass() + color1 = team.GetColor(attacker:GetNWFloat('Team')) + else + name = nametab[attacker:GetClass()] or attacker.PrintName or attacker:GetClass() + color1 = Color(200,200,200) + end + local attackerLabel = vgui.Create("DLabel", entry) + attackerLabel:SetText(name.." ") + attackerLabel:SetFont("TDMG_SmallFont1") + attackerLabel:SetColor(color1) + attackerLabel:SizeToContents() + attackerLabel:Dock(LEFT) + end + + local inflictorLabel = vgui.Create("DKillIcon", entry) + inflictorLabel:SetPos(entry:GetPos()) + inflictorLabel:SetName(inflictor) + inflictorLabel:SizeToContents() + inflictorLabel:Dock(LEFT) + + if killed:IsPlayer() then + name = killed:Nick() + color1 = team.GetColor(killed:Team()) + else + name = killed:GetPrintName() + color1 = Color(200,200,200) + end + local killedLabel = vgui.Create("DLabel", entry) + killedLabel:SetText(" "..name) + killedLabel:SetFont("TDMG_SmallFont1") + killedLabel:SetColor(color1) + killedLabel:SizeToContents() + killedLabel:Dock(LEFT) + + timer.Simple(10, function() + if !IsValid(entry) then return end + entry:AlphaTo(0, 1, 0, function(ad, pnl) + pnl:Remove() + end) + end) +end + +net.Receive("COD.Killfeed", function() + local tab = net.ReadTable() + local att = tab.attacker + local inf = tab.inflictor + local tar = tab.target + AddKillfeedEntry(att, inf, tar) +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/client/cl_menu.lua b/gamemodes/cod_custom/gamemode/client/cl_menu.lua new file mode 100644 index 0000000..baeb378 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/client/cl_menu.lua @@ -0,0 +1,1233 @@ +local butbg_mat = Material("tdmg/hud/button_bg.png") +local grad_mat = Material("tdmg/hud/gradient.png") +local rnd_mat = Material("tdmg/hud/rnd.png") +local mainpanel = nil + +CreateConVar("cod_music_enable", 1, FCVAR_ARCHIVE, "", 0, 1) +CreateConVar("cod_announcer_enable", 1, FCVAR_ARCHIVE, "", 0, 1) +CreateConVar("cod_killcam_enable", 1, FCVAR_ARCHIVE, "", 0, 1) +CreateConVar("cod_custom_music_enable", 0, FCVAR_ARCHIVE, "", 0, 1) + +function COD:OpenSettingsMenu() + if IsValid(mainpanel) then return end + + mainpanel = vgui.Create("DFrame") + mainpanel:SetSize(ScrW(), ScrH()) + mainpanel:SetTitle("") + mainpanel:SetDraggable(false) + mainpanel:MakePopup() + mainpanel:ShowCloseButton(false) + mainpanel.OnRemove = function() + COD.HideHUD = false + end + mainpanel.Paint = function(self, w, h) + surface.SetDrawColor(0,0,0,140) + surface.DrawRect(0, 0, w, h) + + COD.HideHUD = true + end + + local secpanel = vgui.Create("DPanel", mainpanel) + secpanel:SetPos(100, 0) + secpanel:SetSize(300, ScrH()) + secpanel.Paint = function(self, w, h) + gui.HideGameUI() + + surface.SetDrawColor(0,0,0,220) + surface.DrawRect(0, 0, w, h) + + draw.SimpleText(COD.Language["main_menu_3"], "TDMG_Other_Big2", w/2, 20, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + + local scr1 = vgui.Create("DScrollPanel", secpanel) + scr1:Dock(FILL) + + local main_menu_buttons = { + { + Name = COD.Language["main_menu_settings_1"], + ConVar = "cod_music_enable", + CustomDock = {150,5}, + ClickFunc = function(self) + local bool = GetConVar("cod_music_enable"):GetBool() + if bool then + RunConsoleCommand("cod_music_enable", 0) + else + RunConsoleCommand("cod_music_enable", 1) + end + surface.PlaySound("tdmg/ui/ui_click.wav") + end, + }, + { + Name = COD.Language["main_menu_settings_cm"], + ConVar = "cod_custom_music_enable", + ClickFunc = function(self) + local bool = GetConVar("cod_custom_music_enable"):GetBool() + if bool then + RunConsoleCommand("cod_custom_music_enable", 0) + else + RunConsoleCommand("cod_custom_music_enable", 1) + end + surface.PlaySound("tdmg/ui/ui_click.wav") + end, + }, + { + Name = COD.Language["main_menu_settings_2"], + ConVar = "cod_announcer_enable", + ClickFunc = function(self) + local bool = GetConVar("cod_announcer_enable"):GetBool() + if bool then + RunConsoleCommand("cod_announcer_enable", 0) + else + RunConsoleCommand("cod_announcer_enable", 1) + end + surface.PlaySound("tdmg/ui/ui_click.wav") + end, + }, + { + Name = COD.Language["main_menu_settings_3"], + ConVar = "cod_killcam_enable", + ClickFunc = function(self) + local bool = GetConVar("cod_killcam_enable"):GetBool() + if bool then + RunConsoleCommand("cod_killcam_enable", 0) + else + RunConsoleCommand("cod_killcam_enable", 1) + end + surface.PlaySound("tdmg/ui/ui_click.wav") + end, + }, + { + Name = COD.Language["main_menu_settings_4"], + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + mainpanel:Remove() + gui.OpenURL("https://discord.gg/M49ewrbmFn") + end, + }, + { + Name = COD.Language["main_menu_loadout_7"], + CustomDock = {50,5}, + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + mainpanel:Remove() + COD:OpenMainMenu() + end, + }, + } + for k, v in ipairs(main_menu_buttons) do + local but = scr1:Add("DButton") + but:SetText("") + but:Dock( TOP ) + but:SetSize(0, 40) + but:DockMargin(10, 0, 10, 5) + if v.CustomDock then + but:DockMargin(10, v.CustomDock[1], 10, v.CustomDock[2]) + end + but.DoClick = v.ClickFunc + but.Paint = function(self, w, h) + local hov = self:IsHovered() + if hov then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(255,255,255,200) + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(150,150,150,200) + surface.DrawTexturedRect(0, 0, w, h) + end + local convar_text = "" + if v.ConVar then + local bool = GetConVar(v.ConVar):GetBool() + if bool then + convar_text = "ON" + else + convar_text = "OFF" + end + end + draw.SimpleText(v.Name..convar_text, "TDMG_Other_Medium2", w/2, h/2-2, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + but.OnCursorEntered = function() + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + end +end + +function COD:OpenMainMenu() + if IsValid(mainpanel) then return end + + mainpanel = vgui.Create("DFrame") + mainpanel:SetSize(ScrW(), ScrH()) + mainpanel:SetTitle("") + mainpanel:SetDraggable(false) + mainpanel:MakePopup() + mainpanel:ShowCloseButton(false) + mainpanel.OnRemove = function() + COD.HideHUD = false + end + mainpanel.Paint = function(self, w, h) + surface.SetDrawColor(0,0,0,140) + surface.DrawRect(0, 0, w, h) + + COD.HideHUD = true + end + + local secpanel = vgui.Create("DPanel", mainpanel) + secpanel:SetPos(100, 0) + secpanel:SetSize(300, ScrH()) + secpanel.Paint = function(self, w, h) + gui.HideGameUI() + + surface.SetDrawColor(0,0,0,220) + surface.DrawRect(0, 0, w, h) + + draw.SimpleText("Call of Duty", "TDMG_Other_Big2", w/2, 20, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + + local scr1 = vgui.Create("DScrollPanel", secpanel) + scr1:Dock(FILL) + + local main_menu_buttons = { + { + Name = COD.Language["main_menu_1"], + CustomDock = {150,5}, + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + mainpanel:Remove() + end, + }, + { + Name = COD.Language["main_menu_2"], + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + mainpanel:Remove() + COD:OpenLoadoutMenu() + end, + }, + { + Name = COD.Language["main_menu_3"], + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + mainpanel:Remove() + COD:OpenSettingsMenu() + end, + }, + { + Name = COD.Language["main_menu_4"], + CustomDock = {50,5}, + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + mainpanel:Remove() + gui.ActivateGameUI() + end, + }, + } + for k, v in ipairs(main_menu_buttons) do + local but = scr1:Add("DButton") + but:SetText("") + but:Dock( TOP ) + but:SetSize(0, 40) + but:DockMargin(10, 0, 10, 5) + if v.CustomDock then + but:DockMargin(10, v.CustomDock[1], 10, v.CustomDock[2]) + end + but.DoClick = v.ClickFunc + but.Paint = function(self, w, h) + local hov = self:IsHovered() + if hov then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(255,255,255,200) + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(150,150,150,200) + surface.DrawTexturedRect(0, 0, w, h) + end + draw.SimpleText(v.Name, "TDMG_Other_Medium2", w/2, h/2-2, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + but.OnCursorEntered = function() + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + end +end + +local lastdata = { + p1 = 1, + p2 = 1, + mweapon = {name = "Random", class = "", icon = rnd_mat}, + sweapon = {name = "Random", class = "", icon = rnd_mat}, + ks = {1, 7, 13}, + td = "02", +} +function COD:OpenLoadoutMenu() + if IsValid(mainpanel) then return end + + mainpanel = vgui.Create("DFrame") + mainpanel:SetSize(ScrW(), ScrH()) + mainpanel:SetTitle("") + mainpanel:SetDraggable(false) + mainpanel:MakePopup() + mainpanel:ShowCloseButton(false) + mainpanel.OnRemove = function() + COD.HideHUD = false + end + mainpanel.Paint = function(self, w, h) + surface.SetDrawColor(0,0,0,140) + surface.DrawRect(0, 0, w, h) + + COD.HideHUD = true + end + + local secpanel = vgui.Create("DPanel", mainpanel) + secpanel:SetPos(100, 0) + secpanel:SetSize(300, ScrH()) + secpanel.Paint = function(self, w, h) + gui.HideGameUI() + + surface.SetDrawColor(0,0,0,220) + surface.DrawRect(0, 0, w, h) + + draw.SimpleText(COD.Language["main_menu_loadout"], "TDMG_Other_Big2", w/2, 20, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + + local scr1 = vgui.Create("DScrollPanel", secpanel) + scr1:Dock(FILL) + + local mainweapon = lastdata.mweapon + local secweapon = lastdata.sweapon + local perk1 = lastdata.p1 + local perk2 = lastdata.p2 + local tabk = lastdata.ks + local takedown = lastdata.td + + local function SaveDataToLast() + lastdata = { + p1 = perk1, + p2 = perk2, + mweapon = mainweapon, + sweapon = secweapon, + ks = tabk, + td = takedown, + } + end + + local loadout_panels = {} + local loadout_buttons = { + { + Name = COD.Language["main_menu_loadout_1"], + CustomDock = {150,5}, + CreateFunc = function(self) + local tab = {} + table.Merge(tab, COD.Loadout["SMGs"]) + table.Merge(tab, COD.Loadout["LMGs"]) + table.Merge(tab, COD.Loadout["Assault Rifles"]) + table.Merge(tab, COD.Loadout["Sniper Rifles"]) + table.Merge(tab, COD.Loadout["Marksman Rifles"]) + table.Merge(tab, COD.Loadout["Shotguns"]) + tab["Random"] = { + class = "", + icon = rnd_mat, + } + + local df1 = vgui.Create("DPanel", self) + df1:SetPos(400, 100) + df1:SetSize(350, 350) + df1.Paint = function(self, w, h) + if mainweapon.icon != "" then + surface.SetMaterial(mainweapon.icon) + surface.SetDrawColor(255,255,255) + surface.DrawTexturedRect(w/2-75, 100, 150, 150) + + surface.SetDrawColor(255,255,255) + surface.DrawOutlinedRect(w/2-75, 100, 150, 150, 2) + + draw.SimpleText(COD.Language["main_menu_loadout_wep"], "TDMG_MediumFont1", w/2, 10, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + draw.SimpleText(mainweapon.name, "TDMG_MediumFont1", w/2, h-10, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + end + end + + local df2 = vgui.Create("DPanel", self) + df2:SetPos(0, 60) + df2:SetSize(350, 540) + df2.Paint = function(self, w, h) + surface.SetDrawColor(20,20,20,200) + surface.DrawRect(0, 0, w, h) + end + + local DScrollPanel = vgui.Create( "DScrollPanel", df2 ) + DScrollPanel:Dock( FILL ) + + local down = -1 + for k, v in pairs(tab) do + down = down+1 + local DButton = DScrollPanel:Add( "DButton" ) + DButton:SetText("") + DButton:SetSize(325, 60) + DButton:SetPos(5, 65*down) + DButton.Paint = function(self, w, h) + if mainweapon.name == k then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(250,250,250,200) + surface.DrawTexturedRect(0, 0, w, h) + elseif self:IsHovered() then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(100,100,100,200) + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(50,50,50,200) + surface.DrawTexturedRect(0, 0, w, h) + end + + surface.SetDrawColor(255,255,255) + surface.SetMaterial(v.icon) + surface.DrawTexturedRect(12, 0, 64, 64) + + draw.SimpleText(k, "TDMG_MediumFont1", 96, h/2, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + end + DButton.DoClick = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + mainweapon = {name = k, class = v.class, icon = v.icon} + end + DButton.OnCursorEntered = function() + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + end + + end, + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + for k, v in ipairs(loadout_panels) do + if self.ID == v.ID then + v:Show() + else + v:Hide() + end + end + end, + }, + { + Name = COD.Language["main_menu_loadout_2"], + CreateFunc = function(self) + local tab = {} + table.Merge(tab, COD.Loadout["Pistols"]) + table.Merge(tab, COD.Loadout["Others"]) + tab["Random"] = { + class = "", + icon = Material("tdmg/hud/rnd.png"), + } + + local df1 = vgui.Create("DPanel", self) + df1:SetPos(400, 100) + df1:SetSize(350, 350) + df1.Paint = function(self, w, h) + if secweapon.icon != "" then + surface.SetMaterial(secweapon.icon) + surface.SetDrawColor(255,255,255) + surface.DrawTexturedRect(w/2-75, 100, 150, 150) + + surface.SetDrawColor(255,255,255) + surface.DrawOutlinedRect(w/2-75, 100, 150, 150, 2) + + draw.SimpleText(COD.Language["main_menu_loadout_wep"], "TDMG_MediumFont1", w/2, 10, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + draw.SimpleText(secweapon.name, "TDMG_MediumFont1", w/2, h-10, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + end + end + + local df2 = vgui.Create("DPanel", self) + df2:SetPos(0, 60) + df2:SetSize(350, 540) + df2.Paint = function(self, w, h) + surface.SetDrawColor(20,20,20,200) + surface.DrawRect(0, 0, w, h) + end + + local DScrollPanel = vgui.Create( "DScrollPanel", df2 ) + DScrollPanel:Dock( FILL ) + + local down = -1 + for k, v in pairs(tab) do + down = down+1 + local DButton = DScrollPanel:Add( "DButton" ) + DButton:SetText("") + DButton:SetSize(325, 60) + DButton:SetPos(5, 65*down) + DButton.Paint = function(self, w, h) + if secweapon.name == k then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(250,250,250,200) + surface.DrawTexturedRect(0, 0, w, h) + elseif self:IsHovered() then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(100,100,100,200) + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(50,50,50,200) + surface.DrawTexturedRect(0, 0, w, h) + end + + surface.SetDrawColor(255,255,255) + surface.SetMaterial(v.icon) + surface.DrawTexturedRect(12, 0, 64, 64) + + draw.SimpleText(k, "TDMG_MediumFont1", 96, h/2, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + end + DButton.DoClick = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + secweapon = {name = k, class = v.class, icon = v.icon} + end + DButton.OnCursorEntered = function() + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + end + + end, + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + for k, v in ipairs(loadout_panels) do + if self.ID == v.ID then + v:Show() + else + v:Hide() + end + end + end, + }, + { + Name = COD.Language["main_menu_loadout_3"], + CreateFunc = function(self) + local tab = COD.Killstreaks + local choose = 3-#tabk + local mks = 0 + + local df1 = vgui.Create("DPanel", self) + df1:SetPos(0, 300) + df1:SetSize(800, 240) + df1.Paint = function(self, w, h) + if mks > 0 then + surface.SetDrawColor(255,255,255) + surface.SetMaterial(tab[mks].icon) + surface.DrawTexturedRect(25, 5, 100, 100) + + draw.SimpleText(tab[mks].name, "TDMG_MediumFont1", 25, 110, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + draw.SimpleText(tab[mks].desc, "TDMG_SmallFont2", 25, 140, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + end + + draw.SimpleText(COD.Language["main_menu_loadout_3_1"]..#tabk.."/3", "TDMG_SmallFont1", 25, h, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM) + end + + local df2 = vgui.Create("DPanel", self) + df2:SetPos(0, 60) + df2:SetSize(800, 240) + df2.Paint = function(self, w, h) + surface.SetDrawColor(20,20,20,200) + surface.DrawRect(0, 0, w, h) + end + + local dhs = vgui.Create( "DHorizontalScroller", df2 ) + dhs:Dock( FILL ) + dhs:SetOverlap(-ScreenScale(2)) + + local tab = COD.Killstreaks + for i=1,#tab do + local DermaButton = dhs:Add("DButton") + DermaButton:SetText("") + DermaButton:SetPos( 185*i-180, 0 ) + DermaButton:SetSize( 180, 0 ) + DermaButton:Dock(LEFT) + DermaButton:DockMargin(0, 0, 5, 20) + dhs:AddPanel(DermaButton) + DermaButton.ks = i + DermaButton.enabled = false + if table.HasValue(tabk, DermaButton.ks) then + DermaButton.enabled = true + end + DermaButton.DoClick = function(self) + if (tabk[1] and tab[tabk[1]].kills == tab[self.ks].kills or tabk[2] and tab[tabk[2]].kills == tab[self.ks].kills or tabk[3] and tab[tabk[3]].kills == tab[self.ks].kills) and not table.HasValue(tabk, self.ks) then return end + if not table.HasValue(tabk, self.ks) then + if choose > 0 then + table.insert(tabk, self.ks) + choose = choose - 1 + self.enabled = true + surface.PlaySound("tdmg/ui/ui_click.wav") + end + else + surface.PlaySound("tdmg/ui/ui_click.wav") + table.RemoveByValue(tabk, self.ks) + choose = choose + 1 + self.enabled = false + end + end + DermaButton.Paint = function(self, w, h) + if self.enabled then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(250,250,250,200) + surface.DrawTexturedRect(0, 0, w, h) + elseif (tabk[1] and tab[tabk[1]].kills == tab[self.ks].kills or tabk[2] and tab[tabk[2]].kills == tab[self.ks].kills or tabk[3] and tab[tabk[3]].kills == tab[self.ks].kills) and not table.HasValue(tabk, self.ks) then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(255,0,0,200) + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(50,50,50,200) + surface.DrawTexturedRect(0, 0, w, h) + end + + surface.SetDrawColor(255,255,255) + surface.SetMaterial(tab[i].icon) + surface.DrawTexturedRect(40, 20, 100, 100) + + draw.SimpleText(tab[i].name, "TDMG_SmallFont1", w/2, h-60, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + draw.SimpleText(tab[i].kills, "TDMG_SmallFont2", w/2, h-20, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + end + DermaButton.OnCursorExited = function() + mks = 0 + end + DermaButton.OnCursorEntered = function(self) + mks = self.ks + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + end + + end, + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + for k, v in ipairs(loadout_panels) do + if self.ID == v.ID then + v:Show() + else + v:Hide() + end + end + end, + }, + { + Name = COD.Language["main_menu_loadout_4"], + CreateFunc = function(self) + + local tab1 = COD.Perks["Type1"] + local tab2 = COD.Perks["Type2"] + local mks = 0 + local mks_type = 0 + + local df1 = vgui.Create("DPanel", self) + df1:SetPos(0, 300) + df1:SetSize(800, 240) + df1.Paint = function(self, w, h) + if mks > 0 then + if mks_type == 1 then + surface.SetDrawColor(255,255,255) + surface.SetMaterial(tab1[mks].icon) + surface.DrawTexturedRect(25, 5, 100, 100) + + draw.SimpleText(tab1[mks].name, "TDMG_MediumFont1", 25, 110, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + draw.SimpleText(tab1[mks].desc, "TDMG_SmallFont2", 25, 140, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + else + surface.SetDrawColor(255,255,255) + surface.SetMaterial(tab2[mks].icon) + surface.DrawTexturedRect(25, 5, 100, 100) + + draw.SimpleText(tab2[mks].name, "TDMG_MediumFont1", 25, 110, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + draw.SimpleText(tab2[mks].desc, "TDMG_SmallFont2", 25, 140, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + end + end + draw.SimpleText(COD.Language["main_menu_loadout_wep"].." "..tab1[perk1].name..", "..tab2[perk2].name, "TDMG_SmallFont1", 25, h-10, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM) + end + + local df2 = vgui.Create("DPanel", self) + df2:SetPos(0, 60) + df2:SetSize(800, 240) + df2.Paint = function(self, w, h) + surface.SetDrawColor(20,20,20,200) + surface.DrawRect(0, 0, w, h) + end + + local dhs = vgui.Create( "DHorizontalScroller", df2 ) + dhs:Dock( FILL ) + dhs:SetOverlap(-ScreenScale(4)) + + for i=1,#tab1 do + local DermaButton = dhs:Add("DButton") + DermaButton:SetText("") + DermaButton:SetPos( 185*i-180, 0 ) + DermaButton:SetSize( 180, 0 ) + DermaButton:Dock(LEFT) + DermaButton:DockMargin(0, 0, 5, 20) + dhs:AddPanel(DermaButton) + DermaButton.perk = i + DermaButton.enabled = false + DermaButton.DoClick = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + perk1 = self.perk + end + DermaButton.Paint = function(self, w, h) + if perk1 == self.perk then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(250,250,250,200) + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(50,50,0,200) + surface.DrawTexturedRect(0, 0, w, h) + end + + surface.SetDrawColor(255,255,255) + surface.SetMaterial(tab1[i].icon) + surface.DrawTexturedRect(40, 20, 100, 100) + + draw.SimpleText(tab1[i].name, "TDMG_SmallFont1", w/2, h-60, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + end + DermaButton.OnCursorExited = function() + mks = 0 + end + DermaButton.OnCursorEntered = function(self) + mks = self.perk + mks_type = 1 + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + end + + for i=1,#tab2 do + local DermaButton = dhs:Add("DButton") + DermaButton:SetText("") + DermaButton:SetPos( 185*i-180, 0 ) + DermaButton:SetSize( 180, 0 ) + DermaButton:Dock(LEFT) + DermaButton:DockMargin(0, 0, 5, 20) + if i == 1 then + DermaButton:DockMargin(50, 0, 5, 20) + end + dhs:AddPanel(DermaButton) + DermaButton.perk = i + DermaButton.enabled = false + DermaButton.DoClick = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + perk2 = self.perk + end + DermaButton.Paint = function(self, w, h) + if perk2 == self.perk then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(250,250,250,200) + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(50,50,50,200) + surface.DrawTexturedRect(0, 0, w, h) + end + + surface.SetDrawColor(255,255,255) + surface.SetMaterial(tab2[i].icon) + surface.DrawTexturedRect(40, 20, 100, 100) + + draw.SimpleText(tab2[i].name, "TDMG_SmallFont1", w/2, h-60, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + end + DermaButton.OnCursorExited = function() + mks = 0 + end + DermaButton.OnCursorEntered = function(self) + mks = self.perk + mks_type = 2 + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + end + + end, + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + for k, v in ipairs(loadout_panels) do + if self.ID == v.ID then + v:Show() + else + v:Hide() + end + end + end, + }, + { + Name = COD.Language["main_menu_loadout_5"], + CreateFunc = function(self) + + local tab = COD.Takedowns + + local df2 = vgui.Create("DPanel", self) + df2:SetPos(0, 60) + df2:SetSize(800, 240) + df2.Paint = function(self, w, h) + surface.SetDrawColor(20,20,20,200) + surface.DrawRect(0, 0, w, h) + end + + local df1 = vgui.Create("DPanel", self) + df1:SetPos(0, 300) + df1:SetSize(800, 160) + df1.Paint = function(self, w, h) + draw.SimpleText(COD.Language["main_menu_loadout_wep"].." "..COD.Takedowns[takedown].name, "TDMG_MediumFont1", 25, h-10, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM) + end + + local dhs = vgui.Create( "DHorizontalScroller", df2 ) + dhs:Dock( FILL ) + dhs:SetOverlap(-ScreenScale(2)) + + for i, v in SortedPairs(COD.Takedowns) do + local DermaButton = dhs:Add("DButton") + DermaButton:SetText("") + DermaButton:SetPos( 185*i-180, 0 ) + DermaButton:SetSize( 180, 0 ) + DermaButton:Dock(LEFT) + DermaButton:DockMargin(0, 0, 5, 20) + dhs:AddPanel(DermaButton) + DermaButton.td = COD.Takedowns[i] + DermaButton.DoClick = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + takedown = i + end + DermaButton.Paint = function(self, w, h) + if takedown == i then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(250,250,250,200) + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(50,50,0,200) + surface.DrawTexturedRect(0, 0, w, h) + end + end + DermaButton.OnCursorEntered = function(self) + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + + local icon = vgui.Create("DModelPanel", DermaButton) + icon:Dock(FILL) + icon:SetModel("models/tdmg/pm/kortac_1_1_pm.mdl") + local seq = "execution_"..i.."_attacker_stand" + function icon:LayoutEntity(ent) + ent:SetSequence(seq) + if ent:GetCycle() >= 1 then + ent:SetCycle(0) + end + icon:RunAnimation() + end + + local icon = vgui.Create("DModelPanel", DermaButton) + icon:Dock(FILL) + icon:SetModel("models/tdmg/pm/specgru_milsim_1_1_pm.mdl") + local seq = "execution_"..i.."_victim_stand" + function icon:LayoutEntity(ent) + ent:SetSequence(seq) + if ent:GetCycle() >= 1 then + ent:SetCycle(0) + end + icon:RunAnimation() + end + + local b1 = vgui.Create("DButton", DermaButton) + b1:SetText("") + b1:Dock(FILL) + b1.td = COD.Takedowns[i] + b1.DoClick = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + takedown = i + end + b1.Paint = function(self, w, h) + draw.SimpleText(v.name, "TDMG_SmallFont2", w/2, h-20, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + b1.OnCursorEntered = function(self) + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + end + + end, + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + for k, v in ipairs(loadout_panels) do + if self.ID == v.ID then + v:Show() + else + v:Hide() + end + end + end, + }, + { + Name = COD.Language["main_menu_loadout_6"], + CustomDock = {50,5}, + ClickFunc = function(self) + surface.PlaySound("tdmg/ui_apply.wav") + SaveDataToLast() + + if not tabk[1] then + tabk[1] = 0 + end + if not tabk[2] then + tabk[2] = 0 + end + if not tabk[3] then + tabk[3] = 0 + end + table.sort(tabk, function(a,b) return a < b end) + surface.PlaySound("tdmg/ui_apply.wav") + + net.Start("COD.KillstreakChoose") + net.WriteTable(tabk) + net.WriteString(mainweapon.class) + net.WriteString(secweapon.class) + net.SendToServer() + + net.Start("COD.PerksChoose") + net.WriteFloat(perk1) + net.WriteFloat(perk2) + net.SendToServer() + + RunConsoleCommand("cod_givetakedown", takedown) + end, + }, + { + Name = COD.Language["main_menu_loadout_7"], + ClickFunc = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + mainpanel:Remove() + COD:OpenMainMenu() + end, + }, + } + for k, v in ipairs(loadout_buttons) do + local but = scr1:Add("DButton") + but:SetText("") + but:Dock( TOP ) + but:SetSize(0, 40) + but:DockMargin(10, 0, 10, 5) + if v.CustomDock then + but:DockMargin(10, v.CustomDock[1], 10, v.CustomDock[2]) + end + but.ID = k + but.DoClick = v.ClickFunc + but.Paint = function(self, w, h) + local hov = self:IsHovered() + if hov then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(255,255,255,200) + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(150,150,150,200) + surface.DrawTexturedRect(0, 0, w, h) + end + draw.SimpleText(v.Name, "TDMG_Other_Medium2", w/2, h/2-2, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + but.OnCursorEntered = function() + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + end + + for k, v in ipairs(loadout_buttons) do + if v.CreateFunc then + local lpanel = vgui.Create("DPanel", mainpanel) + lpanel:SetPos((ScrW()-400)/2, ScrH()/2-300) + lpanel:SetSize(800, 600) + lpanel.ID = k + lpanel:Hide() + v.CreateFunc(lpanel) + table.insert(loadout_panels, lpanel) + lpanel.Paint = function(self, w, h) + surface.SetDrawColor(0,0,0,220) + surface.DrawRect(0, 0, w, h) + + surface.SetDrawColor(150,150,150,200) + surface.SetMaterial(butbg_mat) + surface.DrawTexturedRect(-50, 0, w+100, 60) + + draw.SimpleText(v.Name, "TDMG_Other_Big1", 10, -5, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + end + end + end +end + +hook.Add("Think", "TDMFuckOpenMenu", function(ply, but) + if input.IsKeyDown(KEY_ESCAPE) then + COD:OpenMainMenu() + end +end) + +net.Receive("COD.SendAdminStatus", function() + COD.IsAdmin = net.ReadBool() +end) + +function COD:OpenAdminMenu() + if not COD.IsAdmin then return end + if IsValid(mainpanel) then return end + + mainpanel = vgui.Create("DFrame") + mainpanel:SetSize(ScrW(), ScrH()) + mainpanel:SetTitle("") + mainpanel:SetDraggable(false) + mainpanel:MakePopup() + mainpanel:ShowCloseButton(false) + mainpanel.OnRemove = function() + COD.HideHUD = false + end + mainpanel.Paint = function(self, w, h) + surface.SetDrawColor(0,0,0,140) + surface.DrawRect(0, 0, w, h) + COD.HideHUD = true + end + + local secpanel = vgui.Create("DPanel", mainpanel) + secpanel:SetPos(100, 0) + secpanel:SetSize(300, ScrH()) + secpanel.Paint = function(self, w, h) + gui.HideGameUI() + surface.SetDrawColor(0,0,0,220) + surface.DrawRect(0, 0, w, h) + draw.SimpleText(COD.Language["admin_menu_title"], "TDMG_Other_Big2", w/2, 20, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + + local scr1 = vgui.Create("DScrollPanel", secpanel) + scr1:Dock(FILL) + + local gamemodes = { + {ID = 1, Name = "Team Deathmatch"}, + {ID = 2, Name = "Invasion"}, + {ID = 3, Name = "Knock Out"}, + {ID = 4, Name = "Infected"}, + {ID = 5, Name = "Domination"}, + } + + for _, v in ipairs(gamemodes) do + local but = scr1:Add("DButton") + but:SetText("") + but:Dock(TOP) + but:SetSize(0, 50) + but:DockMargin(10, 0, 10, 5) + but.DoClick = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + RunConsoleCommand("cod_changegamemode", v.ID) + mainpanel:Remove() + end + but.Paint = function(self, w, h) + local hov = self:IsHovered() + if hov then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(255,200,0,200) + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(150,150,150,200) + surface.DrawTexturedRect(0, 0, w, h) + end + draw.SimpleText(v.Name, "TDMG_Other_Medium2", w/2, h/2-2, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + but.OnCursorEntered = function() + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + end + + local backbut = scr1:Add("DButton") + backbut:SetText("") + backbut:Dock(TOP) + backbut:SetSize(0, 40) + backbut:DockMargin(10, 20, 10, 5) + backbut.DoClick = function(self) + surface.PlaySound("tdmg/ui/ui_click.wav") + mainpanel:Remove() + end + backbut.Paint = function(self, w, h) + local hov = self:IsHovered() + if hov then + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(255,255,255,200) + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + surface.SetDrawColor(150,150,150,200) + surface.DrawTexturedRect(0, 0, w, h) + end + draw.SimpleText("Back", "TDMG_Other_Medium2", w/2, h/2-2, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + backbut.OnCursorEntered = function() + surface.PlaySound("tdmg/ui/ui_hover.wav") + end +end + +hook.Add("Think", "CODAdminMenu", function() + if input.IsKeyDown(KEY_F4) and not CODF4Pressed then + CODF4Pressed = true + COD:OpenAdminMenu() + elseif not input.IsKeyDown(KEY_F4) then + CODF4Pressed = false + end +end) + +net.Receive("COD.GameStartedStatus", function() + COD.GameStarted = net.ReadBool() +end) + +hook.Add("Initialize", "CODRequestGameStatus", function() + net.Start("COD.RequestGameStatus") + net.SendToServer() +end) + +function COD:OpenLobbyMenu() + if COD.GameStarted then return end + if IsValid(mainpanel) then return end + + mainpanel = vgui.Create("DFrame") + mainpanel:SetSize(ScrW(), ScrH()) + mainpanel:SetTitle("") + mainpanel:SetDraggable(false) + mainpanel:MakePopup() + mainpanel:ShowCloseButton(false) + mainpanel.OnRemove = function() + COD.HideHUD = false + end + mainpanel.Paint = function(self, w, h) + surface.SetDrawColor(0,0,0,180) + surface.DrawRect(0, 0, w, h) + COD.HideHUD = true + end + + local contentW = 800 + local contentH = 600 + local contentX = (ScrW() - contentW) / 2 + local contentY = (ScrH() - contentH) / 2 + + local content = vgui.Create("DPanel", mainpanel) + content:SetPos(contentX, contentY) + content:SetSize(contentW, contentH) + content.Paint = function(self, w, h) + surface.SetDrawColor(20,20,20,230) + surface.DrawRect(0, 0, w, h) + surface.SetDrawColor(150,150,150,200) + surface.SetMaterial(butbg_mat) + surface.DrawTexturedRect(-50, 0, w+100, 60) + + draw.SimpleText("LOBBY", "TDMG_Other_Big2", w/2, -5, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP) + end + + local leftPanel = vgui.Create("DPanel", content) + leftPanel:SetPos(0, 60) + leftPanel:SetSize(380, contentH - 60) + leftPanel.Paint = function(self, w, h) + surface.SetDrawColor(30,30,30,200) + surface.DrawRect(0, 0, w, h) + draw.SimpleText("Players Online", "TDMG_MediumFont1", 10, 10, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + end + + local playerList = vgui.Create("DScrollPanel", leftPanel) + playerList:SetPos(10, 40) + playerList:SetSize(360, contentH - 160) + + local function UpdatePlayerList() + if not IsValid(playerList) then return end + playerList:Clear() + for _, ply in ipairs(player.GetAll()) do + local plyPanel = playerList:Add("DPanel") + plyPanel:SetSize(340, 40) + plyPanel:DockMargin(0, 0, 0, 5) + plyPanel.Paint = function(self, w, h) + local team = ply:Team() + local teamColor = team == 1 and Color(85,165,95) or team == 2 and Color(195,165,85) or Color(128,128,128) + surface.SetDrawColor(teamColor) + surface.DrawRect(0, 0, 5, h) + draw.SimpleText(ply:Nick(), "TDMG_SmallFont1", 15, 10, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + draw.SimpleText(team == 1 and "SpecGru" or team == 2 and "KorTac" or "Spectator", "TDMG_SmallFont2", 15, 25, teamColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + end + end + end + UpdatePlayerList() + + timer.Create("COD.UpdateLobby", 1, 0, UpdatePlayerList) + + local rightPanel = vgui.Create("DPanel", content) + rightPanel:SetPos(390, 60) + rightPanel:SetSize(410, contentH - 60) + rightPanel.Paint = function(self, w, h) + surface.SetDrawColor(30,30,30,200) + surface.DrawRect(0, 0, w, h) + draw.SimpleText("Server Controls", "TDMG_MediumFont1", 10, 10, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP) + end + + local buttons = {} + + if COD.IsAdmin then + table.insert(buttons, { + Name = "Add Bot", + Click = function() + RunConsoleCommand("refoselbots_add", "1") + surface.PlaySound("tdmg/ui/ui_click.wav") + end + }) + table.insert(buttons, { + Name = "Add 5 Bots", + Click = function() + RunConsoleCommand("refoselbots_add", "5") + surface.PlaySound("tdmg/ui/ui_click.wav") + end + }) + table.insert(buttons, { + Name = "Kick All Bots", + Click = function() + RunConsoleCommand("refoselbots_kick", "all") + surface.PlaySound("tdmg/ui/ui_click.wav") + end + }) + table.insert(buttons, { + Name = "Start Match", + Click = function() + RunConsoleCommand("cod_changegamemode", COD.DataTable["Gamemode"] or 1) + surface.PlaySound("tdmg/ui_apply.wav") + mainpanel:Remove() + end, + IsPrimary = true + }) + end + + table.insert(buttons, { + Name = "Close", + Click = function() + surface.PlaySound("tdmg/ui/ui_click.wav") + mainpanel:Remove() + end + }) + + local butY = 50 + for _, v in ipairs(buttons) do + local but = vgui.Create("DButton", rightPanel) + but:SetText("") + but:SetPos(10, butY) + but:SetSize(390, 45) + but.DoClick = v.Click + but.Paint = function(self, w, h) + local hov = self:IsHovered() + if v.IsPrimary then + surface.SetMaterial(butbg_mat) + if hov then + surface.SetDrawColor(100,200,100,200) + else + surface.SetDrawColor(50,150,50,200) + end + surface.DrawTexturedRect(0, 0, w, h) + else + surface.SetMaterial(butbg_mat) + if hov then + surface.SetDrawColor(255,255,255,200) + else + surface.SetDrawColor(150,150,150,200) + end + surface.DrawTexturedRect(0, 0, w, h) + end + draw.SimpleText(v.Name, "TDMG_Other_Medium2", w/2, h/2-2, color_white, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + but.OnCursorEntered = function() + surface.PlaySound("tdmg/ui/ui_hover.wav") + end + butY = butY + 55 + end +end + +hook.Add("Initialize", "CODLobbyInit", function() + hook.Add("Think", "CODLobbyCheck", function() + if not COD.GameStarted and not IsValid(mainpanel) and LocalPlayer():Team() == 0 then + COD:OpenLobbyMenu() + end + end) +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/client/cl_outline.lua b/gamemodes/cod_custom/gamemode/client/cl_outline.lua new file mode 100644 index 0000000..c73200a --- /dev/null +++ b/gamemodes/cod_custom/gamemode/client/cl_outline.lua @@ -0,0 +1,164 @@ +OUTLINE_MODE_BOTH = 0 +OUTLINE_MODE_NOTVISIBLE = 1 +OUTLINE_MODE_VISIBLE = 2 + +local istable = istable +local render = render +local LocalPlayer = LocalPlayer +local Material = Material +local CreateMaterial = CreateMaterial +local hook = hook +local cam = cam +local ScrW = ScrW +local ScrH = ScrH +local IsValid = IsValid +local surface = surface + +module( "outline", package.seeall ) + +local List, ListSize = {}, 0 +local RenderEnt = NULL + +local OutlineMatSettings = { + [ "$ignorez" ] = 1, + [ "$alphatest" ] = 1 +} + +local CopyMat = Material( "pp/copy" ) +local OutlineMat = CreateMaterial( "OutlineMat", "UnlitGeneric", OutlineMatSettings ) +local StoreTexture = render.GetScreenEffectTexture( 0 ) +local DrawTexture = render.GetScreenEffectTexture( 1 ) + +local ENTS = 1 +local COLOR = 2 +local MODE = 3 + +function Add( ents, color, mode ) + + if ( ListSize >= 255 ) then return end --Maximum 255 reference values + if ( !istable( ents ) ) then ents = { ents } end --Support for passing Entity as first argument + if ( ents[ 1 ] == nil ) then return end --Do not pass empty tables + + local t = { + [ ENTS ] = ents, + [ COLOR ] = color, + [ MODE ] = mode or OUTLINE_MODE_BOTH + } + + ListSize = ListSize + 1 + List[ ListSize ] = t +end + +function RenderedEntity() + + return RenderEnt + +end + +local function Render() + local ply = LocalPlayer() + local IsLineOfSightClear = ply.IsLineOfSightClear + + local scene = render.GetRenderTarget() + render.CopyRenderTargetToTexture( StoreTexture ) + + local w = ScrW() + local h = ScrH() + + render.Clear( 0, 0, 0, 0, true, true ) + + render.SetStencilEnable( true ) + cam.IgnoreZ( true ) + render.SuppressEngineLighting( true ) + + render.SetStencilWriteMask( 0xFF ) + render.SetStencilTestMask( 0xFF ) + + render.SetStencilCompareFunction( STENCIL_ALWAYS ) + render.SetStencilFailOperation( STENCIL_KEEP ) + render.SetStencilZFailOperation( STENCIL_REPLACE ) + render.SetStencilPassOperation( STENCIL_REPLACE ) + + cam.Start3D() + + for i = 1, ListSize do + local v = List[ i ] + local mode = v[ MODE ] + local ents = v[ ENTS ] + + render.SetStencilReferenceValue( i ) + + for j = 1, #ents do + local ent = ents[ j ] + + if ( !IsValid( ent ) ) then continue end + + if ( ( mode == OUTLINE_MODE_NOTVISIBLE && IsLineOfSightClear( ply, ent ) ) || ( mode == OUTLINE_MODE_VISIBLE && !IsLineOfSightClear( ply, ent ) ) ) then + continue + end + + RenderEnt = ent + + ent:DrawModel() + end + end + + RenderEnt = NULL + + cam.End3D() + + render.SetStencilCompareFunction( STENCIL_EQUAL ) + + cam.Start2D() + + for i = 1, ListSize do + render.SetStencilReferenceValue( i ) + + surface.SetDrawColor( List[ i ][ COLOR ] ) + surface.DrawRect( 0, 0, w, h ) + end + + cam.End2D() + + render.SuppressEngineLighting( false ) + cam.IgnoreZ( false ) + render.SetStencilEnable( false ) + + render.CopyRenderTargetToTexture( DrawTexture ) + + render.SetRenderTarget( scene ) + CopyMat:SetTexture( "$basetexture", StoreTexture ) + render.SetMaterial( CopyMat ) + render.DrawScreenQuad() + + render.SetStencilEnable( true ) + render.SetStencilReferenceValue( 0 ) + render.SetStencilCompareFunction( STENCIL_EQUAL ) + + OutlineMat:SetTexture( "$basetexture", DrawTexture ) + render.SetMaterial( OutlineMat ) + + render.DrawScreenQuadEx( -1, -1, w ,h ) + render.DrawScreenQuadEx( -1, 0, w, h ) + render.DrawScreenQuadEx( -1, 1, w, h ) + render.DrawScreenQuadEx( 0, -1, w, h ) + render.DrawScreenQuadEx( 0, 1, w, h ) + render.DrawScreenQuadEx( 1, 1, w, h ) + render.DrawScreenQuadEx( 1, 0, w, h ) + render.DrawScreenQuadEx( 1, 1, w, h ) + + render.SetStencilEnable( false ) + +end + +hook.Add( "PostDrawEffects", "RenderOutlines", function() + + hook.Run( "PreDrawOutlines" ) + + if ( ListSize == 0 ) then return end + + Render() + + List, ListSize = {}, 0 + +end ) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/client/cl_radar.lua b/gamemodes/cod_custom/gamemode/client/cl_radar.lua new file mode 100644 index 0000000..46bba9f --- /dev/null +++ b/gamemodes/cod_custom/gamemode/client/cl_radar.lua @@ -0,0 +1,213 @@ +local cachedEntities = {} +local max_radar_distance = 800 +local max_radar_distance_sqr = max_radar_distance ^ 2 +local radar_scale = 2 +local uav_update_rate = 5 +local radarMat = Material("tdmg/hud/radar.png", "noclamp") +local glitchMat = Material("tdmg/hud/glitch.png", "noclamp") +local playerMat = Material("tdmg/hud/radar/player.png", "noclamp") +local enemyColor = Color(200, 50, 0) +local playerColor = Color(0, 150, 250) +local yourColor = Color(255, 255, 0) +local enemyMat = Material("tdmg/hud/radar/enemy.png", "noclamp") +local UAVEnemies = {} + +local function GetFriends() + cachedEntities = {} + for k, v in pairs(ents.FindInSphere(LocalPlayer():GetPos(), max_radar_distance * radar_scale)) do + if !v:IsPlayer() or v == LocalPlayer() or !v:Alive() or v:Team() != LocalPlayer():Team() then continue end + table.insert(cachedEntities, v) + end + return cachedEntities +end + +local function GetEnemies(ismuav) + cachedEntities = {} + for k, v in pairs(ents.FindInSphere(LocalPlayer():GetPos(), max_radar_distance * radar_scale)) do + if !v:IsPlayer() or v == LocalPlayer() or !v:Alive() or v:Team() == LocalPlayer():Team() then continue end + if not ismuav then + table.insert(cachedEntities, {pos = v:GetPos(), alpha = 255}) + UAVEnemies = cachedEntities + else + table.insert(cachedEntities, v) + end + end + return cachedEntities +end + +local function GetEntities() + cachedEntities = {} + for k, v in pairs(ents.FindInSphere(LocalPlayer():GetPos(), max_radar_distance * radar_scale)) do + if v:IsPlayer() or v:Health() <= 0 then continue end + if v:GetNWFloat('Team') > 0 then + table.insert(cachedEntities, v) + end + end + return cachedEntities +end + +local IconsEntityTab = { + ["tdm_harrier"] = {mat = Material("tdmg/hud/radar/jet.png"), rotate = true, size = 32, without_uav = true, bone = "tag_body"}, + ["tdm_infil"] = {mat = Material("tdmg/hud/radar/heli.png"), rotate = true, size = 32, without_uav = true, bone = "tag_body"}, + ["tdm_mi24"] = {mat = Material("tdmg/hud/radar/heli.png"), rotate = true, size = 32, without_uav = true, bone = "Body"}, + ["tdm_ah64"] = {mat = Material("tdmg/hud/radar/heli.png"), rotate = true, size = 32, without_uav = true, bone = "root"}, + ["tdm_drone"] = {mat = Material("tdmg/hud/radar/drone.png"), rotate = true, size = 16, without_uav = false}, + ["tdm_sentry"] = {mat = Material("tdmg/hud/radar/turret.png"), rotate = false, size = 24, without_uav = false}, + ["vj_tdm_k9"] = {mat = Material("tdmg/hud/radar/dog.png"), rotate = false, size = 20, without_uav = false}, + ["vj_tdm_npc"] = {mat = Material("tdmg/hud/radar/soldier.png"), rotate = false, size = 20, without_uav = false}, + ["vj_tdm_invasion_soldier1"] = {mat = Material("tdmg/hud/radar/enemy.png"), rotate = false, size = 16, without_uav = false}, + ["vj_tdm_invasion_soldier2"] = {mat = Material("tdmg/hud/radar/enemy.png"), rotate = false, size = 16, without_uav = false}, +} + +local function Draw() + if COD.HideHUD or !LocalPlayer():Alive() then return end + local w, h = ScrW(), ScrH() + local x, y, size = 10, 10, 250 + local cx, cy = x + size / 2, y + size / 2 + local playerSize = 24 + local enemySize = 16 + local IsMUAV = false + local ply = LocalPlayer() + draw.RoundedBox(0, x, y, size, size, Color(0, 0, 0, 200)) + + local localPos = ply:GetPos() + local localAng = ply:GetAngles() + + if not COD.Counter_UAV_Active then + local entities = GetFriends() + for k, ent in pairs(entities) do + if !IsValid(ent) then continue end + + local enemyPos = ply:GetPos() - ent:GetPos() + enemyPos:Rotate(Angle(180, (ply:EyeAngles().y) * -1, -180)) + + local ex = size / 2 * (enemyPos.y / max_radar_distance / radar_scale) + local ey = size / 2 * (enemyPos.x / max_radar_distance / radar_scale) + + local posx = cx - ex - (enemySize / 2) + local posy = cy - ey - (enemySize / 2) + + local mat = enemyMat + posx = math.Clamp(posx, x, x + size - playerSize / 2) + posy = math.Clamp(posy, y, y + size - playerSize / 2) + local size = playerSize + surface.SetDrawColor(playerColor) + surface.SetMaterial(playerMat) + surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, (ent:IsPlayer() and ent:EyeAngles() or ent:GetAngles()).y + ply:EyeAngles().y * -1) + end + + local entnpc = GetEntities() + for k, ent in pairs(entnpc) do + if !IsValid(ent) then continue end + + local data = IconsEntityTab[ent:GetClass()] + local enemyPos = ply:GetPos() - ent:GetPos() + local enemyAng = ent:GetAngles().y + if data and data.bone then + local bonepos, boneang = ent:GetBonePosition(ent:LookupBone(data.bone)) + enemyPos = ply:GetPos() - bonepos + enemyAng = boneang.y + end + enemyPos:Rotate(Angle(180, (ply:EyeAngles().y) * -1, -180)) + + local ex = size / 2 * (enemyPos.y / max_radar_distance / radar_scale) + local ey = size / 2 * (enemyPos.x / max_radar_distance / radar_scale) + + local posx = cx - ex - (enemySize / 2) + local posy = cy - ey - (enemySize / 2) + + posx = math.Clamp(posx, x, x + size - playerSize / 2) + posy = math.Clamp(posy, y, y + size - playerSize / 2) + local size = playerSize + if ent:GetNWFloat('Team') == LocalPlayer():Team() then + surface.SetDrawColor(playerColor) + else + surface.SetDrawColor(enemyColor) + end + + if data then + if not data.without_uav and ent:GetNWFloat('Team') != LocalPlayer():Team() and (not COD.UAV_Active and not COD.Adv_UAV_Active) then continue end + surface.SetMaterial(data.mat) + size = data.size + if data.rotate then + surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, enemyAng + ply:EyeAngles().y * -1) + else + surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, 0) + end + else + surface.SetMaterial(enemyMat) + size = 12 + surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, 0) + end + end + + + if not COD.Adv_UAV_Active and COD.UAV_Active then + + if uav_update_rate < CurTime() then + uav_update_rate = CurTime() + 4 + GetEnemies() + end + + local entities = UAVEnemies + for k, ent in pairs(entities) do + ent.alpha = math.max(ent.alpha - FrameTime()*75, 0) + + local enemyPos = ply:GetPos() - ent.pos + enemyPos:Rotate(Angle(180, (ply:EyeAngles().y) * -1, -180)) + + local ex = size / 2 * (enemyPos.y / max_radar_distance / radar_scale) + local ey = size / 2 * (enemyPos.x / max_radar_distance / radar_scale) + + local posx = cx - ex - (enemySize / 2) + local posy = cy - ey - (enemySize / 2) + + local mat = enemyMat + posx = math.Clamp(posx, x, x + size - playerSize / 2) + posy = math.Clamp(posy, y, y + size - playerSize / 2) + local size = enemySize + surface.SetDrawColor(Color(enemyColor.r, enemyColor.g, enemyColor.b, ent.alpha)) + surface.SetMaterial(enemyMat) + surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, 0) + end + end + + if COD.Adv_UAV_Active then + local entities = GetEnemies(true) + for k, ent in pairs(entities) do + if !IsValid(ent) then continue end + + local enemyPos = ply:GetPos() - ent:GetPos() + enemyPos:Rotate(Angle(180, (ply:EyeAngles().y) * -1, -180)) + + local ex = size / 2 * (enemyPos.y / max_radar_distance / radar_scale) + local ey = size / 2 * (enemyPos.x / max_radar_distance / radar_scale) + + local posx = cx - ex - (enemySize / 2) + local posy = cy - ey - (enemySize / 2) + + local mat = enemyMat + posx = math.Clamp(posx, x, x + size - playerSize / 2) + posy = math.Clamp(posy, y, y + size - playerSize / 2) + local size = playerSize + surface.SetDrawColor(enemyColor) + surface.SetMaterial(playerMat) + surface.DrawTexturedRectRotated(posx + size / 4, posy + size / 4, size, size, (ent:IsPlayer() and ent:EyeAngles() or ent:GetAngles()).y + ply:EyeAngles().y * -1) + end + end + + surface.SetMaterial(playerMat) + surface.SetDrawColor(yourColor) + surface.DrawTexturedRect(cx - playerSize / 2, cy - playerSize / 2, playerSize, playerSize) + else + surface.SetDrawColor(Color(255, 255, 255, 255)) + surface.SetMaterial(glitchMat) + surface.DrawTexturedRect(x, y, size, size) + end + + surface.SetDrawColor(Color(255, 255, 255, 255)) + surface.SetMaterial(radarMat) + surface.DrawTexturedRect(x, y, size, size) +end + +hook.Add("HUDPaint", "MWRadar", Draw) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/client/cl_scoreboard.lua b/gamemodes/cod_custom/gamemode/client/cl_scoreboard.lua new file mode 100644 index 0000000..d72b1df --- /dev/null +++ b/gamemodes/cod_custom/gamemode/client/cl_scoreboard.lua @@ -0,0 +1,238 @@ +surface.CreateFont( "mw2score_servername", { + font = "ChatFont", + extended = false, + size = 20, + weight = 500, + blursize = 0, + scanlines = 0, + antialias = true, + underline = false, + italic = false, + strikeout = false, + symbol = false, + rotary = false, + shadow = false, + additive = false, + outline = false, +} ) + +surface.CreateFont( "mw2score_gamemodename", { + font = "ChatFont", + extended = false, + size = 40, + weight = 500, + blursize = 0, + scanlines = 0, + antialias = true, + underline = false, + italic = false, + strikeout = false, + symbol = false, + rotary = false, + shadow = false, + additive = false, + outline = false, +} ) + +surface.CreateFont( "mw2score_playername", { + font = "ChatFont", + extended = false, + size = 20, + weight = 500, + blursize = 0, + scanlines = 0, + antialias = true, + underline = false, + italic = false, + strikeout = false, + symbol = false, + rotary = false, + shadow = false, + additive = false, + outline = false, +} ) + +local Scoredefault_black = Color(0,0,0,200) +local plycolor = Color(255,255,255) +local servername = GetHostName() +local gamemodename = COD.Language["gamemode_"..COD.DataTable["Gamemode"]] +local servernamedata = { + text = servername, + xalign = TEXT_ALIGN_CENTER, + font = "mw2score_servername" +} + +local gamemodenamedata = { + text = gamemodename, + xalign = TEXT_ALIGN_CENTER, + font = "mw2score_gamemodename" +} + +local playertextdata= { + xalign = TEXT_ALIGN_LEFT, + font = "mw2score_playername" +} + +local detaildata = { + xalign = TEXT_ALIGN_LEFT, + font = "ChatFont" +} + +local avtab = {} +local function CreatePlayerAvatar(ply,x,y) + if !ply.mw2avatar then + local avatar = vgui.Create("AvatarImage") + avatar:SetPos(x,y) + avatar:SetSize(27,27) + avatar:SetPlayer(ply) + ply.mw2avatar = avatar + table.insert(avtab, avatar) + end +end + +local function RemoveAvatars() + local players = player.GetAll() + for k, ply in ipairs(players) do + if ply.mw2avatar then + ply.mw2avatar:Remove() + ply.mw2avatar = nil + table.RemoveByValue(avtab, ply.mw2avatar) + end + end + for k, v in ipairs(avtab) do + v:Remove() + table.remove(avtab, k) + end +end + +local team1_mat = Material('tdmg/hud/teams/specgru.png') +local team2_mat = Material('tdmg/hud/teams/kortac.png') + +local function MW2SCORE_RenderScoreboard() + gamemodename = COD.Language["gamemode_"..COD.DataTable["Gamemode"]] + gamemodenamedata = { + text = gamemodename, + xalign = TEXT_ALIGN_CENTER, + font = "mw2score_gamemodename" + } + hook.Add("HUDPaint","MW2SCORE_RENDER",function() + local w,h = ScrW(),ScrH() + local xoffset = 50 + local players = team.GetPlayers(1) + local players2 = team.GetPlayers(2) + table.sort(players, function(a,b) + return a:GetNWFloat('Score') > b:GetNWFloat('Score') + end) + table.sort(players2, function(a,b) + return a:GetNWFloat('Score') > b:GetNWFloat('Score') + end) + + -- Server Name + surface.SetDrawColor(Scoredefault_black) + surface.DrawRect(0, h/15, w, 50) + servernamedata.pos = {w/2,h/8.5} + draw.TextShadow(servernamedata,2,255) + gamemodenamedata.pos = {w/2,h/14} + draw.TextShadow(gamemodenamedata,2,255) + + detaildata.xalign = 1 + detaildata.pos = {w-245,h/5.7} + detaildata.text = COD.Language["scoreboard_score"] + draw.TextShadow(detaildata,2,255) + detaildata.xalign = 1 + detaildata.pos = {w-145,h/5.7} + detaildata.text = COD.Language["scoreboard_kd"] + draw.TextShadow(detaildata,2,255) + surface.SetDrawColor(color_white) + surface.SetMaterial(team2_mat) + surface.DrawTexturedRect(w-600, h/5.7-25, 72, 72) + draw.SimpleText(COD.Language["team2_name"], "mw2score_gamemodename", w-512, h/5.7+10, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + + detaildata.xalign = 1 + detaildata.pos = {400+xoffset,h/5.7} + detaildata.text = COD.Language["scoreboard_score"] + draw.TextShadow(detaildata,2,255) + detaildata.xalign = 1 + detaildata.pos = {550,h/5.7} + detaildata.text = COD.Language["scoreboard_kd"] + draw.TextShadow(detaildata,2,255) + surface.SetDrawColor(color_white) + surface.SetMaterial(team1_mat) + surface.DrawTexturedRect(80, h/5.7-40, 80, 96) + draw.SimpleText(COD.Language["team1_name"], "mw2score_gamemodename", 170, h/5.7+10, color_white, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + + for index, ply in ipairs(players) do + if !IsValid(ply) then continue end + if ply:IsPlayer() then + local name = ply:GetName() + local kills = ply:Frags() + local deaths = ply:Deaths() + local curteam = ply:Team() + local teamcolor = team.GetColor(curteam) + local row = (h/5)+(index*40) + CreatePlayerAvatar(ply, 100,row) + plycolor.r = teamcolor.r + plycolor.g = teamcolor.g + plycolor.b = teamcolor.b + surface.SetDrawColor(Scoredefault_black) + surface.DrawRect(95, row-5, 500, 35) + playertextdata.text = name + playertextdata.pos = {150,row} + playertextdata.color = plycolor + draw.TextShadow(playertextdata,2,255) + detaildata.pos = {450,row} + detaildata.text = tostring(ply:GetNWFloat('Score')) + draw.TextShadow(detaildata,2,255) + detaildata.pos = {550,row} + detaildata.text = tostring(kills.."/"..deaths) + draw.TextShadow(detaildata,2,255) + end + end + + for index, ply in ipairs(players2) do + if !IsValid(ply) then continue end + if ply:IsPlayer() then + local name = ply:GetName() + local kills = ply:Frags() + local deaths = ply:Deaths() + local curteam = ply:Team() + local teamcolor = team.GetColor(curteam) + local row = (h/5)+(index*40) + CreatePlayerAvatar(ply, w-590 ,row) + plycolor.r = teamcolor.r + plycolor.g = teamcolor.g + plycolor.b = teamcolor.b + surface.SetDrawColor(Scoredefault_black) + surface.DrawRect(w-595, row-5, 500, 35) + playertextdata.text = name + playertextdata.pos = {w-540,row} + playertextdata.color = plycolor + draw.TextShadow(playertextdata,2,255) + detaildata.pos = {w-245,row} + detaildata.text = tostring(ply:GetNWFloat('Score')) + draw.TextShadow(detaildata,2,255) + detaildata.pos = {w-145,row} + detaildata.text = tostring(kills.."/"..deaths) + draw.TextShadow(detaildata,2,255) + end + end + end) +end + +local function MW2SCORE_HideScoreboard() + hook.Remove("HUDPaint","MW2SCORE_RENDER") + RemoveAvatars() +end + +hook.Add("ScoreboardShow","MW2SCORE_NoDefault",function() + MW2SCORE_RenderScoreboard() + COD.HideHUD = true + return true +end) + +hook.Add("ScoreboardHide","MW2SCORE_HideScore",function() + MW2SCORE_HideScoreboard() + COD.HideHUD = false +end) + +--original by StarFrost, i edited it for gamemode \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/client/cl_takedown.lua b/gamemodes/cod_custom/gamemode/client/cl_takedown.lua new file mode 100644 index 0000000..a10f3a6 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/client/cl_takedown.lua @@ -0,0 +1,132 @@ +local sdeltaTime = sdeltaTime or 0 +local SysTime = SysTime +local FrameTime = FrameTime +local start_delta_time = 0 +local is_second_tick = false + +hook.Add('Tick', 'sFixedDeltaTime', function() + if is_second_tick then + sdeltaTime = SysTime() - start_delta_time + else + start_delta_time = SysTime() + end + is_second_tick = not is_second_tick +end) + +local function magnitude(vec) + local magnitude = vec + magnitude = magnitude.x ^ 2 + magnitude.y ^ 2 + magnitude.z ^ 2 + magnitude = math.sqrt(magnitude) + return magnitude +end + +local function MoveTowardsVector(current_vector, target_vector, delta_time) + local direction_vector = target_vector - current_vector + local magnitude = magnitude(direction_vector) + if magnitude <= delta_time or magnitude == 0 then + return target_vector + end + return current_vector + direction_vector / magnitude * delta_time +end + +local rndhooks = {} +net.Receive("COD.TakedownCam", function() + local cam1 = net.ReadBool() + local float = net.ReadFloat() + local toplayer = net.ReadBool() + local rnd = math.random(1,999999999) + table.insert(rndhooks, "TakedownCam"..rnd) + + if true then + local ply = LocalPlayer() + + local delta = sdeltaTime + local deltanum = 2 + local deltamult = 16 + + local ang_fix = ply:GetAngles() + local forwardplus = ang_fix:Forward()*math.Rand(32,64) + local rightplus = ang_fix:Right()*math.Rand(32,64) + local upplus = Vector(0,0,math.Rand(16,32)) + + if math.random(1,2) == 2 then + forwardplus = ply:GetForward()*math.Rand(-64,-32) + end + if math.random(1,2) == 2 then + rightplus = ply:GetRight()*math.Rand(-64,-32) + end + + local endpos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))+forwardplus+rightplus+upplus + local curpos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1")) + + local angle1 = Angle(0,0,0) + + local dist = 0 + local drawv = true + local tohead = false + + timer.Simple(float/2, function() + deltamult = 0 + end) + + if toplayer then + timer.Simple(float, function() + tohead = true + deltamult = 128 + end) + end + + if cam1 then + hook.Add("CalcView", "TakedownCam"..rnd, function( ply, pos, angles, fov ) + curpos = MoveTowardsVector(curpos, endpos, delta*deltanum) + angle1 = (ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))-curpos):GetNormalized():Angle() + dist = curpos:Distance(ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1"))) + if tohead then + endpos = ply:GetBonePosition(ply:LookupBone("ValveBiped.Bip01_Head1")) + end + if deltamult > 0 then + deltanum = deltanum+FrameTime()*deltamult + end + if dist < 8 and tohead then + drawv = false + angle1 = ply:EyeAngles() + else + drawv = true + end + local view = { + angles = angle1, + origin = curpos, + fov = fov, + drawviewer = drawv, + nearz = 16, + } + + if ply:Alive() then + COD.HideHUD = true + return view + end + end) + timer.Simple(float+0.7, function() + hook.Remove("CalcView", "TakedownCam"..rnd) + table.RemoveByValue(rndhooks, "TakedownCam"..rnd) + COD.HideHUD = false + end) + else + for _, v in pairs(rndhooks) do + hook.Remove("CalcView", v) + table.RemoveByValue(rndhooks, v) + end + COD.HideHUD = false + end + end +end) + +hook.Add("CalcMainActivity", "!TDMAnims", function(ply, vel) + local str = ply:GetNWString('SVAnim') + local num = ply:GetNWFloat('SVAnimDelay') + local st = ply:GetNWFloat('SVAnimStartTime') + if str != "" then + ply:SetCycle((CurTime()-st)/num) + return -1, ply:LookupSequence(str) + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/init.lua b/gamemodes/cod_custom/gamemode/init.lua new file mode 100644 index 0000000..689393d --- /dev/null +++ b/gamemodes/cod_custom/gamemode/init.lua @@ -0,0 +1,33 @@ +----------------- +AddCSLuaFile("shared.lua") +AddCSLuaFile("client/cl_hud.lua") +AddCSLuaFile("client/cl_outline.lua") +AddCSLuaFile("client/cl_menu.lua") +AddCSLuaFile("client/cl_takedown.lua") +AddCSLuaFile("client/cl_scoreboard.lua") +AddCSLuaFile("client/cl_abilities.lua") +AddCSLuaFile("client/cl_killfeed.lua") +AddCSLuaFile("client/cl_radar.lua") +AddCSLuaFile("client/cl_cutscenes.lua") +AddCSLuaFile("client/cl_killcam.lua") +AddCSLuaFile("client/cl_error.lua") +AddCSLuaFile("post_shared.lua") + +local files1 = file.Find("cod_tdm/*", "LUA") +for k, v in ipairs(files1) do + AddCSLuaFile("cod_tdm/"..v) +end + +include("shared.lua") +include("server/sv_functions.lua") +include("server/sv_killstreaks.lua") +include("server/sv_takedown.lua") +include("server/sv_abilities.lua") +include("server/sv_killcam.lua") +include("server/sv_invasion.lua") +include("server/sv_knockout.lua") +include("server/sv_infected.lua") +include("server/sv_domination.lua") + +include("other/sv_mwii_npc.lua") +include("post_shared.lua") \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/lang/brazilian.lua b/gamemodes/cod_custom/gamemode/lang/brazilian.lua new file mode 100644 index 0000000..4e36dea --- /dev/null +++ b/gamemodes/cod_custom/gamemode/lang/brazilian.lua @@ -0,0 +1,100 @@ +COD.Language = { + ["team1_name"] = "SpecGru", + ["team2_name"] = "KorTac", + + ["scoreboard_score"] = "Pontuação", + ["scoreboard_kd"] = "K/D", + + ["menu_warning_ks"] = "Aviso! Sua sequência de mortes será atualizada quando a rodada terminar.", + ["menu_mainweapon"] = "Sua principal arma é: ", + ["menu_secweapon"] = "Sua arma secundária é: ", + ["menu_ks_choose"] = "Seleção de Killstreak - ", + ["menu_mainperk"] = "Selecione o Vantagem Principal", + ["menu_highperk"] = "Selecione a Vantagem Alta ", + ["menu_choosemain"] = "Seleção de Armas Principais", + ["menu_choosesec"] = "Seleção de Armas Secundárias", + ["menu_apply"] = "Aplicar", + + ["hud_killed"] = "MATOU: ", + ["hud_killer"] = "Matador: ", + ["hud_teamdeathmatch"] = "MATA-MATA POR EQUIPES", + ["hud_win"] = "VICTORY", + ["hud_lose"] = "DEFEAT", + ["hud_unlockmainperk"] = " - Vantagem principal desbloqueada!", + ["hud_unlockhighperk"] = " - Alto Privilégio Desbloqueado!", + ["hud_unlockkillstreak"] = "Pronto para usar!", + ["hud_package"] = "Pressione [E] para pegar ", + ["hud_fullpackage"] = "Pressione [E] para pegar o pacote", + ["hud_revive"] = "Reanimando", + ["hud_torevive"] = "Pressione E para reanimar", + ["hud_reviver"] = "Você está sendo reanimado", + ["hud_selfrevive"] = "Progresso do Auto-Revive", + ["hud_toselfrevive"] = "Segure E para se auto-reviver", + ["hud_kills"] = "matanças: ", + ["hud_killstreak"] = "Sequência de mortes", + ["hud_nuke"] = "LANÇAMENTO DE MÍSSEIS BALÍSTICOS DETECTADO", + ["hud_scoreadd_1"] = "+100 Matar", + ["hud_scoreadd_2"] = "+110 Tiro na cabeça", + ["hud_scoreadd_3"] = "+150 Movimento do finalizador", + ["hud_scoreadd_4"] = "+50 Reforços destruídos", + ["hud_scoreadd_5"] = "+125 Melee", + ["hud_scoreadd_6"] = "+100 Reanimar", + ["hud_scoreadd_7"] = "+250 Pedido de Socorro", + + ["contols_main"] = "Controle:", + ["contols_f1"] = "ESC - Editar Loadout", + ["contols_e"] = "E - Movimento do Finalizador", + ["contols_q"] = "Q, G - Jogar granada", + ["contols_v"] = "V - Use Faca", + ["contols_0"] = "7,8,9,0 - Use Sequência de morte", + ["contols_tab"] = "Tab - Painel de pontos", + ["contols_open"] = "Mantenha pressionada a tecla INSERT para abrir controles.", + + ["killstreak_1"] = "UAV", + ["killstreak_2"] = "Bomb Drone", + ["killstreak_3"] = "Armor", + ["killstreak_4"] = "Care Package", + ["killstreak_5"] = "Counter-UAV", + ["killstreak_6"] = "Cluster Mine", + ["killstreak_7"] = "Precision Airstrike", + ["killstreak_8"] = "K9 Unit", + ["killstreak_9"] = "Sentry Gun", + ["killstreak_10"] = "Air Patrol", + ["killstreak_11"] = "Mortar Strike", + ["killstreak_12"] = "SAE", + ["killstreak_13"] = "Overwatch Helo", + ["killstreak_14"] = "VTOL", + ["killstreak_15"] = "Reinforcement", + ["killstreak_16"] = "Stealth Bomber", + ["killstreak_17"] = "Chopper Gunner", + ["killstreak_18"] = "Advanced UAV", + ["killstreak_19"] = "Emergency Airdrop", + ["killstreak_20"] = "AC-130", + ["killstreak_21"] = "Juggernaut", + ["killstreak_22"] = "MGB", + + ["perk_1_1"] = "Esquadrão Antibombas", + ["perk_1_2"] = "Observador", + ["perk_1_3"] = "Linha-dura", + ["perk_1_4"] = "Reabastecimento", + ["perk_1_1_desc"] = "Reduz os danos causados pela explosão.", + ["perk_1_2_desc"] = "Capacidade de ver pacotes inimigos e reforços através das paredes.", + ["perk_1_3_desc"] = "Reduz as sequências de morte em 1.", + ["perk_1_4_desc"] = "A cada 30 segundos, você ganha 1 carregador para sua arma atual.", + ["perk_2_1"] = "Solução rápida", + ["perk_2_2"] = "Sobrevivente", + ["perk_2_3"] = "Fantasma", + ["perk_2_4"] = "Sangue frio", + ["perk_2_1_desc"] = "Sua saúde se regenera após 3 segundos em vez de 8 segundos.", + ["perk_2_2_desc"] = "Em vez de morrer, você entra no estado final do traço 1 vez por vida.", + ["perk_2_3_desc"] = "Invisível para UAVs.", + ["perk_2_4_desc"] = "Invisível para veículos e reforços inimigos.", + + ["gamemode_1"] = "Mata-Mata em equipe", + ["gamemode_2"] = "Invasão", + ["gamemode_3"] = "Nocaute", + + ["gamemode_1_desc"] = "Eliminate the enemy at all costs.", + ["gamemode_2_desc"] = "Eliminate the enemy at all costs.", + ["gamemode_3_desc"] = "Eliminate the enemy at all costs.", +} \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/lang/english.lua b/gamemodes/cod_custom/gamemode/lang/english.lua new file mode 100644 index 0000000..c33bf78 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/lang/english.lua @@ -0,0 +1,169 @@ +COD.Language = { + ["team1_name"] = "SpecGru", + ["team2_name"] = "KorTac", + + ["scoreboard_score"] = "Score", + ["scoreboard_kd"] = "K/D", + + ["menu_warning_ks"] = "Warning! Your kill streak will be refreshed when the round ends.", + ["menu_mainweapon"] = "Your main weapon is: ", + ["menu_secweapon"] = "Your secondary weapon is: ", + ["menu_ks_choose"] = "Killstreak selection - ", + ["menu_mainperk"] = "Select Main Perk", + ["menu_highperk"] = "Select High Perk", + ["menu_choosemain"] = "Main Weapon Selection", + ["menu_choosesec"] = "Secondary Weapon Selection", + ["menu_apply"] = "Apply", + + ["hud_killer"] = "Killer: ", + ["hud_killed"] = "KILLED: ", + ["hud_teamdeathmatch"] = "TEAM DEATHMATCH", + ["hud_win"] = "VICTORY", + ["hud_lose"] = "DEFEAT", + ["hud_unlockmainperk"] = " - Main Perk unlocked!", + ["hud_unlockhighperk"] = " - High Perk Unlocked!", + ["hud_unlockkillstreak"] = "Ready to use!", + ["hud_package"] = "Press [E] to pick up ", + ["hud_fullpackage"] = "Press [E] to pick up the package", + ["hud_revive"] = "Revive Progress", + ["hud_torevive"] = "Press E to revive", + ["hud_reviver"] = "You are being revived", + ["hud_selfrevive"] = "Self-Revive Progress", + ["hud_toselfrevive"] = "Hold E to self-revive", + ["hud_kills"] = "Kills: ", + ["hud_killstreak"] = "Killstreak", + ["hud_nuke"] = "MGB INBOUND", + ["hud_scoreadd_1"] = "+100 Kill", + ["hud_scoreadd_2"] = "+110 Headshot", + ["hud_scoreadd_3"] = "+150 Finisher Move", + ["hud_scoreadd_4"] = "+50 Reinforcements destroyed", + ["hud_scoreadd_5"] = "+125 Melee", + ["hud_scoreadd_6"] = "+100 Revive", + ["hud_scoreadd_7"] = "+250 Mayday", + + ["hud_message_1"] = "First Infected", + ["hud_message_2"] = "Last Survivor", + ["hud_message_3"] = "+50 Survivor", + + ["hud_domination_1"] = "CAPTURE", + ["hud_domination_2"] = "SECURE", + ["hud_domination_3"] = "PROGRESS", + ["hud_domination_4"] = "+200 Neutral zone captured", + ["hud_domination_5"] = "+100 Enemy zone captured", + + ["hud_invasion_1"] = "SUPPLY BOXES ON THE WAY", + ["hud_invasion_2"] = "HEAVY REINFORCEMENTS ON THE WAY", + + ["contols_main"] = "Control:", + ["contols_f1"] = "ESC - Edit Loadout", + ["contols_e"] = "E - Finisher Move", + ["contols_q"] = "Q, G - Throw Grenade", + ["contols_v"] = "V - Use Knife", + ["contols_0"] = "7,8,9,0 - Use Killstreak", + ["contols_tab"] = "Tab - Scoreboard", + ["contols_open"] = "Hold INSERT to open controls.", + + ["killstreak_1"] = "UAV", + ["killstreak_2"] = "Bomb Drone", + ["killstreak_3"] = "Armor", + ["killstreak_4"] = "Care Package", + ["killstreak_5"] = "Counter-UAV", + ["killstreak_6"] = "Cluster Mine", + ["killstreak_7"] = "Precision Airstrike", + ["killstreak_8"] = "K9 Unit", + ["killstreak_9"] = "Sentry Gun", + ["killstreak_10"] = "Air Patrol", + ["killstreak_11"] = "Mortar Strike", + ["killstreak_12"] = "SAE", + ["killstreak_13"] = "Overwatch Helo", + ["killstreak_14"] = "VTOL", + ["killstreak_15"] = "Reinforcement", + ["killstreak_16"] = "Stealth Bomber", + ["killstreak_17"] = "Chopper Gunner", + ["killstreak_18"] = "Advanced UAV", + ["killstreak_19"] = "Emergency Airdrop", + ["killstreak_20"] = "AC-130", + ["killstreak_21"] = "Juggernaut", + ["killstreak_22"] = "MGB", + + ["killstreak_desc_1"] = "UAV recon ship that reveals enemy locations on the minimap.", + ["killstreak_desc_2"] = "A remote-controlled drone with an attached C4 charge.", + ["killstreak_desc_3"] = "Gives a bag of armor for the whole team.", + ["killstreak_desc_4"] = "Call in a random killstreak care package to your location.", + ["killstreak_desc_5"] = "A drone that scrambles all enemy minimaps.", + ["killstreak_desc_6"] = "Throw a device that launches a cluster of smaller mines within the immediate area.", + ["killstreak_desc_7"] = "Call in twin jets for a precision strike along the best available path.", + ["killstreak_desc_8"] = "Call in K9 unit for searching enemies.", + ["killstreak_desc_9"] = "Automated turret that scans for nearby enemies, and fires incendiary based rounds.", + ["killstreak_desc_10"] = "Three jets, track down air vehicles and shoot it down, freeing the airspace.", + ["killstreak_desc_11"] = "Mark a target location to signal several waves of mortars to attack the area.", + ["killstreak_desc_12"] = "Call in a trio of jets to release aerial explosives onto specified targets.", + ["killstreak_desc_13"] = "An attack helo that will watch over positions and find enemy before engaging them.", + ["killstreak_desc_14"] = "Releases a precision bomb before circling back and guarding a marked location.", + ["killstreak_desc_15"] = "A helicopter that disembarks three soldiers with heavy training.", + ["killstreak_desc_16"] = "Call in a bomber that releases a large line of explosives along its path.", + ["killstreak_desc_17"] = "Control an assault chopper armed with a turret and air-to-land missiles.", + ["killstreak_desc_18"] = "An orbital UAV that reveals the enemy's direction on the minimap in real time.", + ["killstreak_desc_19"] = "Call in 3 random killstreak care packages to your location.", + ["killstreak_desc_20"] = "A heavy assault gunship equipped with a missile, along with the 40mm and 25mm cannons.", + ["killstreak_desc_21"] = "Juggernaut assault gear with minigun delivered by care package.", + ["killstreak_desc_22"] = "A massive blow to your position. Will end the game in favor of your team.", + + ["main_menu_1"] = "Resume Game", + ["main_menu_2"] = "Change Loadout", + ["main_menu_3"] = "Settings", + ["main_menu_4"] = "Main Menu", + + ["main_menu_settings_1"] = "Music: ", + ["main_menu_settings_2"] = "Announcer: ", + ["main_menu_settings_3"] = "Killсam: ", + ["main_menu_settings_4"] = "Discord Server", + ["main_menu_settings_cm"] = "Custom Music: ", + + ["main_menu_loadout"] = "Loadout", + ["main_menu_loadout_wep"] = "Your choose:", + ["main_menu_loadout_1"] = "Primary Weapon", + ["main_menu_loadout_2"] = "Secondary Weapon", + ["main_menu_loadout_3"] = "Killstreaks", + ["main_menu_loadout_3_1"] = "Killstreaks selected - ", + ["main_menu_loadout_4"] = "Perks", + ["main_menu_loadout_5"] = "Finishing Moves", + ["main_menu_loadout_6"] = "Apply", + ["main_menu_loadout_7"] = "Exit", + + ["perk_1_1"] = "Bomb Squad", + ["perk_1_2"] = "Spotter", + ["perk_1_3"] = "Hardline", + ["perk_1_4"] = "Resupply", + ["perk_1_1_desc"] = "Reduces explosion damage.", + ["perk_1_2_desc"] = "Ability to see enemy packages and reinforcements through walls.", + ["perk_1_3_desc"] = "Reduce killstreaks by 1.", + ["perk_1_4_desc"] = "Every 30 seconds, you gain 1 magazine for your current weapon.", + ["perk_2_1"] = "Quick Fix", + ["perk_2_2"] = "Survivor", + ["perk_2_3"] = "Ghost", + ["perk_2_4"] = "Cold Blooded", + ["perk_2_1_desc"] = "Your health regenerates after 3 seconds instead of 8 seconds.", + ["perk_2_2_desc"] = "Instead of dying, you enter the final dash state 1 time per life.", + ["perk_2_3_desc"] = "Invisible to UAVs.", + ["perk_2_4_desc"] = "Invisible to vehicles and enemy reinforcements.", + + ["gamemode_1"] = "TEAM DEATHMATCH", + ["gamemode_2"] = "INVASION", + ["gamemode_3"] = "KNOCK OUT", + ["gamemode_4"] = "INFECTED", + ["gamemode_5"] = "DOMINATION", + + ["gamemode_1_desc"] = "Eliminate the enemy at all costs.", + ["gamemode_2_desc"] = "Eliminate the enemy at all costs.", + ["gamemode_3_desc"] = "Eliminate the enemy at all costs.", + ["gamemode_4_desc"] = "Survive or infect everyone.", + ["gamemode_5_desc"] = "Control all sectors on the location.", + + ["killcam_1"] = "Your Death", + ["killcam_2"] = "Final Kill", + ["killcam_3"] = "Press SPACE to skip", + + ["admin_menu_title"] = "Admin Menu", + ["admin_change_gamemode"] = "Change Gamemode", +} \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/lang/german.lua b/gamemodes/cod_custom/gamemode/lang/german.lua new file mode 100644 index 0000000..24562ec --- /dev/null +++ b/gamemodes/cod_custom/gamemode/lang/german.lua @@ -0,0 +1,99 @@ +COD.Language = { + ["team1_name"] = "SpecGru", + ["team2_name"] = "KorTac", + + ["scoreboard_score"] = "Score", + ["scoreboard_kd"] = "K/D", + + ["menu_warning_ks"] = "Warnung! Ihre Kill-Serie wird aktualisiert, wenn die Runde endet.", + ["menu_mainweapon"] = "Deine Hauptwaffe ist: ", + ["menu_secweapon"] = "Deine sekundäre Waffe ist: ", + ["menu_ks_choose"] = "Killstreak-Auswahl - ", + ["menu_mainperk"] = "Hauptvergünstigung auswählen", + ["menu_highperk"] = "High Perk auswählen", + ["menu_choosemain"] = "Hauptwaffenauswahl", + ["menu_choosesec"] = "Auswahl der Sekundenwaffe", + ["menu_apply"] = "Bewerben", + + ["hud_killed"] = "KILLED: ", + ["hud_killer"] = "Killer: ", + ["hud_teamdeathmatch"] = "TEAM DEATHMATCH", + ["hud_win"] = "SIEG", + ["hud_lose"] = "DEFEAT", + ["hud_unlockmainperk"] = " - Hauptvergünstigung freigeschaltet!", + ["hud_unlockhighperk"] = " - High Perk Unlocked!", + ["hud_unlockkillstreak"] = "Bereit zur Verwendung!", + ["hud_package"] = "Drücken Sie [E], um abzuholen ", + ["hud_fullpackage"] = "Drücken Sie [E], um das Paket abzuholen", + ["hud_revive"] = "Fortschritt wiederbeleben", + ["hud_torevive"] = "Drücken Sie E, um wiederzubeleben", + ["hud_reviver"] = "Du wirst wiederbelebt", + ["hud_selfrevive"] = "Selbstbelebungsfortschritt", + ["hud_toselfrevive"] = "Halten Sie E, um sich selbst zu beleben", + ["hud_kills"] = "Kills: ", + ["hud_killstreak"] = "Killstreak", + ["hud_nuke"] = "BALLISTIC MISSILE LAUNCH DETECTED", + ["hud_scoreadd_1"] = "+100 Kill", + ["hud_scoreadd_2"] = "+110 Headshot", + ["hud_scoreadd_3"] = "+150 Finisher Move", + ["hud_scoreadd_4"] = "+50 Verstärkungen zerstört", + ["hud_scoreadd_5"] = "+125 Nahkampf", + ["hud_scoreadd_6"] = "+100 Revive", + ["hud_scoreadd_7"] = "+250 Notruf", + ["contols_main"] = "Kontrolle:", + ["contols_f1"] = "ESC - Loadout bearbeiten", + ["contols_e"] = "E - Finisher Move", + ["contols_q"] = "Q, G - Granate werfen", + ["contols_v"] = "V - Messer Verwenden", + ["contols_0"] = "7,8,9,0 - Verwenden Sie Killstreak", + ["contols_tab"] = "Tab - Anzeigetafel", + ["contols_open"] = "Halten Sie INSERT, um die Steuerelemente zu öffnen", + + ["Killstreak_1"] = "UAV", + ["Killstreak_2"] = "Bombendrohne", + ["Killstreak_3"] = "Rüstung", + ["Killstreak_4"] = "Pflegepaket", + ["Killstreak_5"] = "Counter-UAV", + ["Killstreak_6"] = "Cluster Mine", + ["Killstreak_7"] = "Präzisionsluftangriff", + ["Killstreak_8"] = "K9 Einheit", + ["Killstreak_9"] = "Sentry Gun", + ["Killstreak_10"] = "Luftpatrouille", + ["Killstreak_11"] = "Mörtelstreik", + ["Killstreak_12"] = "SAE", + ["Killstreak_13"] = "Overwatch Helo", + ["Killstreak_14"] = "VTOL", + ["Killstreak_15"] = "Verstärkung", + ["Killstreak_16"] = "Stealth Bomber", + ["Killstreak_17"] = "Chopper Gunner", + ["Killstreak_18"] = "Fortgeschrittene UAV", + ["Killstreak_19"] = "Notfall-Airdrop", + ["Killstreak_20"] = "AC-130", + ["Killstreak_21"] = "Juggernaut", + ["Killstreak_22"] = "Taktische Nuke", + + ["perk_1_1"] = "Bomb Squad", + ["perk_1_2"] = "Spotter", + ["perk_1_3"] = "Hardline", + ["perk_1_4"] = "Nachschub", + ["perk_1_1_desc"] = "Reduziert Explosionsschaden", + ["perk_1_2_desc"] = "Fähigkeit, feindliche Pakete und Verstärkungen durch Wände zu sehen", + ["perk_1_3_desc"] = "Killstreaks um 1 reduzieren", + ["perk_1_4_desc"] = "Alle 30 Sekunden erhalten Sie 1 Magazin für Ihre aktuelle Waffe", + ["perk_2_1"] = "Quick Fix", + ["perk_2_2"] = "Überlebender", + ["perk_2_3"] = "Geist", + ["perk_2_4"] = "Kaltblut", + ["perk_2_1_desc"] = "Ihre Gesundheit regeneriert sich nach 3 Sekunden statt nach 8 Sekunden", + ["perk_2_2_desc"] = "Anstatt zu sterben, trittst du 1 Mal pro Leben in den endgültigen Strichzustand ein", + ["perk_2_3_desc"] = "Unsichtbar für UAVs", + ["perk_2_4_desc"] = "Unsichtbar für Fahrzeuge und feindliche Verstärkungen", + + ["gamemode_1"] = "Team Deathmatch", + ["gamemode_2"] = "Invasion", + ["gamemode_3"] = "Knockdown", + + ["gamemode_1_desc"] = "Eliminate the enemy at all costs.", + ["gamemode_2_desc"] = "Eliminate the enemy at all costs.", + ["gamemode_3_desc"] = "Eliminate the enemy at all costs.", +} \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/lang/hungarian.lua b/gamemodes/cod_custom/gamemode/lang/hungarian.lua new file mode 100644 index 0000000..5b00a2f --- /dev/null +++ b/gamemodes/cod_custom/gamemode/lang/hungarian.lua @@ -0,0 +1,100 @@ +COD.Language = { + ["team1_name"] = "SpecGru", + ["team2_name"] = "KorTac", + + ["scoreboard_score"] = "Pontszámok", + ["scoreboard_kd"] = "Ö/H", + + ["menu_warning_ks"] = "Figyelem! A killstrek-ed frissülni fog a kör befejeztekor.", + ["menu_mainweapon"] = "Az elsõdleges fegyvered: ", + ["menu_secweapon"] = "A másodlagos fegyvered: ", + ["menu_ks_choose"] = "Killstreak szelekció - ", + ["menu_mainperk"] = "Kiválasztani való fõ perk", + ["menu_highperk"] = "Kiválasztani való magas rangú perk", + ["menu_choosemain"] = "Elsõdleges fegyver szelekció", + ["menu_choosesec"] = "Másodlagos fegyver szelekció", + ["menu_apply"] = "Hozzáad", + + ["hud_killed"] = "LIKVIDÁLVA: ", + ["hud_killer"] = "Gyilkos: ", + ["hud_teamdeathmatch"] = "TEAM DEATHMATCH", + ["hud_win"] = "GYÕZELEM", + ["hud_lose"] = "VERESÉG", + ["hud_unlockmainperk"] = " - Fõ Perk feloldva!", + ["hud_unlockhighperk"] = " - Magas rangú perk feloldva!", + ["hud_unlockkillstreak"] = "Bevetésre kész!", + ["hud_package"] = "Nyomd meg a [E] hogy fellved ", + ["hud_fullpackage"] = "Nyomd meg a [E] hogy fellved a csomagot", + ["hud_revive"] = "Felélesztés", + ["hud_torevive"] = "Nyomd meg a E a felélesztés megkezdéséhez", + ["hud_reviver"] = "Felélesztés alatt állsz", + ["hud_selfrevive"] = "Önélesztés", + ["hud_toselfrevive"] = "Tarsd nyomva az E hogy önélesztést hajts végre", + ["hud_kills"] = "Ölések: ", + ["hud_killstreak"] = "Killstreak", + ["hud_nuke"] = "BALLISZTIKUS RAKÉTA KILÖVÕ EGYSÉG BEMÉRVE", + ["hud_scoreadd_1"] = "+100 Ölés", + ["hud_scoreadd_2"] = "+110 Fejlövés", + ["hud_scoreadd_3"] = "+150 Kivégzés", + ["hud_scoreadd_4"] = "+50 Erõsítés Megsemmisítve", + ["hud_scoreadd_5"] = "+125 Közelharc", + ["hud_scoreadd_6"] = "+100 Felélesztés", + ["hud_scoreadd_7"] = "+250 Vészhívás", + + ["contols_main"] = "Vezérlõ:", + ["contols_f1"] = "ESC - Loadout szerkesztése", + ["contols_e"] = "E - Kivégzés", + ["contols_q"] = "Q, G - Gránát", + ["contols_v"] = "V - Kés", + ["contols_0"] = "7,8,9,0 - Killstreak használata", + ["contols_tab"] = "Tab - Eredmény lista", + ["contols_open"] = "Nyomd meg az INSERT a vezérlõk megnyitásához.", + + ["killstreak_1"] = "UAV", + ["killstreak_2"] = "Bomb Drone", + ["killstreak_3"] = "Armor", + ["killstreak_4"] = "Care Package", + ["killstreak_5"] = "Counter-UAV", + ["killstreak_6"] = "Cluster Mine", + ["killstreak_7"] = "Precision Airstrike", + ["killstreak_8"] = "K9 Unit", + ["killstreak_9"] = "Sentry Gun", + ["killstreak_10"] = "Air Patrol", + ["killstreak_11"] = "Mortar Strike", + ["killstreak_12"] = "SAE", + ["killstreak_13"] = "Overwatch Helo", + ["killstreak_14"] = "VTOL", + ["killstreak_15"] = "Reinforcement", + ["killstreak_16"] = "Stealth Bomber", + ["killstreak_17"] = "Chopper Gunner", + ["killstreak_18"] = "Advanced UAV", + ["killstreak_19"] = "Emergency Airdrop", + ["killstreak_20"] = "AC-130", + ["killstreak_21"] = "Juggernaut", + ["killstreak_22"] = "MGB", + + ["perk_1_1"] = "Bombaelhárító Osztag", + ["perk_1_2"] = "Felderítõ", + ["perk_1_3"] = "Tükkös Ív", + ["perk_1_4"] = "Utánpótlás", + ["perk_1_1_desc"] = "Csökkenti a robbanó hatásoktól elszenvedett sérülést.", + ["perk_1_2_desc"] = "Olyan képesség ami hatására az utánpótlások és erõsítések a falon kereszül is láthatóvá válnak.", + ["perk_1_3_desc"] = " 1-el csökkenti a killstrek-et.", + ["perk_1_4_desc"] = "Minden 30 másodpercben kapsz egy tárrat az éppen használt fegyveredhez.", + ["perk_2_1"] = "Gyors Ellátás", + ["perk_2_2"] = "Túlélõ", + ["perk_2_3"] = "Kisértet", + ["perk_2_4"] = "Hideg vérû", + ["perk_2_1_desc"] = "8 másodperc helyett az életerõd már 3 másodperc után regenerálódni kezd.", + ["perk_2_2_desc"] = "Ahelyett hogy azonnal meghalnál belépsz egy haldoklási státuszba.", + ["perk_2_3_desc"] = "Az UAV-nek láthatatlan leszel.", + ["perk_2_4_desc"] = "Jármûveknek és ellenséges erõsítéseknek láthatatlan maradsz.", + + ["gamemode_1"] = "Team Deathmatch", + ["gamemode_2"] = "Invasion", + ["gamemode_3"] = "Knockdown", + + ["gamemode_1_desc"] = "Eliminate the enemy at all costs.", + ["gamemode_2_desc"] = "Eliminate the enemy at all costs.", + ["gamemode_3_desc"] = "Eliminate the enemy at all costs.", +} \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/lang/lithuanian.lua b/gamemodes/cod_custom/gamemode/lang/lithuanian.lua new file mode 100644 index 0000000..f2f9492 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/lang/lithuanian.lua @@ -0,0 +1,100 @@ +COD.Language = { + ["team1_name"] = "SpecGru", + ["team2_name"] = "KorTac", + + ["scoreboard_score"] = "Pontszámok", + ["scoreboard_kd"] = "Ö/H", + + ["menu_warning_ks"] = "Figyelem! A killstrek-ed frissülni fog a kör befejeztekor.", + ["menu_mainweapon"] = "Az elsõdleges fegyvered: ", + ["menu_secweapon"] = "A másodlagos fegyvered: ", + ["menu_ks_choose"] = "Killstreak szelekció - ", + ["menu_mainperk"] = "Kiválasztani való fõ perk", + ["menu_highperk"] = "Kiválasztani való magas rangú perk", + ["menu_choosemain"] = "Elsõdleges fegyver szelekció", + ["menu_choosesec"] = "Másodlagos fegyver szelekció", + ["menu_apply"] = "Alkalmazás", + + ["hud_killed"] = "LIKVIDÁLVA: ", + ["hud_killer"] = "Gyilkos: ", + ["hud_teamdeathmatch"] = "TEAM DEATHMATCH", + ["hud_win"] = "GYÕZELEM", + ["hud_lose"] = "VERESÉG", + ["hud_unlockmainperk"] = " - Fõ Perk feloldva!", + ["hud_unlockhighperk"] = " - Magas rangú perk feloldva!", + ["hud_unlockkillstreak"] = "Bevetésre kész!", + ["hud_package"] = "Nyomd meg a [E] hogy fellved", + ["hud_fullpackage"] = "Nyomd meg a [E] a csomag felvételéhez", + ["hud_revive"] = "Felélesztés", + ["hud_torevive"] = "Nyomd meg az E a felélesztés megkezdéséhez", + ["hud_reviver"] = "Felélesztés folyamatban", + ["hud_selfrevive"] = "Önélesztés", + ["hud_toselfrevive"] = "Tarsd nyomva az E hogy önélesztést hajts végre", + ["hud_kills"] = "Ölések: ", + ["hud_killstreak"] = "Killstreak", + ["hud_nuke"] = "BALLISZTIKUS RAKÉTA KILÖVÕ EGYSÉG BEMÉRVE", + ["hud_scoreadd_1"] = "+100 Ölés", + ["hud_scoreadd_2"] = "+110 Fejlövés", + ["hud_scoreadd_3"] = "+150 Kivégzés", + ["hud_scoreadd_4"] = "+50 Erõsítés Megsemmisítve", + ["hud_scoreadd_5"] = "+125 Közelharc", + ["hud_scoreadd_6"] = "+100 Felélesztés", + ["hud_scoreadd_7"] = "+250 Vészhívás", + + ["contols_main"] = "Beállítások:", + ["contols_f1"] = "ESC - Felszerelés szerkesztése", + ["contols_e"] = "E - Kivégzés használata", + ["contols_q"] = "Q, G - Gránát használata", + ["contols_v"] = "V - Kés használata", + ["contols_0"] = "7,8,9,0 - Killstreak használata", + ["contols_tab"] = "Tab - Eredményjelzõ tábla", + ["contols_open"] = "Nyomd meg az INSERT a beállítások megnyitásához.", + + ["killstreak_1"] = "UAV", + ["killstreak_2"] = "Bomb Drone", + ["killstreak_3"] = "Armor", + ["killstreak_4"] = "Care Package", + ["killstreak_5"] = "Counter-UAV", + ["killstreak_6"] = "Cluster Mine", + ["killstreak_7"] = "Precision Airstrike", + ["killstreak_8"] = "K9 Unit", + ["killstreak_9"] = "Sentry Gun", + ["killstreak_10"] = "Air Patrol", + ["killstreak_11"] = "Mortar Strike", + ["killstreak_12"] = "SAE", + ["killstreak_13"] = "Overwatch Helo", + ["killstreak_14"] = "VTOL", + ["killstreak_15"] = "Reinforcement", + ["killstreak_16"] = "Stealth Bomber", + ["killstreak_17"] = "Chopper Gunner", + ["killstreak_18"] = "Advanced UAV", + ["killstreak_19"] = "Emergency Airdrop", + ["killstreak_20"] = "AC-130", + ["killstreak_21"] = "Juggernaut", + ["killstreak_22"] = "MGB", + + ["perk_1_1"] = "Bombaelhárító Osztag", + ["perk_1_2"] = "Felderítõ", + ["perk_1_3"] = "Keményvonalas", + ["perk_1_4"] = "Utánpótlás", + ["perk_1_1_desc"] = "Csökkenti a robbanó hatásoktól elszenvedett sérülést.", + ["perk_1_2_desc"] = "Olyan képesség ami hatására az ellenséges utánpótlások és erõsítések a falon kereszül is láthatóvá válnak.", + ["perk_1_3_desc"] = " 1-el csökkenti a killstrek-et.", + ["perk_1_4_desc"] = "Minden 30 másodpercben kapsz 1 tárrat a jelenlegi fegyveredhez.", + ["perk_2_1"] = "Gyors Ellátás", + ["perk_2_2"] = "Túlélõ", + ["perk_2_3"] = "Kisértet", + ["perk_2_4"] = "Hideg vérû", + ["perk_2_1_desc"] = "8 másodperc helyett az életerõd már 3 másodperc után regenerálódni kezd.", + ["perk_2_2_desc"] = "Haldoklás helyett belépsz a final dash state-be 1-szer életenként.", + ["perk_2_3_desc"] = "Az UAV-nek láthatatlan leszel.", + ["perk_2_4_desc"] = "Ellenséges jármûveknek és erõsítéseknek láthatatlan maradsz.", + + ["gamemode_1"] = "Csapat Deathmatch", + ["gamemode_2"] = "Invázió", + ["gamemode_3"] = "Kiütés", + + ["gamemode_1_desc"] = "Eliminate the enemy at all costs.", + ["gamemode_2_desc"] = "Eliminate the enemy at all costs.", + ["gamemode_3_desc"] = "Eliminate the enemy at all costs.", +} \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/lang/polish.lua b/gamemodes/cod_custom/gamemode/lang/polish.lua new file mode 100644 index 0000000..6cff5ce --- /dev/null +++ b/gamemodes/cod_custom/gamemode/lang/polish.lua @@ -0,0 +1,166 @@ +COD.Language = { + ["team1_name"] = "SpecGru", + ["team2_name"] = "KorTac", + + ["scoreboard_score"] = "Wynik", + ["scoreboard_kd"] = "K/D", + + ["menu_warning_ks"] = "Uwaga! Twój kill streak zostanie odnowiony w następnej rundzie.", + ["menu_mainweapon"] = "Twoja główna broń to: ", + ["menu_secweapon"] = "Twoja dodatkowa broń to: ", + ["menu_ks_choose"] = "Wybór killstreak'a - ", + ["menu_mainperk"] = "Wybierz Głównego Perka", + ["menu_highperk"] = "Wybierz Wysokiego Perka", + ["menu_choosemain"] = "Wybór głównej broni", + ["menu_choosesec"] = "Wybór dodatkowej broni", + ["menu_apply"] = "Zatwierdź", + + ["hud_killed"] = "Zabito: ", + ["hud_killer"] = "Zabójca: ", + ["hud_teamdeathmatch"] = "DRUŻYNOWY DEATHMATCH", + ["hud_win"] = "ZWYCIĘSTWO", + ["hud_lose"] = "PORAŻKA", + ["hud_unlockmainperk"] = " - Główny Perk odblokowany!", + ["hud_unlockhighperk"] = " - Wysoki Perk odblokowany!", + ["hud_unlockkillstreak"] = "Gotowy do użycia!", + ["hud_package"] = "Wciśnij [E] by podnieść ", + ["hud_fullpackage"] = "Wciśnij [E] by podnieść paczkę", + ["hud_revive"] = "Postęp podnoszenia", + ["hud_torevive"] = "Wciśnij [E] by podnieść sojusznika", + ["hud_reviver"] = "Jesteś podnoszony", + ["hud_selfrevive"] = "Postęp samopodnoszenia", + ["hud_toselfrevive"] = "Przytrzymaj [E] by się podnieść", + ["hud_kills"] = "Zabójstwa: ", + ["hud_killstreak"] = "Seria zabójstw", + ["hud_nuke"] = "WYSTRZAŁ RAKIETY BALISTYCZNEJ WYKRYTY", + ["hud_scoreadd_1"] = "+100 Zabójstwo", + ["hud_scoreadd_2"] = "+110 Headshot", + ["hud_scoreadd_3"] = "+150 Egzekucja", + ["hud_scoreadd_4"] = "+50 Wsparcie zniszczone", + ["hud_scoreadd_5"] = "+125 Wręcz", + ["hud_scoreadd_6"] = "+100 Podniesienie", + ["hud_scoreadd_7"] = "+250 Ostatni ratunek", + + ["hud_message_1"] = "Pierwszy zarażony", + ["hud_message_2"] = "Ostatni ocalały", + ["hud_message_3"] = "+50 Ocalały", + + ["hud_domination_1"] = "ZDOBYWANIE", + ["hud_domination_2"] = "OBRONA", + ["hud_domination_3"] = "POSTĘP", + ["hud_domination_4"] = "+200 Zdobycie strefy neutralnej", + ["hud_domination_5"] = "+100 Zdobycie strefy wroga", + + ["hud_invasion_1"] = "SKRZYNIE ZAPASOWE W DRODZE", + ["hud_invasion_2"] = "SILNE WZMOCNIENIA W DRODZE", + + ["contols_main"] = "Klawisze:", + ["contols_f1"] = "ESC - Edytuj wyposażenie", + ["contols_e"] = "E - Egzekucja", + ["contols_q"] = "Q, G - Rzuć granat", + ["contols_v"] = "V - Użyj noża", + ["contols_0"] = "7,8,9,0 - Użyj Killstreak", + ["contols_tab"] = "Tab - Scoreboard", + ["contols_open"] = "Przytrzymaj [INSERT] by otworzyć klawisze.", + + ["killstreak_1"] = "UAV", + ["killstreak_2"] = "Dron z bombą", + ["killstreak_3"] = "Pancerz", + ["killstreak_4"] = "Pakiet Zaopatrzenia", + ["killstreak_5"] = "Kontr-UAV", + ["killstreak_6"] = "Mina", + ["killstreak_7"] = "Precyzyjny Nalot", + ["killstreak_8"] = "Jednostka K9", + ["killstreak_9"] = "Wieżyczka", + ["killstreak_10"] = "Patrol powietrzny", + ["killstreak_11"] = "Ostrzał moździerzem", + ["killstreak_12"] = "SAE", + ["killstreak_13"] = "Helikopter Obserwacyjny", + ["killstreak_14"] = "VTOL", + ["killstreak_15"] = "Wsparcie", + ["killstreak_16"] = "Zamaskowany bombowiec", + ["killstreak_17"] = "Strzelec Helikoptera", + ["killstreak_18"] = "Zaawansowany UAV", + ["killstreak_19"] = "Awaryjny Zrzut", + ["killstreak_20"] = "AC-130", + ["killstreak_21"] = "Juggernaut", + ["killstreak_22"] = "Taktyczny Nuke", + + ["killstreak_desc_1"] = "UAV - statek rozpoznawczy, który ujawnia położenie wrogów na minimapie.", + ["killstreak_desc_2"] = "Sterowany zdalnie dron z zamocowaną ładunkiem C4.", + ["killstreak_desc_3"] = "Daje torbę z pancerzem dla całej drużyny.", + ["killstreak_desc_4"] = "Wywołuje losowy pakiet wsparcia na twoją pozycję.", + ["killstreak_desc_5"] = "Dron, który zakłóca minimapy wrogów.", + ["killstreak_desc_6"] = "Rzuć urządzenie, które wypuszcza gromadę mniejszych min w okolicy.", + ["killstreak_desc_7"] = "Wezwij podwójne samoloty do precyzyjnego uderzenia po najlepszej dostępnej ścieżce.", + ["killstreak_desc_8"] = "Wezwij jednostkę K9 do szukania wrogów.", + ["killstreak_desc_9"] = "Automatyczna wieżyczka skanująca otoczenie w poszukiwaniu wrogów i strzelająca pociskami zapalającymi.", + ["killstreak_desc_10"] = "Trzy samoloty, śledzące pojazdy powietrzne i strzelające do nich, zwalniając przestrzeń powietrzną.", + ["killstreak_desc_11"] = "Zaznacz cel, by wywołać fale moździerzy na wybrane miejsce.", + ["killstreak_desc_12"] = "Wezwij trójkę samolotów, by zrzuciły bomby na wskazane cele.", + ["killstreak_desc_13"] = "Atakujący helikopter, który patroluje okolice i znajduje wrogów przed ich atakiem.", + ["killstreak_desc_14"] = "Zrzuca precyzyjną bombę, po czym krąży wokół i pilnuje zaznaczonej pozycji.", + ["killstreak_desc_15"] = "Helikopter, z którego wysiada trzech żołnierzy z ciężkim uzbrojeniem.", + ["killstreak_desc_16"] = "Wezwij bombowiec, który zrzuci duży ładunek wybuchowy wzdłuż swojej trasy.", + ["killstreak_desc_17"] = "Steruj atakującym helikopterem uzbrojonym w wieżyczkę i pociski powietrze-ziemia.", + ["killstreak_desc_18"] = "Orbitalny UAV, który w czasie rzeczywistym ujawnia kierunek przeciwników na minimapie.", + ["killstreak_desc_19"] = "Wezwij 3 losowe pakiety wsparcia na twoją pozycję.", + ["killstreak_desc_20"] = "Ciężko uzbrojony helikopter szturmowy wyposażony w pociski rakietowe, wraz z działami 40mm i 25mm.", + ["killstreak_desc_21"] = "Zestaw szturmowy Juggernaut z minigunem dostarczany przez pakiet opieki.", + ["killstreak_desc_22"] = "Masywny cios dla twojej pozycji. Zakończy grę na korzyść twojego zespołu.", + + ["main_menu_1"] = "Wznów grę", + ["main_menu_2"] = "Zmień ekwipunek", + ["main_menu_3"] = "Ustawienia", + ["main_menu_4"] = "Menu główne", + + ["main_menu_settings_1"] = "Muzyka: ", + ["main_menu_settings_2"] = "Komentator: ", + ["main_menu_settings_3"] = "Killcam: ", + ["main_menu_settings_4"] = "Serwer Discord", + ["main_menu_settings_cm"] = "Custom Muzyka: ", + + ["main_menu_loadout"] = "Ekwipunek", + ["main_menu_loadout_wep"] = "Twój wybór:", + ["main_menu_loadout_1"] = "Broń podstawowa", + ["main_menu_loadout_2"] = "Broń dodatkowa", + ["main_menu_loadout_3"] = "Seria zabójstw", + ["main_menu_loadout_3_1"] = "Wybrane serie zabójstw - ", + ["main_menu_loadout_4"] = "Zdolności specjalne", + ["main_menu_loadout_5"] = "Zabójstwa specjalne", + ["main_menu_loadout_6"] = "Zastosuj", + ["main_menu_loadout_7"] = "Wyjście", + + ["perk_1_1"] = "Saper", + ["perk_1_2"] = "Wywiadowca", + ["perk_1_3"] = "Twardogłowy", + ["perk_1_4"] = "Powtórne zaopatrzenie", + ["perk_1_1_desc"] = "Redukuje obrażenia od eksplozji.", + ["perk_1_2_desc"] = "Możliwość widzenia przez ściany pakietów i wsparcia przeciwnika.", + ["perk_1_3_desc"] = "Redukuje wymóg killstreak o 1 punkt.", + ["perk_1_4_desc"] = "Co 30 sekund, zyskujesz 1 magazynek do swojej obecnej broni.", + ["perk_2_1"] = "Szybkie Leczenie", + ["perk_2_2"] = "Ocalały", + ["perk_2_3"] = "Duch", + ["perk_2_4"] = "Zimnokrwisty", + ["perk_2_1_desc"] = "Twoje zdrowie regeneruje się w 3 sekundy zamiast 8 sekund.", + ["perk_2_2_desc"] = "Zamiast umrzeć, wchodzisz w stan ostatnich działań raz na życie.", + ["perk_2_3_desc"] = "Niewidoczny dla każdego UAV.", + ["perk_2_4_desc"] = "Niewidoczny dla pojazdów i wrogiego wsparcia.", + + ["gamemode_1"] = "Druzynowy Deathmatch", + ["gamemode_2"] = "Inwazja", + ["gamemode_3"] = "Knock Out", + ["gamemode_4"] = "ZARAŻENI", + ["gamemode_5"] = "DOMINACJA", + + ["gamemode_1_desc"] = "Wyeliminuj wrogów za wszelką cenę.", + ["gamemode_2_desc"] = "Wyeliminuj wrogów za wszelką cenę.", + ["gamemode_3_desc"] = "Wyeliminuj wrogów za wszelką cenę.", + ["gamemode_4_desc"] = "Przetrwaj lub zainfekuj wszystkich.", + ["gamemode_5_desc"] = "Zdobądź kontrolę nad wszystkimi sektorami na lokacji.", + + ["killcam_1"] = "Twoja śmierć", + ["killcam_2"] = "Ostateczne zabójstwo", + ["killcam_3"] = "Naciśnij SPACJĘ, aby pominąć", +} \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/lang/russian.lua b/gamemodes/cod_custom/gamemode/lang/russian.lua new file mode 100644 index 0000000..f17acc2 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/lang/russian.lua @@ -0,0 +1,169 @@ +COD.Language = { + ["team1_name"] = "СпецГру", + ["team2_name"] = "КорТак", + + ["scoreboard_score"] = "Счёт", + ["scoreboard_kd"] = "У/С", + + ["menu_warning_ks"] = "Внимание! Ваши серии убийств будут обновлены, после окончания раунда.", + ["menu_mainweapon"] = "Ваше основное оружие: ", + ["menu_secweapon"] = "Ваше дополнительное оружие: ", + ["menu_ks_choose"] = "Выбор серии убийств - ", + ["menu_mainperk"] = "Выбор основного перка", + ["menu_highperk"] = "Выбор высшего перка", + ["menu_choosemain"] = "Выбор основного оружия", + ["menu_choosesec"] = "Выбор дополнительного оружия", + ["menu_apply"] = "Применить", + + ["hud_killer"] = "Убийца: ", + ["hud_killed"] = "ЖЕРТВА: ", + ["hud_teamdeathmatch"] = "КОМАНДНЫЙ БОЙ", + ["hud_win"] = "ПОБЕДА", + ["hud_lose"] = "ПОРАЖЕНИЕ", + ["hud_unlockmainperk"] = " - Разблокирован основной перк!", + ["hud_unlockhighperk"] = " - Разблокирован высший перк!", + ["hud_unlockkillstreak"] = "Готов к использованию!", + ["hud_package"] = "Зажмите [E], чтобы подобрать ", + ["hud_fullpackage"] = "Зажмите [E], чтобы подобрать посылку", + ["hud_revive"] = "Прогресс реанимации", + ["hud_torevive"] = "Зажмите E для реанимации", + ["hud_reviver"] = "Вас реанимируют", + ["hud_selfrevive"] = "Прогресс самореанимации", + ["hud_toselfrevive"] = "Зажмите E для самореанимации", + ["hud_kills"] = "Убийств: ", + ["hud_killstreak"] = "Серия убийств", + ["hud_nuke"] = "ОБНАРУЖЕН МАССИРОВАННЫЙ УДАР", + ["hud_scoreadd_1"] = "+100 Ликвидация", + ["hud_scoreadd_2"] = "+110 Выстрел в голову", + ["hud_scoreadd_3"] = "+150 Добивающий удар", + ["hud_scoreadd_4"] = "+50 Уничтожение подкрепления", + ["hud_scoreadd_5"] = "+125 Рукопашный бой", + ["hud_scoreadd_6"] = "+100 Реанимация", + ["hud_scoreadd_7"] = "+250 Сигнал бедствия", + + ["hud_message_1"] = "Первый заражённый", + ["hud_message_2"] = "Последний выживший", + ["hud_message_3"] = "+50 Выживший", + + ["hud_domination_1"] = "ЗАХВАТИТЬ", + ["hud_domination_2"] = "ЗАЩИЩАТЬ", + ["hud_domination_3"] = "ПРОГРЕСС", + ["hud_domination_4"] = "+200 Нейтральная зона захвачена", + ["hud_domination_5"] = "+100 Вражеская зона захвачена", + + ["hud_invasion_1"] = "ЯЩИКИ СНАБЖЕНИЯ В ПУТИ", + ["hud_invasion_2"] = "ТЯЖЕЛОЕ ПОДКРЕПЛЕНИЕ В ПУТИ", + + ["contols_main"] = "Управление:", + ["contols_f1"] = "ESC - Изменить комплект", + ["contols_e"] = "E - Добивающий удар", + ["contols_q"] = "Q, G - Бросить гранату", + ["contols_v"] = "V - Использовать нож", + ["contols_0"] = "7,8,9,0 - Использование серии убийств", + ["contols_tab"] = "Tab - Счёт", + ["contols_open"] = "Зажмите INSERT, чтобы открыть управление.", + + ["killstreak_1"] = "БПЛА", + ["killstreak_2"] = "Дрон-камикадзе", + ["killstreak_3"] = "Броня", + ["killstreak_4"] = "Посылка", + ["killstreak_5"] = "Контр-БПЛА", + ["killstreak_6"] = "Кассетная мина", + ["killstreak_7"] = "Точечный авиаудар", + ["killstreak_8"] = "Сторожевая собака", + ["killstreak_9"] = "Турель", + ["killstreak_10"] = "Воздушный патруль", + ["killstreak_11"] = "Миномётный удар", + ["killstreak_12"] = "Стратегический удар", + ["killstreak_13"] = "Вертолёт поддержки", + ["killstreak_14"] = "СВВП", + ["killstreak_15"] = "Подкрепление", + ["killstreak_16"] = "Стелс-бомбардировщик", + ["killstreak_17"] = "Вертолёт со стрелком", + ["killstreak_18"] = "МБПЛА", + ["killstreak_19"] = "Экстренный груз", + ["killstreak_20"] = "AC-130", + ["killstreak_21"] = "Джаггернаут", + ["killstreak_22"] = "MGB", + + ["killstreak_desc_1"] = "БПЛА, который показывает местоположение противника на мини-карте.", + ["killstreak_desc_2"] = "Управляемый дрон с прикрепленным зарядом C4.", + ["killstreak_desc_3"] = "Дает мешок брони для всей команды.", + ["killstreak_desc_4"] = "Вызовите случайную посылку с серией убийств к себе.", + ["killstreak_desc_5"] = "Дрон, который блокирует все вражеские миникарты.", + ["killstreak_desc_6"] = "Взрывное устройство, которое запускает группу небольших мин в непосредственной близости.", + ["killstreak_desc_7"] = "Вызов двойных реактивных самолетов для точного удара по наилучшему доступному пути.", + ["killstreak_desc_8"] = "Вызов сторожевой собаки для поиска врагов.", + ["killstreak_desc_9"] = "Автоматическая турель, которая сканирует ближайших врагов и стреляет зажигательными снарядами.", + ["killstreak_desc_10"] = "Три самолета, выслеживающий воздушные транспортные средства, сбивает их, освобождая воздушное пространство.", + ["killstreak_desc_11"] = "Отметьте целевое местоположение, чтобы дать сигнал нескольким волнам минометов атаковать область.", + ["killstreak_desc_12"] = "Вызовите три реактивных самолета, чтобы сбросить взрывчатку с воздуха на указанные цели.", + ["killstreak_desc_13"] = "Атакующий вертолет, который будет следить за позициями и находить врагов, прежде чем атаковать их.", + ["killstreak_desc_14"] = "Выпускает прицельную бомбу, прежде чем вернуться и охранять отмеченное место.", + ["killstreak_desc_15"] = "Вертолет, который высаживает трех солдат с тяжелой подготовкой.", + ["killstreak_desc_16"] = "Вызов бомбардировщика, который выпускает на своем пути большую линию взрывчатки.", + ["killstreak_desc_17"] = "Управляйте штурмовым вертолетом, вооруженным турелью и ракетами класса воздух-земля.", + ["killstreak_desc_18"] = "Орбитальный БПЛА, который показывает направление противника на мини-карте в режиме реального времени.", + ["killstreak_desc_19"] = "Вызовите к себе 3 случайные посылки с серией убийств.", + ["killstreak_desc_20"] = "Тяжелый штурмовой боевой корабль, оснащенный ракетой, а также 40-мм и 25-мм пушками.", + ["killstreak_desc_21"] = "Штурмовое снаряжение Джаггернаута с миниганом доставлено посылкой.", + ["killstreak_desc_22"] = "Массированный удар по вашей позиции. Закончит игру в пользу вашей команды.", + + ["main_menu_1"] = "Продолжить игру", + ["main_menu_2"] = "Изменить комплект", + ["main_menu_3"] = "Настройки", + ["main_menu_4"] = "Главное меню", + + ["main_menu_settings_1"] = "Музыка: ", + ["main_menu_settings_2"] = "Диктор: ", + ["main_menu_settings_3"] = "Момент смерти: ", + ["main_menu_settings_4"] = "Дискорд сервер", + ["main_menu_settings_cm"] = "Своя музыка: ", + + ["main_menu_loadout"] = "Комплект", + ["main_menu_loadout_wep"] = "Ваш выбор:", + ["main_menu_loadout_1"] = "Основное оружие", + ["main_menu_loadout_2"] = "Доп. оружие", + ["main_menu_loadout_3"] = "Серии убийств", + ["main_menu_loadout_3_1"] = "Выбрано серий убийств - ", + ["main_menu_loadout_4"] = "Перки", + ["main_menu_loadout_5"] = "Добивающие удары", + ["main_menu_loadout_6"] = "Применить", + ["main_menu_loadout_7"] = "Выйти", + + ["perk_1_1"] = "Взрывотехник", + ["perk_1_2"] = "Наблюдатель", + ["perk_1_3"] = "Упрямство", + ["perk_1_4"] = "Пополнение запасов", + ["perk_1_1_desc"] = "Уменьшает урон от взрывов.", + ["perk_1_2_desc"] = "Способность видеть через стены вражеские посылки и подкрепление.", + ["perk_1_3_desc"] = "Уменьшение серий убийств на 1.", + ["perk_1_4_desc"] = "Каждые 30 секунд, вам дается 1 магазин к текущему оружию.", + ["perk_2_1"] = "Быстрое лечение", + ["perk_2_2"] = "Выживание", + ["perk_2_3"] = "Призрак", + ["perk_2_4"] = "Хладнокровие", + ["perk_2_1_desc"] = "Ваше здоровье востанавливается через 3 секунды, вместо 8 секунд.", + ["perk_2_2_desc"] = "Вместо того чтобы умереть вы переходите в состояние последнего рывка 1 раз за жизнь.", + ["perk_2_3_desc"] = "Невидимость для БПЛА.", + ["perk_2_4_desc"] = "Невидимость для техники и вражеских подкреплений.", + + ["gamemode_1"] = "КОМАНДНЫЙ БОЙ", + ["gamemode_2"] = "ВТОРЖЕНИЕ", + ["gamemode_3"] = "НОКАУТ", + ["gamemode_4"] = "ЗАРАЖЕНИЕ", + ["gamemode_5"] = "ПРЕВОСХОДСТВО", + + ["gamemode_1_desc"] = "Ликвидируйте силы противника.", + ["gamemode_2_desc"] = "Имея подкрепление, ликвидируйте силы противника.", + ["gamemode_3_desc"] = "Ликвидируйте силы противника.", + ["gamemode_4_desc"] = "Выживите или заразите всех.", + ["gamemode_5_desc"] = "Контролируйте все сектора на локации.", + + ["killcam_1"] = "Ваша смерть", + ["killcam_2"] = "Финальное убийство", + ["killcam_3"] = "Нажмите SPACE чтобы пропустить", + + ["admin_menu_title"] = "Админ Меню", + ["admin_change_gamemode"] = "Сменить режим", +} \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/lang/spanish.lua b/gamemodes/cod_custom/gamemode/lang/spanish.lua new file mode 100644 index 0000000..a3ff80c --- /dev/null +++ b/gamemodes/cod_custom/gamemode/lang/spanish.lua @@ -0,0 +1,166 @@ +COD.Language = { + ["team1_name"] = "SpecGru", + ["team2_name"] = "KorTac", + + ["scoreboard_score"] = "Puntuación", + ["scoreboard_kd"] = "K/D", + + ["menu_warning_ks"] = "Advertencia! Tu racha de bajas sera reiniciada cuando la ronda termine.", + ["menu_mainweapon"] = "Tu arma principal es: ", + ["menu_secweapon"] = "Tu arma secundaria es: ", + ["menu_ks_choose"] = "Seleccion de rachas de bajas - ", + ["menu_mainperk"] = "Seleccion de ventaja", + ["menu_highperk"] = "Seleccion de ventaja definitiva", + ["menu_choosemain"] = "Seleccion de arma principal", + ["menu_choosesec"] = "Seleccion de arma secundaria", + ["menu_apply"] = "Aplicar", + + ["hud_killed"] = "MUERTO: ", + ["hud_killer"] = "Asesinado por: ", + ["hud_teamdeathmatch"] = "DUELO POR EQUIPOS", + ["hud_win"] = "VICTORIA", + ["hud_lose"] = "DERROTA", + ["hud_unlockmainperk"] = " - Ventaja principal Desbloqueada!", + ["hud_unlockhighperk"] = " - Ventaja definitiva Desbloqueada!", + ["hud_unlockkillstreak"] = "Listo para usar!", + ["hud_package"] = "Presiona [E] para hagarrar ", + ["hud_fullpackage"] = "Presiona [E] para tomar el paquete", + ["hud_revive"] = "Reanimacion en progreso", + ["hud_torevive"] = "Presiona E para Reanimar", + ["hud_reviver"] = "Estas siendo reanimado", + ["hud_selfrevive"] = "Auto-reanimacion en progreso", + ["hud_toselfrevive"] = "Presiona E para Auto-reanimarte", + ["hud_kills"] = "Bajas: ", + ["hud_killstreak"] = "Racha de Bajas", + ["hud_nuke"] = "MISIL BALISTICO DETECTADO", + ["hud_scoreadd_1"] = "+100 Baja", + ["hud_scoreadd_2"] = "+110 Disparo ala cabeza", + ["hud_scoreadd_3"] = "+150 Remate", + ["hud_scoreadd_4"] = "+50 Refuerzos Destruidos", + ["hud_scoreadd_5"] = "+125 Cuerpo a cuerpo", + ["hud_scoreadd_6"] = "+100 Reanimacion", + ["hud_scoreadd_7"] = "+250 Llamado de alerta", + + ["hud_message_1"] = "Primer infectado", + ["hud_message_2"] = "Ultimo sobreviviente", + ["hud_message_3"] = "+50 Sobrevivientes", + + ["hud_domination_1"] = "CAPTURA", + ["hud_domination_2"] = "DEFENDER", + ["hud_domination_3"] = "PROGRESO", + ["hud_domination_4"] = "+200 Zona neutral capturada", + ["hud_domination_5"] = "+100 Zona enemiga capturada", + + ["hud_invasion_1"] = "CAJA DE SUMINISTROS EN CAMINO", + ["hud_invasion_2"] = "REFUERZOS EN CAMINO", + + ["contols_main"] = "Controles:", + ["contols_f1"] = "ESC - Editar Equipamiento", + ["contols_e"] = "E - Remate", + ["contols_q"] = "Q, G - Lanzar Granada", + ["contols_v"] = "V - Cuchillo", + ["contols_0"] = "7,8,9,0 - Racha de bajas", + ["contols_tab"] = "Tab - Puntuacion", + ["contols_open"] = "Manten INSERT para abrir los controles.", + + ["killstreak_1"] = "UAV", + ["killstreak_2"] = "Bomb Drone", + ["killstreak_3"] = "Armor", + ["killstreak_4"] = "Care Package", + ["killstreak_5"] = "Counter-UAV", + ["killstreak_6"] = "Cluster Mine", + ["killstreak_7"] = "Precision Airstrike", + ["killstreak_8"] = "K9 Unit", + ["killstreak_9"] = "Sentry Gun", + ["killstreak_10"] = "Air Patrol", + ["killstreak_11"] = "Mortar Strike", + ["killstreak_12"] = "SAE", + ["killstreak_13"] = "Overwatch Helo", + ["killstreak_14"] = "VTOL", + ["killstreak_15"] = "Reinforcement", + ["killstreak_16"] = "Stealth Bomber", + ["killstreak_17"] = "Chopper Gunner", + ["killstreak_18"] = "Advanced UAV", + ["killstreak_19"] = "Emergency Airdrop", + ["killstreak_20"] = "AC-130", + ["killstreak_21"] = "Juggernaut", + ["killstreak_22"] = "MGB", + + ["killstreak_desc_1"] = "nave de reconocimiento UAV que muestra la ubicacion del enemigo en el mapa.", + ["killstreak_desc_2"] = "Dron a control remoto que lleva una carga de C4.", + ["killstreak_desc_3"] = "bolsa de armadura que otorga armadura a todo el equipo.", + ["killstreak_desc_4"] = "Solicita un paquete de ayuda a tu ubicacion con una racha de bajas aleatoria.", + ["killstreak_desc_5"] = "Dron que inhibe todos los minimapas de los enemigos.", + ["killstreak_desc_6"] = "Arroja un dispositivo que lanza un racimo de minas pequeñas en el area mas cercana.", + ["killstreak_desc_7"] = "jets que arrojaran un ataque aereo en el area.", + ["killstreak_desc_8"] = "Solicita un perro de apoyo para buscar enemigos en el area.", + ["killstreak_desc_9"] = "Torreta automatizada que identifica enemigos cercanos.", + ["killstreak_desc_10"] = "Tres jets que eliminan alos vehiculos aereos enemigos en el area.", + ["killstreak_desc_11"] = "Señala varias oleadas de morteros para atacar un lugar.", + ["killstreak_desc_12"] = "Solicita un trio de aviones de combate que ataquen objetivos especificos.", + ["killstreak_desc_13"] = "Helicoptero de escolta,vigilara tu posicion y marcara enemigos antes de atacar.", + ["killstreak_desc_14"] = "Lanza un par de bombas de precision antes de regresar a proteger una zona marcada.", + ["killstreak_desc_15"] = "Helicoptero de apoyo que desplegara soldados bien entrenados.", + ["killstreak_desc_16"] = "Bombardero que lanzara una oleada de bombas mientras sigue su ruta.", + ["killstreak_desc_17"] = "controla un helicoptero de asalto armado con torreta y misiles aire-tierra.", + ["killstreak_desc_18"] = "UAV orbital sin objetivo,muestra al enemigo en tiempo real.", + ["killstreak_desc_19"] = "Solicita tres paquetes de ayuda de rachas de bajas aleatorias a tu ubicacion.", + ["killstreak_desc_20"] = "Solicita un avion artillado de asalto pesado equipado con un misil laser rastreador y cañones de 40MM y 25MM.", + ["killstreak_desc_21"] = "Armadura juggernaut entregada por un paquete de ayuda.", + ["killstreak_desc_22"] = "Una explosion gigante que terminara la partida a favor de tu equipo.", + + ["main_menu_1"] = "Continuar", + ["main_menu_2"] = "Cambiar Equipamiento", + ["main_menu_3"] = "Opciones", + ["main_menu_4"] = "Menu principal", + + ["main_menu_settings_1"] = "Musica: ", + ["main_menu_settings_2"] = "Anunciador: ", + ["main_menu_settings_3"] = "Camara de muerte: ", + ["main_menu_settings_4"] = "Servidor de discord", + ["main_menu_settings_cm"] = "Custom Musica: ", + + ["main_menu_loadout"] = "Equipamiento", + ["main_menu_loadout_wep"] = "Tu seleccion:", + ["main_menu_loadout_1"] = "Arma Primaria", + ["main_menu_loadout_2"] = "Arma secundaria", + ["main_menu_loadout_3"] = "Racha de Bajas", + ["main_menu_loadout_3_1"] = "Racha de Bajas seleccionada - ", + ["main_menu_loadout_4"] = "Ventajas", + ["main_menu_loadout_5"] = "Remates", + ["main_menu_loadout_6"] = "Aplicar", + ["main_menu_loadout_7"] = "Salir", + + ["perk_1_1"] = "Pelotón de explosivos", + ["perk_1_2"] = "Rastreador", + ["perk_1_3"] = "Línea dura", + ["perk_1_4"] = "Reabastecimiento", + ["perk_1_1_desc"] = "Reduce el daño por explosivos.", + ["perk_1_2_desc"] = "Puedes ver paquetes y refuerzos enemigos atravez de las paredes.", + ["perk_1_3_desc"] = "Reduce el coste de las bajas de rachas por 1.", + ["perk_1_4_desc"] = "Cada 30 segundos ganas un cargador para tu arma.", + ["perk_2_1"] = "Parche rápido", + ["perk_2_2"] = "Superviviente", + ["perk_2_3"] = "Fantasma", + ["perk_2_4"] = "Sangre fría", + ["perk_2_1_desc"] = "Tu salud se regenera despues de 3 segundos en vez de 8 segundos.", + ["perk_2_2_desc"] = "Al morir, pasas a Última batalla con la posibilidad de autorreanimarte una vez por vida.", + ["perk_2_3_desc"] = "Indetectable para UAVS.", + ["perk_2_4_desc"] = "indetectable para vehiculos y refuerzos enemigos.", + + ["gamemode_1"] = "DUELO POR EQUIPOS", + ["gamemode_2"] = "INVASION", + ["gamemode_3"] = "KNOCK OUT", + ["gamemode_4"] = "INFECTADO", + ["gamemode_5"] = "DOMINIO", + + ["gamemode_1_desc"] = "Elimina al enemigo a toda costa.", + ["gamemode_2_desc"] = "Elimina al enemigo a toda costa.", + ["gamemode_3_desc"] = "Elimina al enemigo a toda costa.", + ["gamemode_4_desc"] = "Sobrevive o infecta alos demas.", + ["gamemode_5_desc"] = "Controla todos los sectores en el mapa.", + + ["killcam_1"] = "Tu muerte", + ["killcam_2"] = "Muerte final", + ["killcam_3"] = "ESPACIO para saltar", +} \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/lang/turkish.lua b/gamemodes/cod_custom/gamemode/lang/turkish.lua new file mode 100644 index 0000000..3cd9405 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/lang/turkish.lua @@ -0,0 +1,166 @@ +COD.Language = { + ["team1_name"] = "SpecGru", + ["team2_name"] = "KorTac", + + ["scoreboard_score"] = "Puan", + ["scoreboard_kd"] = "K/D", + + ["menu_warning_ks"] = "Dikkat! Öldürme serisi tur bittikten sonra yenilenecek.", + ["menu_mainweapon"] = "Ana silahın: ", + ["menu_secweapon"] = "İkincil silahın: ", + ["menu_ks_choose"] = "Öldürme serisi sırası seç - ", + ["menu_mainperk"] = "Ana yetenek seçin", + ["menu_highperk"] = "Gelişmiş yetenek seçin", + ["menu_choosemain"] = "Ana silah seçimi", + ["menu_choosesec"] = "İkincil silah seçimi", + ["menu_apply"] = "Uygula", + + ["hud_killer"] = "Öldüren: ", + ["hud_killed"] = "Ölen: ", + ["hud_teamdeathmatch"] = "Takım Ölüm Savaşı", + ["hud_win"] = "Zafer", + ["hud_lose"] = "Yenilgi", + ["hud_unlockmainperk"] = " - Ana yetenek açıldı!", + ["hud_unlockhighperk"] = " - Gelişmiş yetenek açıldı!", + ["hud_unlockkillstreak"] = "Kullanmaya hazır!", + ["hud_package"] = "Almak için [E] bas ", + ["hud_fullpackage"] = "Paketi almak için [E] bas", + ["hud_revive"] = "Canlandırma süresi", + ["hud_torevive"] = "Canlandırmak için E bas", + ["hud_reviver"] = "Canlandırılıyorsun", + ["hud_selfrevive"] = "Kendini canlandırma süresi", + ["hud_toselfrevive"] = "Kendini canlandırmak için E bas", + ["hud_kills"] = "Öldürmeler: ", + ["hud_killstreak"] = "Öldürme serileri", + ["hud_nuke"] = "Balistik füze atışı saptandı", + ["hud_scoreadd_1"] = "+100 Öldürme", + ["hud_scoreadd_2"] = "+110 Kafadan Vuruş", + ["hud_scoreadd_3"] = "+150 Bitirici hareket", + ["hud_scoreadd_4"] = "+50 Takviyeler yok edildi", + ["hud_scoreadd_5"] = "+125 Yakın Dövüş", + ["hud_scoreadd_6"] = "+100 Canlandırma", + ["hud_scoreadd_7"] = "+250 Mayday", + + ["hud_message_1"] = "İlk Enfekte", + ["hud_message_2"] = "Son Yaşayan", + ["hud_message_3"] = "+50 Yaşayan", + + ["hud_invasion_1"] = "Malzeme kutuları yolda", + ["hud_invasion_2"] = "Zırhlı Takviye birlikleri yolda", + + ["hud_domination_1"] = "Ele Geçir", + ["hud_domination_2"] = "Savun", + ["hud_domination_3"] = "Süreç", + ["hud_domination_4"] = "+200 Boş bölge ele geçirildi", + ["hud_domination_5"] = "+100 Düşman bölgesi ele geçirildi", + + ["contols_main"] = "Control:", + ["contols_f1"] = "ESC - Teçhizatı düzenle", + ["contols_e"] = "E - Bitirici hareket", + ["contols_q"] = "Q, G - Bomba fırlat", + ["contols_v"] = "V - Yakın dövüş", + ["contols_0"] = "7,8,9,0 - Skor serisi kullan", + ["contols_tab"] = "Tab - Skor tablosu", + ["contols_open"] = "INSERT tuşuna basılı tutarak ayarları aç.", + + ["killstreak_1"] = "UAV", + ["killstreak_2"] = "Bomba dronu", + ["killstreak_3"] = "Zırh", + ["killstreak_4"] = "Yardım paketi", + ["killstreak_5"] = "Counter-UAV", + ["killstreak_6"] = "Mayın", + ["killstreak_7"] = "İkili hava saldırısı", + ["killstreak_8"] = "K9 Köpekleri", + ["killstreak_9"] = "Nöbetçi silahı", + ["killstreak_10"] = "Hava devriyesi", + ["killstreak_11"] = "Havan saldırısı", + ["killstreak_12"] = "SAE", + ["killstreak_13"] = "Gözcü Helikopter", + ["killstreak_14"] = "VTOL", + ["killstreak_15"] = "Takviye", + ["killstreak_16"] = "Bomba Yağdırıcı", + ["killstreak_17"] = "Savaş Helikopteri", + ["killstreak_18"] = "Gelişmiş UAV", + ["killstreak_19"] = "Çoklu yardım paketi", + ["killstreak_20"] = "AC-130", + ["killstreak_21"] = "Juggernaut", + ["killstreak_22"] = "Nükleer Bomba", + + ["killstreak_desc_1"] = "Mini haritada düşman konumlarını ortaya çıkaran UAV keşif uçağı.", + ["killstreak_desc_2"] = "C4 takılı uzaktan kumandalı bir drone.", + ["killstreak_desc_3"] = "Tüm ekip için bir çanta dolusu zırh verir.", + ["killstreak_desc_4"] = "Bulunduğunuz yere rastgele bir öldürmeserisi bakım paketi gönderin.", + ["killstreak_desc_5"] = "Tüm düşman mini haritalarını karıştıran bir drone.", + ["killstreak_desc_6"] = "Yakın çevrede bir dizi daha küçük mayın fırlatan bir cihaz atın.", + ["killstreak_desc_7"] = "Mevcut en iyi yol boyunca kritik bir saldırı için ikiz jetleri arayın.", + ["killstreak_desc_8"] = "Rakibi aramak için K9 köpeklerini çağır.", + ["killstreak_desc_9"] = "Yakındaki düşmanları tarayan ve yanıcı mermiler ateşleyen otomatik taret.", + ["killstreak_desc_10"] = "Üç jet, hava araçlarını takip edin ve vurarak hava sahasını boşaltın.", + ["killstreak_desc_11"] = "Bölgeye saldırmak için birkaç havan topu dalgası sinyali vermek için bir hedef konumu işaretleyin.", + ["killstreak_desc_12"] = "Belirli hedeflere hava patlayıcıları atmak için üç jet çağırın.", + ["killstreak_desc_13"] = "Pozisyonları gözetleyecek ve onlarla çarpışmadan önce düşmanı bulan bir saldırı helikopteri.", + ["killstreak_desc_14"] = "Geri dönüp işaretli bir yeri korumadan önce hassas bir bomba atar.", + ["killstreak_desc_15"] = "Sıkı eğitimli üç askeri indiren bir helikopter.", + ["killstreak_desc_16"] = "Yolu boyunca geniş bir patlayıcı hattı bırakan bir bombardıman uçağını çağırın.", + ["killstreak_desc_17"] = "Taret ve havadan karaya füzelerle donanmış bir saldırı helikopterini kontrol edin.", + ["killstreak_desc_18"] = "Mini haritada düşmanın yönünü gerçek zamanlı olarak gösteren yörüngesel bir UAV.", + ["killstreak_desc_19"] = "Bulunduğunuz yere 3 rastgele öldürmeserisi bakım paketi gönderin.", + ["killstreak_desc_20"] = "40 mm ve 25 mm toplarla birlikte bir füze ile donatılmış ağır taarruz savaş uçağı.", + ["killstreak_desc_21"] = "Bakım paketi ile teslim edilen minigunlu devasa saldırı teçhizatı.", + ["killstreak_desc_22"] = "Pozisyonunuza büyük bir darbe. Oyunu takımınızın lehine bitirecek.", + + ["main_menu_1"] = "Oyuna Devam", + ["main_menu_2"] = "Ekipmanı Değiştir", + ["main_menu_3"] = "Ayarlar", + ["main_menu_4"] = "Ana Menü", + + ["main_menu_settings_1"] = "Müzik: ", + ["main_menu_settings_2"] = "Spiker: ", + ["main_menu_settings_3"] = "Ölüm Kamerası: ", + ["main_menu_settings_4"] = "Discord Server", + ["main_menu_settings_cm"] = "Custom Müzik: ", + + ["main_menu_loadout"] = "Ekipman", + ["main_menu_loadout_wep"] = "Senin Seçimin:", + ["main_menu_loadout_1"] = "Ana Silah", + ["main_menu_loadout_2"] = "İkincil Silah", + ["main_menu_loadout_3"] = "Öldürme Serisi", + ["main_menu_loadout_3_1"] = "Öldürme Serisi Seçildi - ", + ["main_menu_loadout_4"] = "Özellikler", + ["main_menu_loadout_5"] = "İnfazlar", + ["main_menu_loadout_6"] = "Kaydet", + ["main_menu_loadout_7"] = "Çık", + + ["perk_1_1"] = "Bomba Timi", + ["perk_1_2"] = "Gözcü", + ["perk_1_3"] = "Kararlı", + ["perk_1_4"] = "İkmal", + ["perk_1_1_desc"] = "Patlama hasarını azaltır.", + ["perk_1_2_desc"] = "Düşman paketlerini ve takviyelerini duvar arkasından gösteren yetenek.", + ["perk_1_3_desc"] = "Skor serilerini 1 puan azaltır.", + ["perk_1_4_desc"] = "Her 30 saniyede, mevcut silahına 1 şarjör kazanırsın.", + ["perk_2_1"] = "Hızlı Yenilenme", + ["perk_2_2"] = "Hayatta kalan", + ["perk_2_3"] = "Gizli", + ["perk_2_4"] = "Soğuk Kanlı", + ["perk_2_1_desc"] = "Can yenileme hızın 8 saniyeden 3 saniyeye düşer.", + ["perk_2_2_desc"] = "Öldüğün zaman, 1 kereliğe mahsus yere düşersin.", + ["perk_2_3_desc"] = "UAV'lere karşı görünmez olursun.", + ["perk_2_4_desc"] = "Araçlara ve düşman takviyelerine karşı görünmez olursun.", + + ["gamemode_1"] = "Takım Ölümsavaşı", + ["gamemode_2"] = "Baskın", + ["gamemode_3"] = "Nakavt", + ["gamemode_4"] = "Enfeksiyon", + ["gamemode_5"] = "Hakimiyet", + + ["gamemode_1_desc"] = "Ne pahasına olursa olsun düşmanı ortadan kaldırın.", + ["gamemode_2_desc"] = "Ne pahasına olursa olsun düşmanı ortadan kaldırın.", + ["gamemode_3_desc"] = "Ne pahasına olursa olsun düşmanı ortadan kaldırın.", + ["gamemode_4_desc"] = "Hayatta kal yada enfekte et.", + ["gamemode_5_desc"] = "Konumdaki tüm sektörleri ele geçirin.", + + ["killcam_1"] = "Ölümün", + ["killcam_2"] = "Son öldürme", + ["killcam_3"] = "Atlamak için SPACE bas", +} \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/lang/ukrainian.lua b/gamemodes/cod_custom/gamemode/lang/ukrainian.lua new file mode 100644 index 0000000..a25b1e5 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/lang/ukrainian.lua @@ -0,0 +1,166 @@ +COD.Language = { + ["team1_name"] = "СпецГру", + ["team2_name"] = "КорТак", + + ["scoreboard_score"] = "Рахунок", + ["scoreboard_kd"] = "У/С", + + ["menu_warning_ks"] = "Увага! Ваші серії вбивств будуть оновлені після закінчення раунду.", + ["menu_mainweapon"] = "Ваша основна зброя: ", + ["menu_secweapon"] = "Ваша додаткова зброя: ", + ["menu_ks_choose"] = "Вибір серії вбивств - ", + ["menu_mainperk"] = "Вибір основного перку", + ["menu_highperk"] = "Вибір вищого перку", + ["menu_choosemain"] = "Вибір основної зброї", + ["menu_choosesec"] = "Вибір додаткової зброї", + ["menu_apply"] = "Застосувати", + + ["hud_killer"] = "Вбивця: ", + ["hud_killed"] = "УБИТИЙ: ", + ["hud_teamdeathmatch"] = "КОМАНДНИЙ БІЙ", + ["hud_win"] = "ПЕРЕМОГА", + ["hud_lose"] = "УРАЖЕННЯ", + ["hud_unlockmainperk"] = " - Розблоковано основний перк!", + ["hud_unlockhighperk"] = " - Розблоковано вищий перк!", + ["hud_unlockkillstreak"] = "Готовий до використання!", + ["hud_package"] = "Затисніть [E], щоб підібрати ", + ["hud_fullpackage"] = "Затисніть [E], щоб підібрати посилку", + ["hud_revive"] = "Прогрес реанімації", + ["hud_torevive"] = "Затисніть E для реанімації", + ["hud_reviver"] = "Вас реанімують", + ["hud_selfrevive"] = "Прогрес самореанімації", + ["hud_toselfrevive"] = "Затисніть E для самореанімації", + ["hud_kills"] = "Вбивств: ", + ["hud_killstreak"] = "Серія вбивств", + ["hud_nuke"] = "ЗНАЧЕНО ЗАПУСК МАССIРОВАННОГО УДАРА", + ["hud_scoreadd_1"] = "+100 Ліквідація", + ["hud_scoreadd_2"] = "+110 Постріл у голову", + ["hud_scoreadd_3"] = "+150 удар, що добиває", + ["hud_scoreadd_4"] = "+50 Знищення підкріплення", + ["hud_scoreadd_5"] = "+125 Рукопашний бій", + ["hud_scoreadd_6"] = "+100 Реанімація", + ["hud_scoreadd_7"] = "+250 Сигнал лиха", + + ["hud_message_1"] = "Первый заражённый", + ["hud_message_2"] = "Последний выживший", + ["hud_message_3"] = "+50 Выживший", + + ["hud_domination_1"] = "ЗАХВАТИТЬ", + ["hud_domination_2"] = "ЗАЩИЩАТЬ", + ["hud_domination_3"] = "ПРОГРЕСС", + ["hud_domination_4"] = "+200 Нейтральная зона захвачена", + ["hud_domination_5"] = "+100 Вражеская зона захвачена", + + ["hud_invasion_1"] = "ЯЩИКИ СНАБЖЕНИЯ В ПУТИ", + ["hud_invasion_2"] = "ТЯЖЕЛОЕ ПОДКРЕПЛЕНИЕ В ПУТИ", + + ["contols_main"] = "Керування:", + ["contols_f1"] = "ESC - Змінити комплект", + ["contols_e"] = "E - удар, що добиває", + ["contols_q"] = "Q, G - Кинути гранату", + ["contols_v"] = "V - Використовувати ніж", + ["contols_0"] = "7,8,9,0 - Використання серії вбивств", + ["contols_tab"] = "Tab - Рахунок", + ["contols_open"] = "Затисніть INSERT, щоб відкрити керування.", + + ["killstreak_1"] = "БПЛА", + ["killstreak_2"] = "Дрон-камікадзе", + ["killstreak_3"] = "Броня", + ["killstreak_4"] = "Посилання", + ["killstreak_5"] = "Контр-БПЛА", + ["killstreak_6"] = "Касетна міна", + ["killstreak_7"] = "Точковий авіаудар", + ["killstreak_8"] = "Вартовий собака", + ["killstreak_9"] = "Турель", + ["killstreak_10"] = "Повітряний патруль", + ["killstreak_11"] = "Мінометний удар", + ["killstreak_12"] = "Стратегічний удар", + ["killstreak_13"] = "Вертоліт підтримки", + ["killstreak_14"] = "СВВП", + ["killstreak_15"] = "Підкріплення", + ["killstreak_16"] = "Стелс-бомбардувальник", + ["killstreak_17"] = "Гвинтокрил зі стрільцем", + ["killstreak_18"] = "МБПЛА", + ["killstreak_19"] = "Екстренний вантаж", + ["killstreak_20"] = "AC-130", + ["killstreak_21"] = "Джаггернаут", + ["killstreak_22"] = "Балістична ракета", + + ["killstreak_desc_1"] = "БПЛА, который показывает местоположение противника на мини-карте.", + ["killstreak_desc_2"] = "Управляемый дрон с прикрепленным зарядом C4.", + ["killstreak_desc_3"] = "Дает мешок брони для всей команды.", + ["killstreak_desc_4"] = "Вызовите случайную посылку с серией убийств к себе.", + ["killstreak_desc_5"] = "Дрон, который блокирует все вражеские миникарты.", + ["killstreak_desc_6"] = "Взрывное устройство, которое запускает группу небольших мин в непосредственной близости.", + ["killstreak_desc_7"] = "Вызов двойных реактивных самолетов для точного удара по наилучшему доступному пути.", + ["killstreak_desc_8"] = "Вызов сторожевой собаки для поиска врагов.", + ["killstreak_desc_9"] = "Автоматическая турель, которая сканирует ближайших врагов и стреляет зажигательными снарядами.", + ["killstreak_desc_10"] = "Три самолета, выслеживающий воздушные транспортные средства, сбивает их, освобождая воздушное пространство.", + ["killstreak_desc_11"] = "Отметьте целевое местоположение, чтобы дать сигнал нескольким волнам минометов атаковать область.", + ["killstreak_desc_12"] = "Вызовите три реактивных самолета, чтобы сбросить взрывчатку с воздуха на указанные цели.", + ["killstreak_desc_13"] = "Атакующий вертолет, который будет следить за позициями и находить врагов, прежде чем атаковать их.", + ["killstreak_desc_14"] = "Выпускает прицельную бомбу, прежде чем вернуться и охранять отмеченное место.", + ["killstreak_desc_15"] = "Вертолет, который высаживает трех солдат с тяжелой подготовкой.", + ["killstreak_desc_16"] = "Вызов бомбардировщика, который выпускает на своем пути большую линию взрывчатки.", + ["killstreak_desc_17"] = "Управляйте штурмовым вертолетом, вооруженным турелью и ракетами класса воздух-земля.", + ["killstreak_desc_18"] = "Орбитальный БПЛА, который показывает направление противника на мини-карте в режиме реального времени.", + ["killstreak_desc_19"] = "Вызовите к себе 3 случайные посылки с серией убийств.", + ["killstreak_desc_20"] = "Тяжелый штурмовой боевой корабль, оснащенный ракетой, а также 40-мм и 25-мм пушками.", + ["killstreak_desc_21"] = "Штурмовое снаряжение Джаггернаута с миниганом доставлено посылкой.", + ["killstreak_desc_22"] = "Массированный удар по вашей позиции. Закончит игру в пользу вашей команды.", + + ["main_menu_1"] = "Продолжить игру", + ["main_menu_2"] = "Изменить комплект", + ["main_menu_3"] = "Настройки", + ["main_menu_4"] = "Главное меню", + ["main_menu_settings_cm"] = "Своя музыка: ", + + ["main_menu_settings_1"] = "Музыка: ", + ["main_menu_settings_2"] = "Диктор: ", + ["main_menu_settings_3"] = "Момент смерти: ", + ["main_menu_settings_4"] = "Дискорд сервер", + + ["main_menu_loadout"] = "Комплект", + ["main_menu_loadout_wep"] = "Ваш выбор:", + ["main_menu_loadout_1"] = "Основное оружие", + ["main_menu_loadout_2"] = "Доп. оружие", + ["main_menu_loadout_3"] = "Серии убийств", + ["main_menu_loadout_3_1"] = "Выбрано серий убийств - ", + ["main_menu_loadout_4"] = "Перки", + ["main_menu_loadout_5"] = "Добивания", + ["main_menu_loadout_6"] = "Применить", + ["main_menu_loadout_7"] = "Выйти", + + ["perk_1_1"] = "Вибухотехнік", + ["perk_1_2"] = "Спостерігач", + ["perk_1_3"] = "Упертість", + ["perk_1_4"] = "Поповнення запасів", + ["perk_1_1_desc"] = "Зменшує збитки від вибухів.", + ["perk_1_2_desc"] = "Здатність бачити через стіни ворожі посилки та підкріплення.", + ["perk_1_3_desc"] = "Зменшення серій вбивств на 1.", + ["perk_1_4_desc"] = "Кожні 30 секунд, вам дається 1 магазин до поточної зброї.", + ["perk_2_1"] = "Швидке лікування", + ["perk_2_2"] = "Виживання", + ["perk_2_3"] = "Привид", + ["perk_2_4"] = "Прохолодність", + ["perk_2_1_desc"] = "Ваше здоров'я відновлюється через 3 секунди, замість 8 секунд.", + ["perk_2_2_desc"] = "Замість того, щоб померти ви переходите в стан останнього ривка 1 раз за життя.", + ["perk_2_3_desc"] = "Невидимість для БПЛА.", + ["perk_2_4_desc"] = "Невидимість для техніки та ворожих підкріплень.", + + ["gamemode_1"] = "КОМАНДНЫЙ БОЙ", + ["gamemode_2"] = "ВТОРЖЕНИЕ", + ["gamemode_3"] = "НОКАУТ", + ["gamemode_4"] = "ЗАРАЖЕНИЕ", + ["gamemode_5"] = "ПРЕВОСХОДСТВО", + + ["gamemode_1_desc"] = "Ликвидируйте силы противника.", + ["gamemode_2_desc"] = "Ликвидируйте силы противника.", + ["gamemode_3_desc"] = "Ликвидируйте силы противника.", + ["gamemode_4_desc"] = "Выживите или заразите всех.", + ["gamemode_5_desc"] = "Контролируйте все сектора на локации.", + + ["killcam_1"] = "Ваша смерть", + ["killcam_2"] = "Финальное убийство", + ["killcam_3"] = "Нажмите SPACE чтобы пропустить", +} \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/languages.lua b/gamemodes/cod_custom/gamemode/languages.lua new file mode 100644 index 0000000..72456e7 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/languages.lua @@ -0,0 +1,34 @@ +local lang = GetConVar("gmod_language"):GetString() + +AddCSLuaFile('lang/russian.lua') +AddCSLuaFile('lang/ukrainian.lua') +AddCSLuaFile('lang/spanish.lua') +AddCSLuaFile('lang/turkish.lua') +AddCSLuaFile('lang/german.lua') +AddCSLuaFile('lang/lithuanian.lua') +AddCSLuaFile('lang/hungarian.lua') +AddCSLuaFile('lang/polish.lua') +AddCSLuaFile('lang/brazilian.lua') +AddCSLuaFile('lang/english.lua') + +if lang == "ru" then + include('lang/russian.lua') +elseif lang == "uk" then + include('lang/ukrainian.lua') +elseif lang == "es-ES" then + include('lang/spanish.lua') +elseif lang == "tr" then + include('lang/turkish.lua') +elseif lang == "de" then + include('lang/german.lua') +elseif lang == "lt" then + include('lang/lithuanian.lua') +elseif lang == "hu" then + include('lang/hungarian.lua') +elseif lang == "pl" then + include('lang/polish.lua') +elseif lang == "pt-BR" then + include('lang/brazilian.lua') +else + include('lang/english.lua') +end \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/other/sh_fixes.lua b/gamemodes/cod_custom/gamemode/other/sh_fixes.lua new file mode 100644 index 0000000..5bc6323 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/other/sh_fixes.lua @@ -0,0 +1,144 @@ +if game.SinglePlayer() then return end + +-----------------------------------------------------------------------=# +if SERVER then + + util.AddNetworkString("MultiplayerSoundFix_PlaySound") + + local ENT = FindMetaTable("Entity") + + if !MPSNDFIX_SOUND_PLAY then MPSNDFIX_SOUND_PLAY = sound.Play end + if !MPSNDFIX_EMITSOUND then MPSNDFIX_EMITSOUND = ENT.EmitSound end + + -----------------------------------------------------------------------=# + timer.Create("MPSOUNDFIX_RESET_PLY_NET_MSG_COUNT", 1, 0, function() + for _, ply in ipairs(player.GetAll()) do + ply.MPSNDFIX_NETMSGS = 0 + end + end) + -----------------------------------------------------------------------=# + + -----------------------------------------------------------------------=# + local function posObscured( pos1, pos2 ) + return util.TraceLine({ + start = pos1, + endpos = pos2, + mask = MASK_NPCWORLDSTATIC, + }).Hit + end + -----------------------------------------------------------------------=# + + -----------------------------------------------------------------------=# + local function sound_Net( name, pos, lvl, pitch, vol ) + if lvl < 100 then return end + + for _, ply in ipairs(player.GetAll()) do + + if ply.MPSNDFIX_NETMSGS and ply.MPSNDFIX_NETMSGS >= 10 then continue end + + local dist = ply:GetPos():DistToSqr(pos) + + if dist < 1970^2 then continue end + if dist > 8000^2 && posObscured( ply:WorldSpaceCenter(), pos ) then continue end + + net.Start("MultiplayerSoundFix_PlaySound") + net.WriteString(name) + net.WriteVector(pos) + net.WriteUInt(lvl, 10) + net.WriteUInt(pitch, 9) + net.WriteFloat(vol) + net.Send(ply) + ply.MPSNDFIX_NETMSGS = ply.MPSNDFIX_NETMSGS + 1 + + end + end + -----------------------------------------------------------------------=# + + -----------------------------------------------------------------------=# + function sound:Play( pos, lvl, pitch, vol ) + sound_Net( self, pos or Vector(), lvl or 100, pitch or 100, vol or 1 ) + MPSNDFIX_SOUND_PLAY( self, pos, lvl, pitch, vol ) + end + -----------------------------------------------------------------------=# + + -----------------------------------------------------------------------=# + function ENT:EmitSound( name, lvl, pitch, vol, ... ) + + if !self.GetClass or self:GetClass() == "gmod_tool" then return end -- Weird entities that we just skip + + sound_Net( name, self:WorldSpaceCenter(), lvl or 100, pitch or 100, vol or 1 ) + MPSNDFIX_EMITSOUND( self, name, lvl, pitch, vol, ... ) + + end + -----------------------------------------------------------------------=# + +end +-----------------------------------------------------------------------=# +if CLIENT then + + net.Receive("MultiplayerSoundFix_PlaySound", function() + + local name = net.ReadString() + local pos = net.ReadVector() + local lvl = net.ReadUInt(10) + local pitch = net.ReadUInt(9) + local vol = net.ReadFloat() + + sound.Play(name, pos, lvl, pitch, vol) + + end) + +end +--PENETRATION-----------------------------------------------------------=# +local matEasyPen = { + [MAT_GLASS] = 0, + [MAT_WOOD] = 1, + [MAT_PLASTIC] = 1, +} + +local function Penetration(ent, data) + if IsValid(ent) then + if ent.CurrentPenetrationPower >= 0 then + data.Damage = data.Damage/1.5 + data.Callback = function(ent, tr, dmg) + data.Src = tr.HitPos+data.Dir*4 + if matEasyPen[tr.MatType] then + ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - matEasyPen[tr.MatType] + else + ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - 2 + end + if tr.Entity and (tr.Entity:IsPlayer() or tr.Entity:IsNPC()) then + ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - 1 + data.IgnoreEntity = tr.Entity + end + if ent.CurrentPenetrationPower >= 0 and not tr.HitSky then + Penetration(ent, data) + end + end + ent:FireBullets(data) + end + end +end + +hook.Add("EntityFireBullets", "TDM_Penetration", function(ent, data) + if ent.PenetrationPower and ent.PenetrationPower > 0 then + if ent.CurrentPenetrationPower == ent.PenetrationPower then + data.Callback = function(ent, tr, dmg) + if tr.Entity and (tr.Entity:IsPlayer() or tr.Entity:IsNPC()) then + ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - 1 + data.IgnoreEntity = tr.Entity + end + if matEasyPen[tr.MatType] then + ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - matEasyPen[tr.MatType] + else + ent.CurrentPenetrationPower = ent.CurrentPenetrationPower - 2 + end + if ent.CurrentPenetrationPower >= 0 and not tr.HitSky then + data.Src = tr.HitPos+data.Dir*4 + Penetration(ent, data) + end + end + return true + end + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/other/sv_mwii_npc.lua b/gamemodes/cod_custom/gamemode/other/sv_mwii_npc.lua new file mode 100644 index 0000000..682ced9 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/other/sv_mwii_npc.lua @@ -0,0 +1,486 @@ +local meta = FindMetaTable("Player") +local enb = FindMetaTable("Entity") + +function enb:IsMWIINPC() + return self:IsNPC() or self:IsNextBot() +end + +local function GetLongOfSequence(model, sequence) + local t = ents.Create("base_anim") + t:SetModel(model) + t:SetRenderMode(10) + t:Spawn() + local id, long = t:LookupSequence(sequence) + t:Remove() + return long, id +end + +function enb:Freeze(bool) + if self:IsMWIINPC() then + if bool then + self:AddEFlags(EFL_NO_THINK_FUNCTION) + else + self:RemoveEFlags(EFL_NO_THINK_FUNCTION) + end + end +end + +function enb:MWII_BE(bonename) + local bone = self:LookupBone(bonename) + if bone then + local ef = EffectData() + ef:SetOrigin(self:GetBonePosition(bone)) + ef:SetColor(0) + util.Effect("BloodImpact", ef) + end +end + +function enb:HeadBlow() + for i=1,4 do + local pos = self:GetBonePosition(self:LookupBone("ValveBiped.Bip01_Head1")) + local m = ents.Create("prop_physics") + m:SetModel("models/Gibs/HGIBS_scapula.mdl") + m:SetPos(pos) + m:SetAngles(AngleRand()) + m:Spawn() + m:SetMaterial("models/flesh") + m:SetCollisionGroup(1) + m:GetPhysicsObject():SetVelocity(VectorRand(-64,64)) + + local ef = EffectData() + ef:SetOrigin(pos) + util.Effect("BloodImpact", ef) + + timer.Simple(15, function() + if !IsValid(m) then return end + m:Remove() + end) + end +end + +function MWIITransferBones( base, ragdoll ) + if !IsValid( base ) or !IsValid( ragdoll ) then return end + for i = 0, ragdoll:GetPhysicsObjectCount() - 1 do + local bone = ragdoll:GetPhysicsObjectNum( i ) + if ( IsValid( bone ) ) then + local pos, ang = base:GetBonePosition( ragdoll:TranslatePhysBoneToBone( i ) ) + if ( pos ) then bone:SetPos( pos ) end + if ( ang ) then bone:SetAngles( ang ) end + end + end +end + +downNPCsClassList = { + ["vj_tdm_invasion_soldier1"] = true, + ["vj_tdm_invasion_soldier2"] = true, +} +reviveNPCsClassList = { + ["vj_tdm_invasion_soldier1"] = true, + ["vj_tdm_invasion_soldier2"] = true, +} +takedownedNPCsClassList = { + ["vj_tdm_invasion_soldier1"] = true, + ["vj_tdm_invasion_soldier2"] = true, +} +takedownNPCsClassList = { + ["vj_tdm_invasion_soldier1"] = true, + ["vj_tdm_invasion_soldier2"] = true, +} + +function enb:IsDowned() + if self:IsPlayer() then + return self:GetNWBool('Downed') + else + return self.Downed + end +end + +function enb:MWIIsFriend(tar, neutral_too) + local dis = self:Disposition(tar) + if neutral_too then + return dis == 3 or dis == 4 + else + return dis == 3 + end +end + +function enb:IsInFOVEnt(ent2) + local ent1Pos = self:GetPos() + local ent2Pos = ent2:GetPos() + local ent1Ang = self:GetAngles():Forward() + + local direction = (ent1Pos - ent2Pos):GetNormalized() + local dot = direction:Dot(ent1Ang) + + local fov = math.cos(math.rad(90)) + + if dot < fov then + return true + else + return false + end +end + +local optimize_delay = 0 +hook.Add("Think", "STDMFindNPCs", function() + if optimize_delay < CurTime() then + optimize_delay = CurTime()+1 + local enttab = ents.FindByClass("*tdm_*") + for i=1,#enttab do + local ent = enttab[i] + if ent:IsNPC() and reviveNPCsClassList[ent:GetClass()] and !ent.Downed and !ent.Takedowning then + local tar = ent.ReviveThisTarget + if !IsValid(tar) then + local targets = ents.FindInSphere( ent:GetPos(), 512 ) + for _, fri in ipairs(targets) do + if (fri:IsPlayer() or fri.IsMWIINPC and fri:IsMWIINPC()) and ent:MWIIsFriend(fri, true) then + if (fri:IsDowned() or fri.Downed) and !IsValid(fri.TargetReviver) then + fri.TargetReviver = ent + ent.ReviveThisTarget = fri + break + end + end + end + else + local pos = tar:GetPos() + local dist = pos:DistToSqr(ent:GetPos()) + if not timer.Exists("HelpNPCToMWII"..ent:EntIndex()) then + timer.Create("HelpNPCToMWII"..ent:EntIndex(), 2, 1, function() + if !IsValid(ent) then return end + ent:SetLastPosition( pos ) + ent:SetSchedule( SCHED_FORCED_GO_RUN ) + if ent.IsVJBaseSNPC then + ent:VJ_TASK_GOTO_LASTPOS() + end + end) + end + if dist < 2500 and not ent.InSeqMWII then + local tk = ents.Create("mwii_sequence_npc") + tk.NPC = ent + tk.Target = tar + tk.Sequence = "revive" + tk:SetPos(ent:GetPos()) + local ang1 = (pos - ent:GetPos()):Angle() + ang1.x, ang1.z = 0, 0 + tk:SetAngles(ang1) + tk:Spawn() + ent.ReviveThisTarget = nil + end + if !tar:IsDowned() then + ent.ReviveThisTarget = nil + tar.TargetReviver = nil + end + end + end + if ent:IsNPC() and takedownNPCsClassList[ent:GetClass()] and !ent.Downed and !ent.Takedowning and !ent.CantUseTakedown and math.random(1,4) >= 2 then + local targets = ents.FindInSphere( ent:GetPos(), 200 ) + for _, en in ipairs(targets) do + if (en:IsMWIINPC() and en:Health() > 0) and ent:IsInFOVEnt(en) and !ent:MWIIsFriend(en, true) and !en.CantUseTakedown then + if ent:EyePos():DistToSqr(en:EyePos()) < 5000 then + ent:NPC_Takedown(en) + break + else + if not timer.Exists("TakedownNPCToMWII"..ent:EntIndex()) then + timer.Create("TakedownNPCToMWII"..ent:EntIndex(), 2, 1, function() + if !IsValid(ent) or !IsValid(en) or en.Takedowning then return end + ent:SetLastPosition( en:GetPos() ) + ent:SetSchedule( SCHED_FORCED_GO_RUN ) + if ent.IsVJBaseSNPC then + ent:VJ_TASK_GOTO_LASTPOS() + end + end) + end + break + end + end + end + end + end + end +end) + +hook.Add("OnNPCKilled", "STDMHook", function(ent) + if ent.Downed or ent.InSeqMWII then + ent:SetRenderMode(RENDERMODE_NORMAL) + end +end) + +hook.Add("EntityTakeDamage", "!!!!!NPC_STDMHook", function(ply, dmg) + local att = dmg:GetAttacker() + local allowthis = ply:IsMWIINPC() + + if allowthis and dmg:GetDamage() < ply:Health() and math.random(1,100) == 1 and not dmg:IsExplosionDamage() and not ply.AlreadyWasDowned and not ply.Takedowning and not ply:IsDowned() then + if ply:IsMWIINPC() and downNPCsClassList[ply:GetClass()] then + dmg:ScaleDamage(0) + ply.Downed = true + ply:SetHealth(50) + + local tk = ents.Create("mwii_down_npc") + tk.NPC = ply + tk:SetPos(ply:GetPos()) + tk:SetAngles(ply:GetAngles()) + tk:Spawn() + ply.DownedEnt = tk + + return true + end + end + if ply.CantDamageMWII then + dmg:ScaleDamage(0) + return true + end +end) + +---------------------------------------------------------- + +function meta:IsAtBack(enemy) --This function was made by OpenAI ChatGPT + if !IsValid(enemy) then return end + local enemyForward = enemy:GetForward() + local enemyToPlayer = self:GetPos() - enemy:GetPos() + local angle = enemyForward:Angle():Forward():Dot(enemyToPlayer:GetNormalized()) + local degrees = math.deg(math.acos(angle)) + return degrees > 100 +end + +function meta:Takedown() + local tr = self:GetEyeTrace() + local ent = tr.Entity + local dist = tr.StartPos:Distance(tr.HitPos) < 96 + local isnpc = ent:IsMWIINPC() + if (!ent:IsPlayer() and !isnpc) or (!isnpc and ent:Team() == self:Team()) or (isnpc and ent:MWIIsFriend(self)) or self:IsDowned() or ent.Takedowning or self.Takedowning or !ent:OnGround() or !self:OnGround() or !self:IsAtBack(ent) or not dist then + return + end + if isnpc and !ent:LookupBone("ValveBiped.Bip01_Spine") then + return + end + + local downed = ent:IsDowned() + local _, rnd = table.Random(COD.Takedowns) + local float = rnd + + if self:IsPlayer() and not self:IsBot() and self:GetNWString('TakedownAnim') != "00" then + float = self:GetNWString('TakedownAnim') + end + if not COD.Takedowns[float] then return end + if !isnumber(float) then + anim1, anim2 = "execution_"..float.."_attacker_stand", "execution_"..float.."_victim_stand" + if downed then + anim1, anim2 = "execution_"..float.."_attacker_laststand", "execution_"..float.."_victim_laststand" + end + end + print(float, anim1, anim2) + local zpos = self:GetPos() + local delay1 = select(2, self:LookupSequence(anim1)) + local delay2 = COD.Takedowns[float].deathtime + if downed then + delay2 = COD.Takedowns[float].deathtime_laststand + end + local ang1 = ent:EyeAngles() + self:Freeze(true) + self:SetEyeAngles(Angle(ang1.x,ang1.y,0)) + self:SetPos(ent:GetPos()) + self:SetSVAnimation(anim1) + local wep = self:GetActiveWeapon() + if IsValid(wep) then + self.TakedowningGun = wep:GetClass() + else + self.TakedowningGun = "" + end + local wep = ent:GetActiveWeapon() + if IsValid(wep) then + ent.TakedowningGun = wep:GetClass() + else + ent.TakedowningGun = "" + end + self.TakedowningTarget = ent + self.Takedowning = true + self.TakedownIsFinished = false + self:SetActiveWeapon(nil) + local tk + if isnpc then + ent.Takedowning = true + tk = ents.Create("mwii_takedown_npc") + tk.NPC = ent + tk.Finisher = self + tk.Delay = delay2 + tk.Sequence = anim2 + tk:SetPos(ent:GetPos()) + tk:SetAngles(ent:GetAngles()) + tk:Spawn() + else + ent:SetActiveWeapon(nil) + ent.TakedowningTarget = self + ent.Takedowning = true + ent.TakedownIsFinished = false + ent:SetSVAnimation(anim2) + ent:Freeze(true) + ent:SetEyeAngles(Angle(ang1.x,ang1.y,0)) + + net.Start("COD.TakedownCam") + net.WriteBool(true) + net.WriteFloat(delay2) + net.WriteBool(false) + net.Send(ent) + + timer.Simple(delay2, function() + if IsValid(ent) and IsValid(self) and self.Takedowning then + self.TakedownIsFinished = true + ent:Freeze(false) + ent:TakeDamage(ent:Health()+ent:Armor(), self) + ent.Takedowning = false + ent.TakedowningTarget = nil + ent:SetSVAnimation("") + end + end) + end + net.Start("COD.TakedownCam") + net.WriteBool(true) + net.WriteFloat(delay1) + net.WriteBool(true) + net.Send(self) + + local bm = ent + if ent:IsMWIINPC() then + bm = tk + end + + if downed then + COD.Takedowns[float].effect_laststand(self, ent, bm) + else + COD.Takedowns[float].effect(self, ent, bm) + end + timer.Simple(delay1, function() + if IsValid(self) and self.Takedowning then + self:Freeze(false) + self.Takedowning = false + self:SetSVAnimation("") + self:SelectWeapon(self.TakedowningGun) + if IsValid(ent) and ent:Health() > 0 then + self:SetPos(zpos) + end + end + end) +end + +function enb:NPC_Takedown(ent) + local isnpc = ent:IsMWIINPC() + + if (isnpc and !takedownedNPCsClassList[ent:GetClass()]) or self:IsDowned() or ent.Takedowning or self.Takedowning or !ent:OnGround() or !self:OnGround() then + return + end + + if isnpc and !ent:LookupBone("ValveBiped.Bip01_Spine") then + return + end + + local downed = ent:IsDowned() + local float = "00" + local rnd = math.random(1,33) + if rnd >= 10 then + float = ""..rnd + else + float = "0"..rnd + end + + if not COD.Takedowns[float] then return end + if !isnumber(float) then + anim1, anim2 = "execution_"..float.."_attacker_stand", "execution_"..float.."_victim_stand" + if downed then + anim1, anim2 = "execution_"..float.."_attacker_laststand", "execution_"..float.."_victim_laststand" + end + end + + local zpos = self:GetPos() + local delay1 = GetLongOfSequence("models/player/breen.mdl", anim1) + local delay2 = COD.Takedowns[float].deathtime + if downed then + delay2 = COD.Takedowns[float].deathtime_laststand + end + + local ang1 = self:EyeAngles() + self:Freeze(true) + ent:SetAngles(Angle(0,ang1.y,0)) + self:SetPos(ent:GetPos()) + local wep = self:GetActiveWeapon() + if IsValid(wep) then + wep:SetClip1(0) + end + self.TakedowningTarget = ent + self.Takedowning = true + self.TakedownIsFinished = false + local tk = ents.Create("mwii_takedown_npc") + tk.NPC = self + tk.AttackerTime = delay2 + tk.KillingEntityMode = true + tk.ToKill = ent + tk.Finisher = self + tk.Delay = delay1 + tk.Sequence = anim1 + tk:SetPos(ent:GetPos()) + tk:SetAngles(ent:GetAngles()) + tk:Spawn() + + local tk2 + if ent:IsPlayer() then + ent:SetActiveWeapon(nil) + ent.TakedowningTarget = self + ent.Takedowning = true + ent.TakedownIsFinished = false + ent:SetSVAnimation(anim2) + ent:Freeze(true) + ent:SetEyeAngles(Angle(ang1.x,ang1.y,0)) + + net.Start("COD.TakedownCam") + net.WriteBool(true) + net.WriteFloat(delay2) + net.WriteBool(false) + net.Send(ent) + else + ent.Takedowning = true + ent:SetAngles(Angle(0,ang1.y,0)) + tk2 = ents.Create("mwii_takedown_npc") + tk2.NPC = ent + tk2.Finisher = self + tk2.Delay = delay2 + tk2.Sequence = anim2 + tk2:SetPos(ent:GetPos()) + tk2:SetAngles(ent:GetAngles()) + tk2:Spawn() + end + + if !ent:IsPlayer() then + ent = tk2 + end + local bm = ent + if ent:IsMWIINPC() then + bm = tk2 + end + if downed then + COD.Takedowns[float].effect_laststand(tk, ent, bm) + else + COD.Takedowns[float].effect(tk, ent, bm) + end + + timer.Simple(delay1, function() + if IsValid(self) and self.Takedowning then + self.Takedowning = false + if IsValid(ent) and ent:Health() > 0 then + self:SetPos(zpos) + end + end + end) +end + +hook.Add("CreateEntityRagdoll", "MWIITDCreateRagdoll", function(owner, ragdoll) + local rag = owner:GetNWEntity('MWIIRag') + if IsValid(rag) then + MWIITransferBones( rag, ragdoll ) + ragdoll:SetNoDraw(false) + if owner.HeadBlow then + ragdoll:ManipulateBoneScale(ragdoll:LookupBone("ValveBiped.Bip01_Head1"), Vector(0,0,0)) + end + end + if owner:IsPlayer() and owner.HeadBlow then + ragdoll:ManipulateBoneScale(ragdoll:LookupBone("ValveBiped.Bip01_Head1"), Vector(0,0,0)) + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/post_shared.lua b/gamemodes/cod_custom/gamemode/post_shared.lua new file mode 100644 index 0000000..224704c --- /dev/null +++ b/gamemodes/cod_custom/gamemode/post_shared.lua @@ -0,0 +1,2 @@ +AddCSLuaFile("other/sh_fixes.lua") +include("other/sh_fixes.lua") \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/server/sv_abilities.lua b/gamemodes/cod_custom/gamemode/server/sv_abilities.lua new file mode 100644 index 0000000..9b946c7 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/server/sv_abilities.lua @@ -0,0 +1,279 @@ +local meta = FindMetaTable("Player") + +function COD:IsAllowedSelfRevive() + return COD.DataTable["Gamemode"] != 3 +end + +function meta:StopSlide() + return self.Takedowning or self:GetNWBool('Downed') or self:GetNWString('SVAnim') != "" or self:WaterLevel() > 1 or !self:Alive() or !self:OnGround() +end + +function meta:Sliding(bool) + if bool then + if isvector(self.SlidingVelocity) then return end + + local ang = self:GetAngles() + ang.x = 0 + ang.z = 0 + local vec = ang:Forward()*32 + self.SlidingDuration = CurTime()+1 + self.SlidingVelocity = vec + self:SetNWBool('Sliding', true) + self:EmitSound("tdmg/ply/slide"..math.random(1,3)..".wav") + self:ViewPunch(Angle(-5,0,0)) + else + self.SlidingVelocity = nil + self:SetNWBool('Sliding', false) + end +end + +function meta:IsDowned() + return self:GetNWBool('Downed') +end + +function meta:MovingDirection(threshold) --This function was made by OpenAI ChatGPT + threshold = threshold or 0.1 + local vel = self:GetVelocity() + local forward = self:GetForward() + local right = self:GetRight() + local forwardDot = vel:Dot(forward) + local rightDot = vel:Dot(right) + + if forwardDot > threshold then + return "forward" + elseif forwardDot < -threshold then + return "backward" + end + + if rightDot > threshold then + return "right" + elseif rightDot < -threshold then + return "left" + end + + return "stand" +end + +function meta:Down() + if COD:IsAllowedSelfRevive() then + self:SetNWFloat('DownedTime', CurTime()+15) + else + self:SetNWFloat('DownedTime', CurTime()+30) + end + self:SetNWBool('Downed', true) + self:SetViewOffset( Vector(0,0,24) ) + self:SetViewOffsetDucked( Vector(0,0,24) ) + self:SetHealth(50) + self:SetJumpPower(0) + self.AlreadyWasDowned = true + self.ReviveNumber = 0 + self:SetSVAnimation("laststand_down", true) + self:GodEnable() + self:SetActiveWeapon(nil) + timer.Simple(0.5, function() + if !IsValid(self) then return end + self:GodDisable() + end) +end + +function meta:Revive(died) + self:SetViewOffset( Vector(0,0,64) ) + self:SetViewOffsetDucked( Vector(0,0,32) ) + self:SetJumpPower(128) + self:SetHealth(25) + if died then + self:Kill() + else + self:SetSVAnimation("laststand_standup", true) + end + self:SetNWBool('Downed', false) + self.RevivingSelf = false +end + +hook.Add("SetupMove", "TDMSetupMove1", function(ply, mv, cmd) + if ply:IsDowned() then + if ply:KeyDown(IN_USE) or IsValid(ply:GetNWEntity('Reviver')) then + mv:SetForwardSpeed(1) + mv:SetSideSpeed(1) + else + mv:SetMaxSpeed(25) + mv:SetMaxClientSpeed(25) + end + end + if isvector(ply.SlidingVelocity) then + mv:SetMaxSpeed(1) + mv:SetMaxClientSpeed(1) + end +end) + +hook.Add("Think", "TDMSliding", function() + for _, ent in ipairs(player.GetAll()) do + if isvector(ent.SlidingVelocity) then + ent:SetVelocity(ent.SlidingVelocity) + end + if ent:KeyDown(IN_SPEED) and ent:KeyDown(IN_DUCK) and not ent:Crouching() and !ent:StopSlide() then + ent:Sliding(true) + end + if !ent:KeyDown(IN_DUCK) and isvector(ent.SlidingVelocity) or ent.SlidingDuration and ent.SlidingDuration < CurTime() or ent:StopSlide() then + ent:Sliding(false) + end + end +end) + +hook.Add("PlayerDeath", "TDMRevive", function(ply) + if ply:IsDowned() then + ply:Revive() + end + ply.AlreadyWasDowned = false +end) + +hook.Add("Think", "TDMAnimsRevive", function() + local plys2 = player.GetAll() + for i=1,#plys2 do + local ply = plys2[i] + if ply:IsDowned() and ply:GetNWFloat('DownedTime') < CurTime() and (not ply:KeyDown(IN_USE) or !COD:IsAllowedSelfRevive()) and !IsValid(ply:GetNWEntity('Reviver')) and not ply.Takedowning then + ply:Revive(true) + end + if ply:Alive() and not ply:IsDowned() and ply:KeyDown(IN_USE) then + local tr = ply:GetEyeTrace() + local ent = tr.Entity + local dist = ply:EyePos():DistToSqr(tr.HitPos) < 5000 + if ent:IsPlayer() and dist and ent:IsDowned() and ply:Team() == ent:Team() then + ent:SetNWEntity('Reviver', ply) + ply.RevivingThatEntity = ent + end + if !IsValid(ply.RevivingThatEntity) or !ply.RevivingThatEntity:Alive() or not ply.RevivingThatEntity:IsDowned() then + ply.RevivingThatEntity = nil + if ply:GetNWString('SVAnim') == "laststand_startrevive" and not ply.Takedowning then + ply:SetSVAnimation("") + end + end + end + if ply:IsDowned() then + local rev = ply:GetNWEntity('Reviver') + ply:SetActiveWeapon(nil) + if !IsValid(rev) and ply:KeyDown(IN_USE) and not ply.Takedowning and COD:IsAllowedSelfRevive() then + ply.ReviveNumber = ply.ReviveNumber + FrameTime()/5.5 + if not ply.RevivingSelf then + ply:SetSVAnimation("laststand_selfrevive", true) + ply.RevivingSelf = true + end + elseif !IsValid(rev) and not ply:KeyDown(IN_USE) and not ply.Takedowning then + ply.ReviveNumber = 0 + if ply.RevivingSelf then + ply:SetSVAnimation("") + ply.RevivingSelf = false + end + end + if IsValid(rev) then + if rev:KeyDown(IN_USE) and rev:GetEyeTrace().Entity == ply and not ply.Takedowning then + ply.ReviveNumber = ply.ReviveNumber + FrameTime()/3 + rev:SetActiveWeapon(nil) + if not rev.RevivingTarget then + rev:SetSVAnimation("laststand_startrevive") + rev.RevivingTarget = true + end + else + if rev.RevivingTarget then + rev:SetSVAnimation("") + rev:SelectWeapon(rev:GetNWString('MainWep')) + rev.RevivingTarget = false + end + ply:SetNWEntity('Reviver', NULL) + end + end + if ply.ReviveNumber >= 1 then + ply.ReviveNumber = 0 + ply:SetSVAnimation("") + if IsValid(rev) then + rev:ChangeScore(100) + rev:SetSVAnimation("") + rev:SelectWeapon(rev:GetNWString('MainWep')) + rev.RevivingTarget = false + COD:GiveMessageCenter({rev}, 5) + end + ply:Revive() + ply:SelectWeapon(ply:GetNWString('MainWep')) + end + else + ply:SetNWEntity('Reviver', NULL) + end + end +end) + +hook.Add("CalcMainActivity", "TDMAnimsRevive", function(ply, vel) + if ply:IsDowned() and ply:GetNWString('SVAnim') == "" then + local anim1 = ply:LookupSequence("laststand_idle") + local anim2 = ply:LookupSequence("laststand_crawl_forward") + local anim3 = ply:LookupSequence("laststand_crawl_backward") + local anim4 = ply:LookupSequence("laststand_crawl_left") + local anim5 = ply:LookupSequence("laststand_crawl_right") + local dir = ply:MovingDirection(8) + local vel = ply:GetVelocity():Length2D() > 10 + if dir == "forward" and vel then + return -1, anim2 + elseif dir == "backward" and vel then + return -1, anim3 + elseif dir == "left" and vel then + return -1, anim4 + elseif dir == "right" and vel then + return -1, anim5 + else + return -1, anim1 + end + end +end) + +local delay = CurTime()+5 +hook.Add("Think", "TDMApplyCommands", function() + if delay < CurTime() then + delay = CurTime()+5 + for k, v in pairs(COD.ApplyCommands["Server"]) do + RunConsoleCommand(k, v) + end + end +end) + +concommand.Add("cod_jointeam", function(ply, cmd, args) + local float = tonumber(args[1]) + if ply:IsSuperAdmin() then + ply:SetTeam(float) + ply:Spawn() + end +end) + +--------------------------------------------------------------------- + +function COD:InfilStart() + if COD.DataTable["Gamemode"] == 4 then return end + + local t1s, t2s = COD.DataTable["Team1_InfilSettings"], COD.DataTable["Team2_InfilSettings"] + + for k1, v1 in pairs(t1s.positions) do + timer.Simple(0.1*k1, function() + local infil = ents.Create("tdm_player_infil") + infil:SetPos(v1) + infil:SetAngles(t1s.angles[k1]) + infil.Infil = t1s.type + infil.TeamChoose = 1 + infil:Spawn() + end) + end + + for k2, v2 in pairs(t2s.positions) do + timer.Simple(0.1*k2, function() + local infil = ents.Create("tdm_player_infil") + infil:SetPos(v2) + infil:SetAngles(t2s.angles[k2]) + infil.Infil = t2s.type + infil.TeamChoose = 2 + infil:Spawn() + end) + end +end + +hook.Add("COD.ChangeState", "TDM_Infil", function(start) + if COD.DataTable["Enable_InfilAnimations"] and start then + COD:InfilStart() + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/server/sv_domination.lua b/gamemodes/cod_custom/gamemode/server/sv_domination.lua new file mode 100644 index 0000000..89e6f3a --- /dev/null +++ b/gamemodes/cod_custom/gamemode/server/sv_domination.lua @@ -0,0 +1,40 @@ +function COD:SpawnDominationFlags() + local tab = COD.DataTable["flag_Spawns"] + for i=1,3 do + local flag = ents.Create("tdm_domination_flag") + flag:SetPos(tab[i]) + flag:Spawn() + end +end + +------------------------------------------------------ + +hook.Add("PlayerDeath", "TDMPlayer_Domination", function(ply) + if COD.GameStarted and COD.DataTable["Gamemode"] == 5 then + if ply:Team() == 1 then + COD:AddFragsToData(2, -1) + elseif ply:Team() == 2 then + COD:AddFragsToData(1, -1) + end + end +end) + +hook.Add("COD.ChangeState", "TDMPlayer_Domination", function(start) + if start and COD.DataTable["Gamemode"] == 5 then + COD:SpawnDominationFlags() + end +end) + +local thinkdelay = 0 +hook.Add("Think", "TDMPlayer_Domination", function() + if COD.GameStarted and COD.DataTable["Gamemode"] == 5 and thinkdelay < CurTime() then + thinkdelay = CurTime()+3 + + for k, v in ipairs(ents.FindByClass("tdm_domination_flag")) do + local team = v:GetNWFloat('Team') + if team > 0 then + COD:AddFragsToData(team, 1) + end + end + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/server/sv_functions.lua b/gamemodes/cod_custom/gamemode/server/sv_functions.lua new file mode 100644 index 0000000..1a75168 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/server/sv_functions.lua @@ -0,0 +1,1220 @@ +local pl = FindMetaTable("Player") + +util.AddNetworkString("COD.HitMarkEnemy") +util.AddNetworkString("COD.HitMarkEnemy2") +util.AddNetworkString("COD.ScoreMarkEnemy") +util.AddNetworkString("COD.KillstreaksHUD") +util.AddNetworkString("COD.EndingHUD") +util.AddNetworkString("COD.StartMatchHUD") +util.AddNetworkString("COD.PickupCarePackage") +util.AddNetworkString("COD.KillNick") +util.AddNetworkString("COD.KillstreakChoose") +util.AddNetworkString("COD.PerksShow") +util.AddNetworkString("COD.PerksChoose") +util.AddNetworkString("COD.Killfeed") +util.AddNetworkString("COD.Cutscene") +util.AddNetworkString("COD.SendData") +util.AddNetworkString("COD.TimerShow") +util.AddNetworkString("COD.OtherKillstreak") +util.AddNetworkString("COD.ShowAnnouncment") +util.AddNetworkString("COD.SendAdminStatus") +util.AddNetworkString("COD.GameStartedStatus") +util.AddNetworkString("COD.RequestGameStatus") + +COD.TimeBeforeEnd = 0 +COD.TimeBefore1PerkUnlock = 0 +COD.Perk1Unlocked = false +COD.TimeBefore2PerkUnlock = 0 +COD.Perk2Unlocked = false +COD.Ending = false +COD.GameStarted = false +COD.EnabledDynamicSpawnPoints = false +COD.DisableSpawn = false +COD.TimeBeforeStart = 0 +COD.DisableEndGameByNoTeam = false + +local KillstreakTeamEntities = { + ["tdm_ah64"] = true, + ["tdm_mi24"] = true, + ["tdm_sentry"] = true, + ["tdm_harrier"] = true, + ["tdm_drone"] = true, +} + +net.Receive("COD.KillstreakChoose", function(len, ply) + local tab = net.ReadTable() + local mw = net.ReadString() + local sw = net.ReadString() + ply.KillstreakFuture = tab + ply.WeaponData = {mw, sw} +end) + +net.Receive("COD.PerksChoose", function(len, ply) + local p1 = net.ReadFloat() + local p2 = net.ReadFloat() + ply.Perk1Choosed = p1 + ply.Perk2Choosed = p2 +end) + +hook.Add("CanPlayerSuicide", "AllowOwnerSuicide", function( ply ) + return false +end) + +function COD:AddFragsToData(team, count) + if team == 1 then + COD.DataTable["Team1_Kills"] = COD.DataTable["Team1_Kills"]+count + elseif team == 2 then + COD.DataTable["Team2_Kills"] = COD.DataTable["Team2_Kills"]+count + end + BroadcastLua([[ + COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[ + COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[ + ]]) +end + +function COD:GetInfoData(ply) + local tab = COD.DataTable + + if ply != "all" and IsValid(ply) then + net.Start("COD.SendData") + net.WriteTable(tab) + net.Send(ply) + end + + if ply == "all" then + net.Start("COD.SendData") + net.WriteTable(tab) + net.Broadcast() + end +end + +function COD:ShowAnnouncment(type) + net.Start("COD.ShowAnnouncment") + net.WriteFloat(type) + net.Broadcast() +end + +function COD:ShowEndScreen() + local t1, t2 = COD.DataTable["Team1_Kills"], COD.DataTable["Team2_Kills"] + for _, ply in ipairs(player.GetAll()) do + if ply:Team() == 1 and t1 > t2 then + net.Start("COD.EndingHUD") + net.WriteBool(true) + net.Send(ply) + elseif ply:Team() == 2 and t2 > t1 then + net.Start("COD.EndingHUD") + net.WriteBool(true) + net.Send(ply) + else + net.Start("COD.EndingHUD") + net.WriteBool(false) + net.Send(ply) + end + end +end + +function COD:CountTeamPlayers(team) + local tab = {} + for _, ply in ipairs(player.GetAll()) do + if ply:Team() == team then + table.insert(tab, ply) + end + end + return #tab +end + +function COD:SpawnPlayerAtSafePosition(ply) + if !IsValid(ply) then return end + + local enemy_players = player.GetAll() + if ply:Team() == 1 then + enemy_players = team.GetPlayers(2) + elseif ply:Team() == 2 then + enemy_players = team.GetPlayers(1) + end + + local positions = {} + for _, pos in ipairs(COD.DataTable["simple_Spawns"]) do + local can = true + local gdist = 0 + for _, en in ipairs(enemy_players) do + local dist = en:GetPos():DistToSqr(pos) + if en:IsLineOfSightClear(pos) or dist < 50000 then + can = false + end + if dist > gdist then + gdist = dist + end + end + if can then + table.insert(positions, {vec = pos, dist = gdist}) + end + end + if #positions > 0 then + local position, dist = Vector(), 0 + for _, p in ipairs(positions) do + if p.dist > dist then + dist = p.dist + position = p.vec + end + end + ply:SetPos(position) + else + ply:SetPos(table.Random(COD.DataTable["simple_Spawns"])) + end +end + +function COD:KillstreakAddOther(ply, removing, number) + local tab = ply.KillstreakOthers + if removing then + if number == -1 then + ply.KillstreakOthers = {} + tab = {} + else + table.remove(tab, #tab) + end + else + table.insert(tab, number) + end + net.Start("COD.OtherKillstreak") + net.WriteTable(tab) + net.Send(ply) +end + +hook.Add("Think", "TDMGmodStartMatch", function() + local count = player.GetCount() + if count > 1 then + if not COD.GameStarted then + if COD.TimeBeforeStart < CurTime() then + COD:ChangeState(true) + end + else + if (#team.GetPlayers(1) == 0 or #team.GetPlayers(2) == 0) and not COD.DisableEndGameByNoTeam then + COD:ChangeState(false) + COD.TimeBeforeStart = CurTime()+COD.DataTable["Delay_Before_Start"] + end + if ( COD.TimeBeforeEnd-CurTime() <= 0 or COD.DataTable["Team1_Kills"] >= COD.DataTable["MaxKills"] or COD.DataTable["Team2_Kills"] >= COD.DataTable["MaxKills"] ) and not COD.Ending then + COD.Ending = true + COD:ShowEndScreen() + if COD.LastKillData.length > 0 then + COD:ShowLastKillCam(6) + COD.LastKillData = { + length = 0, + data = "" + } + end + timer.Simple(12, function() + COD:ChangeState(false) + end) + end + if COD.Ending then + COD:RemoveAllPlayers() + end + if COD.TimeBefore1PerkUnlock < CurTime() and not COD.Perk1Unlocked then + COD.Perk1Unlocked = true + for _, ply in ipairs(player.GetAll()) do + ply:UnlockPerks(1) + end + end + if COD.TimeBefore2PerkUnlock < CurTime() and not COD.Perk2Unlocked then + COD.Perk2Unlocked = true + for _, ply in ipairs(player.GetAll()) do + ply:UnlockPerks(2) + end + end + end + for _, ply in ipairs(player.GetAll()) do + if ply:Health() >= 100 or not ply:Alive() then + ply.HealCooldown = CurTime() + 8 + if ply:GetNWFloat('Perk2') == 1 then + ply.HealCooldown = CurTime() + 3 + end + else + if ply.HealCooldown < CurTime() and not ply:IsDowned() then + ply:SetHealth(math.Clamp(ply:Health()+1, 1, 100)) + end + end + if ply:GetNWFloat('Perk1') == 4 then + if ply.CooldownPerkEquip < CurTime() then + ply.CooldownPerkEquip = CurTime()+30 + local wep = ply:GetActiveWeapon() + if IsValid(wep) then + local at = wep:GetPrimaryAmmoType() + local clip = wep:GetMaxClip1() + ply:GiveAmmo(clip, at, true) + end + end + end + end + else + COD.TimeBeforeStart = CurTime()+COD.DataTable["Delay_Before_Start"] + if COD.GameStarted then + COD:ChangeState(false) + end + end +end) + +function COD:ChangeState(bool) + game.CleanUpMap() + COD.DataTable["Team1_Kills"] = 0 + COD.DataTable["Team2_Kills"] = 0 + if bool then + COD.DataTable["MaxKills"] = COD.GamemodeSettings[COD.DataTable["Gamemode"]]["MaxKills"] + COD.EnabledDynamicSpawnPoints = false + COD.TimeBeforeEnd = CurTime()+COD.GamemodeSettings[COD.DataTable["Gamemode"]]["MaxTime"]+COD.DataTable["Delay_Before_Start"] + COD.TimeBefore1PerkUnlock = CurTime()+90 + COD.TimeBefore2PerkUnlock = CurTime()+180 + COD.Perk1Unlocked = false + COD.Perk2Unlocked = false + COD.GameStarted = true + COD.Ending = false + net.Start("COD.GameStartedStatus") + net.WriteBool(true) + net.Broadcast() + COD.LastKillData = { + length = 0, + data = "" + } + BroadcastLua([[ + COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[ + COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[ + COD.DataTable["MaxKills"] = ]]..COD.DataTable["MaxKills"]..[[ + COD.TimeMatch = ]]..COD.TimeBeforeEnd..[[ + ]]) + for _, ply in ipairs(player.GetAll()) do + ply:ResetParametrsCOD() + end + COD:AutoTeamMix() + net.Start("COD.StartMatchHUD") + net.Broadcast() + COD.EnabledDynamicSpawnPoints = true + COD.DisableEndGameByNoTeam = false + else + COD.TimeBefore1PerkUnlock = math.huge + COD.TimeBefore2PerkUnlock = math.huge + COD.TimeBeforeEnd = 0 + COD.GameStarted = false + COD.Ending = false + net.Start("COD.GameStartedStatus") + net.WriteBool(false) + net.Broadcast() + COD.EnabledDynamicSpawnPoints = false + if COD.DataTable["Enable_RandomGamemode"] then + COD.DataTable["Gamemode"] = math.random(1,5) + COD:GetInfoData("all") + end + COD:RemoveAllPlayers() + BroadcastLua([[ + COD.DataTable["Team2_Kills"] = 0 + COD.DataTable["Team1_Kills"] = 0 + COD.TimeMatch = 0 + ]]) + end + hook.Run("COD.ChangeState", bool) +end + +function COD:RemoveAllPlayers() + local players = player.GetAll() + for k, ply in ipairs(players) do + if ply:Alive() then + ply:KillSilent() + end + end +end + +function COD:AutoTeamMix() + local players = player.GetAll() + table.Shuffle(players) + local plcount = math.floor(player.GetCount()/2) + local teambool = tobool(math.random(0,1)) + for k, ply in ipairs(players) do + if plcount > 0 then + plcount = plcount - 1 + if teambool then + ply:SetTeam(1) + else + ply:SetTeam(2) + end + else + if teambool then + ply:SetTeam(2) + else + ply:SetTeam(1) + end + end + ply:KillSilent() + ply:Spawn() + end +end + +function pl:ChangeScore(float, reset) + self:SetNWFloat('Score', self:GetNWFloat('Score')+float) + if reset then + self:SetNWFloat('Score', 0) + end +end + +function pl:ResetParametrsCOD() + self:ChangeScore(0, true) + self:SetFrags(0) + self:SetDeaths(0) + self:SetNWFloat('KillsP', 0) + self:SetNWString('KillStreak_Other', '') + self:SetNWBool('KillStreak1_Used', false) + self:SetNWBool('KillStreak2_Used', false) + self:SetNWBool('KillStreak3_Used', false) + self:SetNWBool('KillStreak1_Gave', false) + self:SetNWBool('KillStreak2_Gave', false) + self:SetNWBool('KillStreak3_Gave', false) + COD:KillstreakAddOther(self, true, -1) + self:UnlockPerks(0) + local tab = self.KillstreakFuture + if tab then + self:SetNWFloat('KillStreak1', tab[1]) + self:SetNWFloat('KillStreak2', tab[2]) + self:SetNWFloat('KillStreak3', tab[3]) + else + self:SelectKillstreaksRandom() + end +end + +function pl:ThrowFrag() + if self.Knifing or self:GetNWFloat('FragGrenades') <= 0 then return end + + local wep = self:Give('tdm_grenade') + local aw = self:GetActiveWeapon() + if IsValid(aw) then + self.FastKnifeBeforeWep = aw:GetClass() + else + self.FastKnifeBeforeWep = "" + end + + self:SetNWFloat('FragGrenades', self:GetNWFloat('FragGrenades')-1) + + self.Knifing = true + self:SetActiveWeapon(nil) + self:SelectWeapon(wep) + wep:Throw() + + timer.Simple(1, function() + if !IsValid(self) then return end + self.Knifing = false + end) +end + +function pl:ThrowFlash() + if self.Knifing or self:GetNWFloat('FlashGrenades') <= 0 then return end + + local wep = self:Give('tdm_grenade') + wep.IsFlash = true + local aw = self:GetActiveWeapon() + if IsValid(aw) then + self.FastKnifeBeforeWep = aw:GetClass() + else + self.FastKnifeBeforeWep = "" + end + + self:SetNWFloat('FlashGrenades', self:GetNWFloat('FlashGrenades')-1) + + self.Knifing = true + self:SetActiveWeapon(nil) + self:SelectWeapon(wep) + wep:Throw() + + timer.Simple(1, function() + if !IsValid(self) then return end + self.Knifing = false + end) +end + +function pl:FastKnife() + if self.Knifing then return end + + local wep = self:Give('tdm_knife') + local aw = self:GetActiveWeapon() + if IsValid(aw) then + self.FastKnifeBeforeWep = aw:GetClass() + else + self.FastKnifeBeforeWep = "" + end + + self.Knifing = true + self:SetActiveWeapon(nil) + self:SelectWeapon(wep) + wep:Knifing() + + timer.Simple(0.5, function() + if !IsValid(self) then return end + self.Knifing = false + end) +end + +function pl:SetPrimaryWep(class) + if not class or class == "" then + local tab = {} + + table.Merge(tab, COD.Loadout["SMGs"]) + table.Merge(tab, COD.Loadout["LMGs"]) + table.Merge(tab, COD.Loadout["Assault Rifles"]) + table.Merge(tab, COD.Loadout["Sniper Rifles"]) + table.Merge(tab, COD.Loadout["Marksman Rifles"]) + table.Merge(tab, COD.Loadout["Shotguns"]) + + local tab2 = {} + for k, v in pairs(tab) do + table.insert(tab2, v.class) + end + + class = tab2[math.random(1,#tab2)] + end + local wep = self:Give(class) + self:SetNWString('MainWep', class) + if IsValid(wep) then + self:GiveAmmo(wep:GetMaxClip1()*6, wep:GetPrimaryAmmoType(), true) + end +end + +function pl:SetSecondaryWep(class) + if not class or class == "" then + local tab = {} + table.Merge(tab, COD.Loadout["Pistols"]) + table.Merge(tab, COD.Loadout["Others"]) + + local tab2 = {} + for k, v in pairs(tab) do + table.insert(tab2, v.class) + end + + class = tab2[math.random(1,#tab2)] + end + local wep = self:Give(class) + self:SetNWString('SecWep', class) + if IsValid(wep) then + self:GiveAmmo(wep:GetMaxClip1()*3, wep:GetPrimaryAmmoType(), true) + end +end + +function pl:UnlockPerks(type) + if type == 1 then + self:SetNWFloat('Perk1', self:GetNWFloat('Perk1_Choose')) + if self:GetNWFloat('Perk1_Choose') == 3 and self:Alive() then + self:SetNWFloat('KillsP', self:GetNWFloat('KillsP')+1) + self:CheckKillstreaks() + end + elseif type == 2 then + self:SetNWFloat('Perk2', self:GetNWFloat('Perk2_Choose')) + else + self:SetNWFloat('Perk1', 0) + self:SetNWFloat('Perk2', 0) + end + net.Start("COD.PerksShow") + net.WriteFloat(type) + net.Send(self) +end + +hook.Add("PlayerButtonDown", "TDMGUseAbilities", function(ply, but) + if ply:Alive() and not ply:IsTyping() and not ply.ControllingKillstreak then + if but == KEY_7 then + ply:UseKillstreak(1) + elseif but == KEY_8 then + ply:UseKillstreak(2) + elseif but == KEY_9 then + ply:UseKillstreak(3) + elseif but == KEY_0 then + ply:UseKillstreak(4) + elseif but == KEY_V then + ply:FastKnife() + elseif but == KEY_G then + ply:ThrowFrag() + elseif but == KEY_Q then + ply:ThrowFlash() + end + end + if but == KEY_F1 then + ply:ConCommand("open_choose_menu") + end +end) + +hook.Add("PlayerInitialSpawn", "TDMPlayer", function(ply) + ply:SetNWString('TakedownAnim', '02') + ply:SetNWFloat('Perk1', 0) + ply:SetNWFloat('Perk2', 0) + ply:SetNWFloat('Perk1_Choose', 1) + ply:SetNWFloat('Perk2_Choose', 1) + COD:GetInfoData(ply) + ply.KillstreakOthers = {} + ply.Perk1Choosed = 1 + ply.Perk2Choosed = 1 + + timer.Simple(1, function() + if not IsValid(ply) then return end + net.Start("COD.SendAdminStatus") + net.WriteBool(ply:IsAdmin()) + net.Send(ply) + + net.Start("COD.GameStartedStatus") + net.WriteBool(COD.GameStarted) + net.Send(ply) + end) + + net.Receive("COD.RequestGameStatus", function(_, ply) + net.Start("COD.GameStartedStatus") + net.WriteBool(COD.GameStarted) + net.Send(ply) + end) + if COD.GameStarted then + timer.Simple(1, function() + if !IsValid(ply) then return end + if COD.DataTable["Gamemode"] != 4 then + local t1c = COD:CountTeamPlayers(1) + local t2c = COD:CountTeamPlayers(2) + if t1c == t2c then + ply:SetTeam(math.random(1,2)) + elseif t1c > t2c then + ply:SetTeam(2) + elseif t1c < t2c then + ply:SetTeam(1) + end + else + ply:SetTeam(1) + end + ply:ResetParametrsCOD() + ply:Spawn() + end) + end +end) + +hook.Add("SetupPlayerVisibility", "AddPlayersOnCameraTDM", function() + for _, plys in ipairs(player.GetAll()) do + AddOriginToPVS(plys:GetPos()) + end +end) + +hook.Add("PlayerDeathThink", "TDMPlayer", function(ply) + if not COD.GameStarted or COD.Ending or COD.DisableSpawn then + ply:Spectate(6) + end + if COD.GameStarted then + if ply:Team() != 1 and ply:Team() != 2 then + ply:Spectate(6) + end + if ply.DeathTime > CurTime() or ply.ControllingKillstreak then + return false + end + end +end) + +hook.Add("PlayerSpawn", "TDMPlayerSpawn", function(ply) + if not COD.GameStarted or COD.DisableSpawn then + ply:KillSilent() + else + if ply:Team() != 1 and ply:Team() != 2 then + ply:KillSilent() + end + end + if ply:Team() == 1 then + ply:SetModel("models/tdmg/pm/specgru_milsim_"..math.random(1,4).."_1_pm.mdl") + ply:SetPos(table.Random(COD.DataTable["Team1_Spawns"])) + ply.VJ_NPC_Class = {"CLASS_SPECGRU"} + elseif ply:Team() == 2 then + ply:SetModel("models/tdmg/pm/kortac_1_"..math.random(1,4).."_pm.mdl") + ply:SetPos(table.Random(COD.DataTable["Team2_Spawns"])) + ply.VJ_NPC_Class = {"CLASS_KORTAC"} + end + ply.HeadBlow = false + if COD.EnabledDynamicSpawnPoints then + COD:SpawnPlayerAtSafePosition(ply) + end + ply:GodEnable() + timer.Simple(2, function() + if IsValid(ply) then + ply:GodDisable() + end + end) + ply:SetNWBool('Downed', false) + ply:SetupHands() + ply:SetWalkSpeed(160) + ply:SetRunSpeed(280) + ply:SetJumpPower(128) + ply:UnSpectate() + ply:SetNWFloat('KillsP', 0) + ply.DeathTime = 0 + + if COD.Perk1Unlocked then + ply:SetNWFloat('Perk1', ply.Perk1Choosed) + end + + if COD.Perk2Unlocked then + ply:SetNWFloat('Perk2', ply.Perk2Choosed) + end + + ply:SetNWFloat('Perk1_Choose', ply.Perk1Choosed) + ply:SetNWFloat('Perk2_Choose', ply.Perk2Choosed) + + ply.CooldownPerkEquip = CurTime()+15 + if ply:GetNWFloat('Perk1') == 3 then + ply:SetNWFloat('KillsP', 1) + end + ply:SetNoCollideWithTeammates(true) + local wdata = ply.WeaponData + if wdata and wdata[1] != "" then + ply:SetPrimaryWep(wdata[1]) + else + ply:SetPrimaryWep() + end + if wdata and wdata[2] != "" then + ply:SetSecondaryWep(wdata[2]) + else + ply:SetSecondaryWep() + end + ply:SetNWFloat('FragGrenades', 2) + ply:SetNWFloat('FlashGrenades', 2) + ply:SetNWBool('jugger', false) + ply:SetNWBool('KillStreak1_Used', false) + ply:SetNWBool('KillStreak2_Used', false) + ply:SetNWBool('KillStreak3_Used', false) + if ply:Alive() then + net.Start("COD.PerksShow") + net.Send(ply) + end +end) + +function COD:GiveMessageCenter(plytab, type) + if istable(plytab) and #plytab > 0 or IsEntity(plytab) then + net.Start("COD.ScoreMarkEnemy") + net.WriteFloat(type) + net.Send(plytab) + end +end + +hook.Add("InitPostEntity", "TDMLoadCommands", function() + RunConsoleCommand("sbox_playershurtplayers", 1) + RunConsoleCommand("mp_falldamage", 1) +end) + +hook.Add("PlayerDeathSound", "TDMSilent", function() + return true +end) + +hook.Add("PlayerDeath", "!TDMHook", function(ply, inf, att) + ply.DeathTime = CurTime()+3 + local name = "default" + local att2 = att + if IsValid(inf) then + name = inf:GetClass() + if name == "env_explosion" or name == "tdm_ah64_rocket1" or name == "tdm_ah64_rocket2" then + if IsValid(inf:GetCreator()) then + att2 = inf:GetCreator() + end + name = "explosion" + end + if name == "tdm_knife" or name == "tdm_infection_knife" then + name = "knife" + end + if name == "player" then + if IsValid(att:GetActiveWeapon()) then + name = att:GetActiveWeapon():GetClass() + end + end + end + if ply.Takedowning and att.Takedowning then + name = "takedown" + end + net.Start("COD.Killfeed") + net.WriteTable({ + attacker = att2, + inflictor = name, + target = ply, + }) + net.Broadcast() + + local rag = ply:GetRagdollEntity() + if IsValid(rag) then + rag:Remove() + + local ent = ents.Create("tdm_deathanim") + ent:SetModel(ply:GetModel()) + ent:SetPos(ply:GetPos()) + ent:SetAngles(ply:GetAngles()) + if !ply:OnGround() or ply:IsDowned() then + ent.Transform = ply + end + ent:Spawn() + end + if att:IsPlayer() and ply != att then + net.Start("COD.HitMarkEnemy") + net.WriteBool(true) + net.WriteBool(false) + net.Send(att) + att:SetNWFloat('KillsP', att:GetNWFloat('KillsP')+1) + + net.Start("COD.KillNick") + net.WriteEntity(ply) + net.Send(att) + + if att.Takedowning then + att:ChangeScore(150) + COD:GiveMessageCenter(att, 2) + elseif ply.HeadKill then + att:ChangeScore(110) + COD:GiveMessageCenter(att, 1) + elseif IsValid(inf) and inf:GetClass() == "tdm_knife" then + att:ChangeScore(125) + COD:GiveMessageCenter(att, 4) + else + att:ChangeScore(100) + COD:GiveMessageCenter(att, 0) + end + att:CheckKillstreaks() + end + if ply != att then + timer.Simple(1, function() + if !IsValid(ply) or !IsValid(att) then return end + COD:ShowKillCam(ply, att) + end) + end + if ply:Team() == 1 then + COD:AddFragsToData(2, 1) + elseif ply:Team() == 2 then + COD:AddFragsToData(1, 1) + end + ply:SetNWBool('jugger', false) + ply.AttackerPlayer = att +end) + +hook.Add("EntityTakeDamage", "TDMHook", function(ply, dmg) + local att = dmg:GetAttacker() + + if ply:IsPlayer() and ply:GetNWFloat('Perk1') == 1 and dmg:IsExplosionDamage() then + dmg:ScaleDamage(0.4) + end + if ply:IsPlayer() and dmg:IsBulletDamage() then + dmg:ScaleDamage(0.8) + end + + if att:IsPlayer() and ply != att and ply:IsPlayer() then + if att:Team() == ply:Team() then return true end + net.Start("COD.HitMarkEnemy") + net.WriteBool(false) + net.WriteBool(false) + net.Send(att) + if ply:Armor() > 0 then + net.Start("COD.HitMarkEnemy2") + net.WriteBool(ply:Armor()<=dmg:GetDamage()) + net.WriteBool(false) + net.Send(att) + end + end + + if ply:IsPlayer() and dmg:GetDamage() >= ply:Health()+ply:Armor() and ply:GetNWFloat('Perk2') == 2 and not dmg:IsExplosionDamage() and not ply.AlreadyWasDowned and not ply.Takedowning then + dmg:ScaleDamage(0) + ply:Down() + + if att:IsPlayer() then + net.Start("COD.HitMarkEnemy2") + net.WriteBool(false) + net.WriteBool(true) + net.Send(att) + end + + return true + end + + if att:IsPlayer() and (ply:IsNPC() or KillstreakTeamEntities[ply:GetClass()]) then + if ply.Team == att:Team() then + return true + else + net.Start("COD.HitMarkEnemy") + net.WriteBool(false) + net.WriteBool(false) + net.Send(att) + if dmg:GetDamage() >= ply:Health() and not ply.AlreadyHaveDeathMark then + if ply:IsNPC() or ply:GetClass() == "tdm_drone" or ply:GetClass() == "tdm_sentry" then + COD:GiveMessageCenter(att, 3) + att:ChangeScore(50) + else + COD:GiveMessageCenter(att, 6) + att:ChangeScore(250) + end + ply.AlreadyHaveDeathMark = true + end + end + end + if ply:IsPlayer() then + net.Start("COD.HitMarkEnemy") + net.WriteBool(false) + net.WriteBool(true) + net.Send(ply) + ply.HealCooldown = CurTime() + 8 + if ply:GetNWFloat('Perk2') == 1 then + ply.HealCooldown = CurTime() + 3 + end + if ply:Armor() > 0 then + local dmgs = dmg:GetDamage() + ply:SetArmor(math.max(ply:Armor()-dmgs, 0)) + return true + end + end + if ply:IsPlayer() and att.Team == ply:Team() then return true end +end) + +hook.Add("ScalePlayerDamage", "TDMHook", function(ply, hit, dmg) + if hit == HITGROUP_HEAD then + ply.HeadKill = true + timer.Create("HeadshotFalseTDM"..ply:EntIndex(), 0.01, 1, function() + if !IsValid(ply) then return end + ply.HeadKill = false + end) + end +end) + +concommand.Add("cod_changegamemode", function(ply, cmd, args) + if ply:IsSuperAdmin() then + local arg1 = args[1] + if not arg1 then + arg1 = COD.DataTable["Gamemode"] + end + local num = math.floor(tonumber(arg1)) + if num >= 1 and num <= 5 then + COD.DataTable["Gamemode"] = num + COD:GetInfoData("all") + COD:ChangeState(true) + end + end +end) + +concommand.Add("cod_givekillstreak", function(ply, cmd, args) + if ply:IsSuperAdmin() then + if args[1] then + local num = math.floor(tonumber(args[1])) + if num >= 1 and num <= 22 then + COD:KillstreakAddOther(ply, false, num) + end + end + end +end) + +local function CanSeeEnt(ent1, ent2) + local pos1 = ent1:GetPos() + local pos2 = ent2:GetPos() + local tr = util.TraceLine( { + start = pos1, + endpos = pos2, + filter = function(ent) + if ent:IsWorld() or string.match(ent:GetClass(), "prop_") then + return true + end + end, + }) + local pos3 = pos2 - pos1 + local diff = ent1:GetAimVector():Dot(pos3) + return !tr.Hit and diff > 0.2 +end + +timer.Simple(1, function() + if LeadBot then + local delay = CurTime()+2 + hook.Add("Think", "BrainBotTDM", function() + if delay < CurTime() then + delay = CurTime()+2 + for _, bot in ipairs(player.GetBots()) do + bot:UseKillstreak(math.random(1,3)) + end + end + end) + + hook.Add("PlayerSpawn", "BrainBotTDM2", function(ply) + if ply:IsBot() then + ply.Perk1Choosed = math.random(1,4) + ply.Perk2Choosed = math.random(1,4) + end + end) + + function LeadBot.StartCommand(bot, cmd) + if COD.TimeBeforeEnd > CurTime()+COD.GamemodeSettings[COD.DataTable["Gamemode"]]["MaxTime"] then return end + + local buttons = IN_SPEED + local botWeapon = bot:GetActiveWeapon() + local controller = bot.ControllerBot + local target = controller.Target + local val = IsValid(target) + + if !IsValid(controller) then return end + + if LeadBot.NoSprint or bot.DelaySprint and bot.DelaySprint > CurTime() then + buttons = 0 + end + + if val then + if bot.StopDelayTime < CurTime() then + bot.StopDelayTime = CurTime()+math.random(1,5) + bot.StopWalkingTarget = !bot.StopWalkingTarget + end + else + bot.StopDelayTime = CurTime()+math.random(1,3) + bot.StopWalkingTarget = false + end + + if val and math.random(2) == 1 and not bot.ReadyToTakedown then + buttons = buttons + IN_ATTACK + bot.DelaySprint = CurTime()+math.Rand(2,8) + end + + if IsValid(botWeapon) and (botWeapon:Clip1() == 0 or !val and botWeapon:Clip1() <= botWeapon:GetMaxClip1() / 2) then + timer.Simple(3, function() + if IsValid(botWeapon) and botWeapon:Clip1() == 0 then + botWeapon:SetClip1(botWeapon:GetMaxClip1()) + end + end) + end + + if bot:GetMoveType() == MOVETYPE_LADDER then + local pos = controller.goalPos + local ang = ((pos + bot:GetCurrentViewOffset()) - bot:GetShootPos()):Angle() + + if pos.z > controller:GetPos().z then + controller.LookAt = Angle(-30, ang.y, 0) + else + controller.LookAt = Angle(30, ang.y, 0) + end + + controller.LookAtTime = CurTime() + 0.1 + controller.NextJump = -1 + if not bot.StopWalkingTarget then + buttons = buttons + IN_FORWARD + end + end + + if controller.NextDuck > CurTime() then + buttons = buttons + IN_DUCK + elseif controller.NextJump == 0 and not bot.Takedowning then + controller.NextJump = CurTime() + 1 + buttons = buttons + IN_JUMP + end + + if bot.Takedowning then + controller.NextJump = CurTime() + 1 + end + + if !bot:IsOnGround() and controller.NextJump > CurTime() then + buttons = buttons + IN_DUCK + end + + if bot:IsDowned() then + if bot.ReviveTimeDelay < CurTime() then + buttons = IN_USE + end + else + bot.ReviveTimeDelay = CurTime()+math.Rand(0,15) + end + + + if val and not bot:IsDowned() and bot:IsAtBack(controller.Target) and bot:GetPos():DistToSqr(controller.Target:GetPos()) < 100000 then + bot.ReadyToTakedown = true + else + bot.ReadyToTakedown = false + end + + if bot.ReadyToTakedown then + if bot:GetPos():DistToSqr(controller.Target:GetPos()) < 4000 then + bot:Takedown(controller.Target) + end + end + + cmd:ClearButtons() + cmd:ClearMovement() + cmd:SetButtons(buttons) + end + + function LeadBot.PlayerMove(bot, cmd, mv) + if COD.TimeBeforeEnd > CurTime()+COD.DataTable["MaxTime"] then return end + + local controller = bot.ControllerBot + local botWeapon = bot:GetActiveWeapon() + local havemelee = false + if not bot.FlagDelay then + bot.FlagDelay = CurTime()+0.2 + end + + if IsValid(botWeapon) then + if botWeapon:GetMaxClip1() <= 0 then + havemelee = true + bot.StopWalkingTarget = false + bot.DelaySprint = 0 + end + end + + if COD.DataTable["Gamemode"] == 5 and !IsValid(controller.Target) and bot.FlagDelay < CurTime() then + bot.FlagDelay = CurTime()+0.2 + local pos, mindist = nil, math.huge + for k, v in ipairs(ents.FindByClass("tdm_domination_flag")) do + local vpos = v:GetPos() + local vdist = vpos:DistToSqr(bot:GetPos()) + if v:GetNWFloat('Team') != bot:Team() and vdist < mindist then + mindist = vdist + pos = vpos + end + end + if isvector(pos) then + controller.PosGen = pos + end + end + + if !IsValid(controller) then + bot.ControllerBot = ents.Create("leadbot_navigator") + bot.ControllerBot:Spawn() + bot.ControllerBot:SetOwner(bot) + controller = bot.ControllerBot + end + + if controller.PosGen and controller.P and controller.TPos ~= controller.PosGen then + controller.TPos = controller.PosGen + controller.P:Compute(controller, controller.PosGen) + end + + mv:SetForwardSpeed(1200) + + if controller:GetPos() ~= bot:GetPos() then + controller:SetPos(bot:GetPos()) + end + + if controller:GetAngles() ~= bot:EyeAngles() then + controller:SetAngles(bot:EyeAngles()) + end + + if (bot.NextSpawnTime and bot.NextSpawnTime + 1 > CurTime()) or !IsValid(controller.Target) or controller.ForgetTarget < CurTime() or controller.Target:Health() < 1 then + if IsValid(controller.Target) then + controller.PosGen = controller.Target:GetPos() + controller.LastSegmented = CurTime() + 30 + end + controller.Target = nil + end + if !IsValid(controller.Target) then + for _, ply in ipairs(ents.GetAll()) do + if ply ~= bot and ((ply:IsPlayer() and (!LeadBot.TeamPlay or (LeadBot.TeamPlay and (ply:Team() ~= bot:Team()))))) and ply:GetPos():DistToSqr(bot:GetPos()) < 2250000 then + if ply:Alive() and not ply:IsDowned() and CanSeeEnt(bot, ply) then + controller.Target = ply + controller.ForgetTarget = CurTime() + 2 + end + if ply:Alive() and ply:IsDowned() and not ply.Takedowning and ply:GetPos():DistToSqr(bot:GetPos()) < 250000 and bot:IsAtBack(ply) then + controller.Target = ply + controller.ForgetTarget = CurTime() + 1 + end + end + if ply ~= bot and ( ply:IsNPC() and ply.Team and ply.Team != bot:Team() or KillstreakTeamEntities[ply:GetClass()] and ply.Team != bot:Team() ) and CanSeeEnt(bot, ply) then + controller.Target = ply + controller.ForgetTarget = CurTime() + 2 + end + end + elseif controller.ForgetTarget < CurTime() and CanSeeEnt(bot, controller.Target) then + controller.ForgetTarget = CurTime() + 2 + end + + local dt = util.QuickTrace(bot:EyePos(), bot:GetForward() * 45, bot) + + if IsValid(dt.Entity) and dt.Entity:GetClass() == "prop_door_rotating" then + dt.Entity:Fire("OpenAwayFrom", bot, 0) + end + + if !IsValid(controller.Target) and (!controller.PosGen or bot:GetPos():DistToSqr(controller.PosGen) < 32 or controller.LastSegmented < CurTime()) then + controller.PosGen = controller:FindSpot("random", {radius = 12500}) + controller.LastSegmented = CurTime() + 10 + elseif IsValid(controller.Target) then + local distance = controller.Target:GetPos():DistToSqr(bot:GetPos()) + controller.PosGen = controller.Target:GetPos() + + if distance <= 90000 and not bot.ReadyToTakedown and not havemelee then + mv:SetForwardSpeed(-1200) + end + end + + if !controller.P then + return + end + + local segments = controller.P:GetAllSegments() + + if !segments then return end + + local cur_segment = controller.cur_segment + local curgoal = segments[cur_segment] + + if !curgoal then + mv:SetForwardSpeed(0) + return + end + + if segments[cur_segment + 1] and Vector(bot:GetPos().x, bot:GetPos().y, 0):DistToSqr(Vector(curgoal.pos.x, curgoal.pos.y)) < 100 then + controller.cur_segment = controller.cur_segment + 1 + curgoal = segments[controller.cur_segment] + end + + local goalpos = curgoal.pos + + if bot:GetVelocity():Length2DSqr() <= 225 then + if controller.NextCenter < CurTime() then + controller.strafeAngle = ((controller.strafeAngle == 1 and 2) or 1) + controller.NextCenter = CurTime() + math.Rand(0.3, 0.65) + elseif controller.nextStuckJump < CurTime() then + if !bot:Crouching() then + controller.NextJump = 0 + end + controller.nextStuckJump = CurTime() + math.Rand(1, 2) + end + end + + if controller.NextCenter > CurTime() and not bot.StopWalkingTarget then + if controller.strafeAngle == 1 then + mv:SetSideSpeed(1500) + elseif controller.strafeAngle == 2 then + mv:SetSideSpeed(-1500) + else + mv:SetForwardSpeed(-1500) + end + end + + if controller.NextJump ~= 0 and curgoal.type > 1 and controller.NextJump < CurTime() then + controller.NextJump = 0 + end + + if curgoal.area:GetAttributes() == NAV_MESH_CROUCH then + controller.NextDuck = CurTime() + 0.1 + end + + controller.goalPos = goalpos + + if GetConVar("developer"):GetBool() then + controller.P:Draw() + end + + local lerp = FrameTime() * math.random(8, 10) + local lerpc = FrameTime() * 8 + + if !LeadBot.LerpAim then + lerp = 1 + lerpc = 1 + end + + local mva = ((goalpos + bot:GetCurrentViewOffset()) - bot:GetShootPos()):Angle() + + mv:SetMoveAngles(mva) + + if IsValid(controller.Target) then + if not bot.Takedowning then + bot:SetEyeAngles(LerpAngle(lerp, bot:EyeAngles(), (controller.Target:EyePos() - bot:GetShootPos()):Angle())) + end + return + else + if not bot.Takedowning then + if controller.LookAtTime > CurTime() then + local ang = LerpAngle(lerpc, bot:EyeAngles(), controller.LookAt) + bot:SetEyeAngles(Angle(ang.p, ang.y, 0)) + else + local ang = LerpAngle(lerpc, bot:EyeAngles(), mva) + bot:SetEyeAngles(Angle(ang.p, ang.y, 0)) + end + end + end + end + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/server/sv_infected.lua b/gamemodes/cod_custom/gamemode/server/sv_infected.lua new file mode 100644 index 0000000..ac588b9 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/server/sv_infected.lua @@ -0,0 +1,172 @@ +COD.DelayGamemodeNumber = 999999999 + +function COD:JoinAllToTeam() + for _, ply in ipairs(player.GetAll()) do + ply:SetTeam(1) + ply:KillSilent() + ply:Spawn() + end +end + +function COD:ShowTimer(num) + net.Start("COD.TimerShow") + net.WriteFloat(num) + net.Broadcast() +end + +function COD:RandomInfection() + local tabp = player.GetAll() + local ply = table.Random(tabp) + for _, plys in ipairs(tabp) do + if plys != ply then + COD:GiveMessageCenter(plys, 9) + plys:ChangeScore(50) + end + end + if IsValid(ply) then + local pos = ply:GetPos() + local ang = ply:EyeAngles() + ply:SetTeam(2) + ply:KillSilent() + ply:Spawn() + COD:GiveMessageCenter(ply, 7) + timer.Simple(0.02, function() + if !IsValid(ply) then return end + + ply:SetPos(pos) + ply:SetEyeAngles(ang) + end) + end +end + +hook.Add("PlayerDeath", "TDMPlayer_Infection", function(ply, inf, att) + if COD.GameStarted and COD.DataTable["Gamemode"] == 4 then + COD.DataTable["Team1_Kills"] = 0 + COD.DataTable["Team2_Kills"] = 0 + if ply:Team() == 1 then + COD.TimeBeforeEnd = COD.TimeBeforeEnd+30 + BroadcastLua([[ + COD.TimeMatch = ]]..COD.TimeBeforeEnd..[[ + ]]) + for _, plys in ipairs(team.GetPlayers(1)) do + COD:GiveMessageCenter(plys, 9) + plys:ChangeScore(50) + end + end + timer.Simple(0.1, function() + if !IsValid(ply) or ply:Team() == 2 then return end + + ply:SetTeam(2) + if #team.GetPlayers(1) == 1 then + COD:GiveMessageCenter(player.GetAll(), 8) + end + end) + end +end) + +hook.Add("PlayerSpawn", "TDMPlayer_Infection", function(ply) + if COD.GameStarted and COD.DataTable["Gamemode"] == 4 then + timer.Simple(0.01, function() + if !IsValid(ply) then return end + + ply:SetNWFloat('Perk1', 4) + ply:SetNWFloat('Perk2', 0) + ply:SetNWFloat('Perk1_Choose', 0) + ply:SetNWFloat('Perk2_Choose', 0) + ply:SetNWFloat('KillStreak1', 0) + ply:SetNWFloat('KillStreak2', 0) + ply:SetNWFloat('KillStreak3', 0) + ply:SetPos(table.Random(COD.DataTable["simple_Spawns"])) + if ply:Team() == 2 then + ply:SetModel("models/humangrunt/cod4/captain_macmillan_pm.mdl") + ply:SetupHands() + ply:StripWeapons() + ply:Give('tdm_infection_knife') + ply:SetNWFloat('FragGrenades', 0) + ply:SetNWFloat('FlashGrenades', 0) + end + end) + end +end) + +hook.Add("COD.ChangeState", "TDMPlayer_Infection", function(start) + if start and COD.DataTable["Gamemode"] == 4 then + COD.TimeBefore1PerkUnlock = math.huge + COD.TimeBefore2PerkUnlock = math.huge + COD.DisableSpawn = false + COD.DelayGamemodeNumber = CurTime()+COD.DataTable["Delay_Before_Start"]+21 + COD.DisableEndGameByNoTeam = true + COD:JoinAllToTeam() + timer.Simple(COD.DataTable["Delay_Before_Start"]+10, function() + if COD.DataTable["Gamemode"] == 4 and COD.GameStarted then + COD:ShowTimer(10) + end + end) + timer.Simple(COD.DataTable["Delay_Before_Start"]+20, function() + if COD.DataTable["Gamemode"] == 4 and COD.GameStarted then + COD:RandomInfection() + end + end) + else + COD.DisableSpawn = false + end +end) + +hook.Add("Think", "TDMPlayer_Infection", function() + if COD.GameStarted and COD.DataTable["Gamemode"] == 4 then + local team1, team1alive = team.GetPlayers(1), false + local team2alive = false + local loseteam = 0 + + for k, p in ipairs(team1) do + if p:Alive() then + team1alive = true + break + end + end + + if #team.GetPlayers(2) != 0 then + team2alive = true + end + + if team1alive and team2alive then + COD.DelayGamemodeNumber = CurTime()+2 + loseteam = 0 + elseif team1alive and not team2alive then + loseteam = 1 + elseif team2alive and not team1alive then + loseteam = 2 + COD.TimeBeforeEnd = 0 + elseif not team1alive and not team2alive then + loseteam = 3 + end + + if COD.TimeBeforeStart < CurTime()+1 and team1alive then + loseteam = 1 + COD.DelayGamemodeNumber = 0 + end + + if loseteam == 1 and COD.DelayGamemodeNumber < CurTime() then + COD.DataTable["Team1_Kills"] = 1 + COD.DataTable["Team2_Kills"] = 0 + BroadcastLua([[ + COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[ + COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[ + ]]) + elseif loseteam == 2 and COD.DelayGamemodeNumber < CurTime() then + COD.DataTable["Team2_Kills"] = 1 + COD.DataTable["Team1_Kills"] = 0 + BroadcastLua([[ + COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[ + COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[ + ]]) + elseif loseteam == 3 and COD.DelayGamemodeNumber < CurTime() then + COD.DataTable["Team1_Kills"] = 0 + COD.DataTable["Team2_Kills"] = 0 + BroadcastLua([[ + COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[ + COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[ + ]]) + end + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/server/sv_invasion.lua b/gamemodes/cod_custom/gamemode/server/sv_invasion.lua new file mode 100644 index 0000000..f3ce018 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/server/sv_invasion.lua @@ -0,0 +1,335 @@ +COD_Invasion = COD_Invasion or {} +COD_Invasion.current_ai_spawned_team1 = 0 +COD_Invasion.current_ai_spawned_team2 = 0 +COD_Invasion.current_ai_max_team = COD.DataTable["MaxAIInTeam"] +COD_Invasion.HeavyUnitsDelay = 0 +COD_Invasion.HeavyUnits = false +COD_Invasion.SupportPackagesDelay = 0 +COD_Invasion.SupportPackages = false + +local delay_in_action = 0 +local spawn_team1_delay = 0 +local spawn_team2_delay = 0 +local heli_team1_delay = 0 +local heli_team2_delay = 0 +------------------------------------------------------------------------ + +hook.Add("OnNPCKilled", "TDM_Invasion", function(ent, att) + if COD.DataTable["Gamemode"] == 2 then + local class1 = "vj_tdm_invasion_soldier1" + local class2 = "vj_tdm_invasion_soldier2" + + if class1 == ent:GetClass() then + COD:AddFragsToData(2, 1) + COD_Invasion.current_ai_spawned_team1 = COD_Invasion.current_ai_spawned_team1 - 1 + elseif class2 == ent:GetClass() then + COD:AddFragsToData(1, 1) + COD_Invasion.current_ai_spawned_team2 = COD_Invasion.current_ai_spawned_team2 - 1 + end + end + if att:IsPlayer() then + att:AddFrags(1) + end +end) + +hook.Add("PlayerDeath", "TDM_Invasion", function(ply) + if COD.DataTable["Gamemode"] == 2 then + if ply:Team() == 1 then + COD:AddFragsToData(2, 4) + elseif ply:Team() == 2 then + COD:AddFragsToData(1, 4) + end + end +end) + +hook.Add("COD.ChangeState", "TDM_Invasion", function(start) + if COD.DataTable["Gamemode"] == 2 then + COD_Invasion:RemoveAllAI() + if start then + spawn_team1_delay = CurTime()+15 + spawn_team2_delay = CurTime()+15 + heli_team1_delay = CurTime()+30 + heli_team2_delay = CurTime()+30 + COD_Invasion:CreateStartAI() + COD_Invasion.HeavyUnits = false + COD_Invasion.SupportPackages = false + COD_Invasion.HeavyUnitsDelay = CurTime()+COD.GamemodeSettings[2]["Time_Before_HeavyUnits"] + COD_Invasion.SupportPackagesDelay = CurTime()+COD.GamemodeSettings[2]["Time_Before_SupportPackages"] + else + COD_Invasion.HeavyUnitsDelay = math.huge + COD_Invasion.SupportPackagesDelay = math.huge + end + end +end) + +hook.Add("OnEntityCreated", "TDM_Invasion", function(ent) + local class1 = "vj_tdm_invasion_soldier1" + local class2 = "vj_tdm_invasion_soldier2" + + if class1 == ent:GetClass() then + COD_Invasion.current_ai_spawned_team1 = COD_Invasion.current_ai_spawned_team1 + 1 + elseif class2 == ent:GetClass() then + COD_Invasion.current_ai_spawned_team2 = COD_Invasion.current_ai_spawned_team2 + 1 + end +end) + +hook.Add("Think", "TDM_Invasion", function(start) + if COD.TimeBeforeEnd < CurTime() and COD.GameStarted then + COD_Invasion:RemoveAllAI() + end + if COD.GameStarted and COD.DataTable["Gamemode"] == 2 then + if COD_Invasion.HeavyUnitsDelay < CurTime() and not COD_Invasion.HeavyUnits then + COD_Invasion.HeavyUnits = true + COD:ShowAnnouncment(2) + end + if COD_Invasion.SupportPackagesDelay < CurTime() and not COD_Invasion.SupportPackages then + COD_Invasion.SupportPackages = true + COD_Invasion:SupplyPackages() + COD:ShowAnnouncment(1) + end + if delay_in_action < CurTime() then + + delay_in_action = CurTime() + 1 + + local team1 = COD_Invasion:GetAICount(1) + local team2 = COD_Invasion:GetAICount(2) + local max = COD_Invasion.current_ai_max_team + + if team1 < max and spawn_team1_delay < CurTime() then + spawn_team1_delay = CurTime() + 2 + COD_Invasion:CreateSoldier(1) + + if heli_team1_delay < CurTime() then + heli_team1_delay = CurTime()+math.random(60,120) + COD_Invasion:CreateHeli(1) + end + end + + if team2 < max and spawn_team2_delay < CurTime() then + spawn_team2_delay = CurTime() + 2 + COD_Invasion:CreateSoldier(2) + + if heli_team2_delay < CurTime() then + heli_team2_delay = CurTime()+math.random(60,120) + COD_Invasion:CreateHeli(2) + end + end + end + end +end) + +---------------------------------------------------------------------------------- + +function COD_Invasion:SupplyPackages() + heli_team1_delay = CurTime()+30 + heli_team2_delay = CurTime()+30 + + for i, pos in ipairs(COD.DataTable["backup_Spawns"]) do + local tr2 = util.TraceLine( { + start = pos, + endpos = pos+Vector(0,0,99999), + filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end, + } ) + + local height = math.Clamp(tr2.HitPos:Distance(pos), 100, 600) + + local heli = ents.Create("prop_dynamic") + heli:SetModel("models/tdmg/heli.mdl") + heli:SetPos(pos+Vector(0,0,4)) + heli:SetAngles(Angle(0,math.random(0,360),0)) + heli:Spawn() + heli:ResetSequence("spawn") + heli:SetBodygroup(3, 1) + + timer.Simple(1, function() + for i=1,10 do + local sproxy = ents.Create("tdm_infil_soundproxy") + sproxy:SetOwner(heli:GetOwner()) + sproxy:SetPos(heli:GetPos()) + sproxy:SetAngles(heli:GetAngles()) + sproxy:SetParent(heli) + sproxy.Sound = "tdmg/sas1_veh1_int_quad_front_stat.wav" + sproxy.Bone = "tag_main_rotor_static" + sproxy.Vol = 100 + sproxy:Spawn() + end + end) + + timer.Simple(12, function() + if !IsValid(heli) then return end + local care = ents.Create("tdm_package") + care:SetPos(pos+Vector(0,0,height-64)) + care:Spawn() + care:SetAngles(heli:GetAngles()) + end) + + timer.Simple(30, function() + if IsValid(heli) then + heli:Remove() + end + end) + end +end + +function COD_Invasion:CreateSoldier(team, custompos, freezetime) + local sol = ents.Create("vj_tdm_invasion_soldier"..team) + if custompos then + sol:SetPos(custompos) + else + sol:SetPos(COD_Invasion:GetAIPosition(team)) + end + sol.Team = team + sol:Spawn() + if freezetime then + sol:AddEFlags(EFL_NO_THINK_FUNCTION) + sol:SetSequence("idle_passive") + timer.Simple(freezetime, function() + if !IsValid(sol) then return end + sol:RemoveEFlags(EFL_NO_THINK_FUNCTION) + end) + end +end + +function COD_Invasion:CreateHeli(team, custompos) + local h = ents.Create("tdm_infil") + if custompos then + h:SetPos(custompos) + else + h:SetPos(COD_Invasion:GetHeliPosition(team)) + end + h.Team2Team = team == 2 + h.Invasion = true + h.KillstreakModel = true + h.Team = team + h:Spawn() + h:SetNWFloat('Team', h.Team) +end + +function COD_Invasion:CreateStartAI() + local spos_team1 = COD.DataTable["Team1_AISpawns"] + local spos_team2 = COD.DataTable["Team2_AISpawns"] + local hpos_team1 = COD.DataTable["Team1_HeliSpawns"] + local hpos_team2 = COD.DataTable["Team2_HeliSpawns"] + + for k, v in pairs(spos_team1) do + COD_Invasion:CreateSoldier(1, v, COD.DataTable["Delay_Before_Start"]-2) + end + for k, v in pairs(spos_team2) do + COD_Invasion:CreateSoldier(2, v, COD.DataTable["Delay_Before_Start"]-2) + end + + local delay = 0 + if COD.DataTable["Enable_InfilAnimations"] then + delay = 20 + end + + timer.Simple(delay, function() + for k, v in pairs(hpos_team1) do + COD_Invasion:CreateHeli(1, v, COD.DataTable["Delay_Before_Start"]-2) + end + for k, v in pairs(hpos_team2) do + COD_Invasion:CreateHeli(2, v, COD.DataTable["Delay_Before_Start"]-2) + end + end) +end + +function COD_Invasion:RemoveAllAI() + local soldiers = ents.FindByClass("vj_tdm_invasion_*") + + COD_Invasion.current_ai_spawned_team1 = 0 + COD_Invasion.current_ai_spawned_team2 = 0 + for k, v in pairs(soldiers) do + v:Remove() + end +end + +function COD_Invasion:GetAICount(team) + local soldiers = ents.FindByClass("vj_tdm_invasion_*") + local count = 0 + + for k, v in pairs(soldiers) do + if v.Team == team then + count = count + 1 + end + end + + return count +end + +function COD_Invasion:GetAIPosition(team) + local enemy_players = player.GetAll() + + local positions = {} + for _, pos in ipairs(COD.DataTable["simple_Spawns"]) do + local can = true + local gdist = 0 + for _, en in ipairs(enemy_players) do + if en:Alive() and en:Team() != team then + local dist = en:GetPos():DistToSqr(pos) + if en:IsLineOfSightClear(pos) or dist < 50000 then + can = false + end + for v, n in ipairs(ents.FindInSphere(pos, 64)) do + if n:IsNPC() or n:IsPlayer() then + can = false + break + end + end + if dist > gdist then + gdist = dist + end + end + end + if can then + table.insert(positions, {vec = pos, dist = gdist}) + end + end + if #positions > 0 then + local position, dist = positions[1].vec, 0 + for _, p in ipairs(positions) do + if p.dist > dist then + dist = p.dist + position = p.vec + end + end + return position + else + return table.Random(COD.DataTable["simple_Spawns"]) + end +end + +function COD_Invasion:GetHeliPosition(team) + local enemy_players = ents.GetAll() + + local positions = {} + for _, pos in ipairs(COD.DataTable["backup_Spawns"]) do + local can = true + local gdist = 0 + for _, en in ipairs(enemy_players) do + if en:IsNPC() and en.Team != team or en:IsPlayer() and en:Team() != team then + local dist = en:GetPos():DistToSqr(pos) + if dist < 50000 then + can = false + end + if dist > gdist then + gdist = dist + end + end + end + if can then + table.insert(positions, {vec = pos, dist = gdist}) + end + end + if #positions > 0 then + local position, dist = positions[1].vec, 0 + for _, p in ipairs(positions) do + if p.dist > dist then + dist = p.dist + position = p.vec + end + end + return position + else + return table.Random(COD.DataTable["backup_Spawns"]) + end +end \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/server/sv_killcam.lua b/gamemodes/cod_custom/gamemode/server/sv_killcam.lua new file mode 100644 index 0000000..77c0515 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/server/sv_killcam.lua @@ -0,0 +1,168 @@ +util.AddNetworkString("COD.KillcamSend") + +COD.LastKillData = { + length = 0, + data = "" +} + +function COD:ShowLastKillCam(delay) + if not COD.DataTable["Enable_KillCam"] then return end + local len = COD.LastKillData.length + local tab = COD.LastKillData.data + timer.Simple(delay, function() + net.Start("COD.KillcamSend") + net.WriteUInt(len, 32) + net.WriteData(tab, len) + net.WriteBool(true) + net.Broadcast() + end) +end + +function COD:ShowKillCam(ply, att, delay) + if not COD.DataTable["Enable_KillCam"] then return end + + if !istable(ply) then + ply = {ply} + end + if not delay then + delay = 0 + end + + if att.KillCamTable then + local tab = att.KillCamTable + local num2 = #att.KillCamTable-300 + + for i=1,num2 do + table.remove(tab, 1) + end + + local tab3 = util.TableToJSON(tab) + tab3 = util.Compress(tab3) + local flt = #tab3 + + if flt < 4294967295 then + for _, en in pairs(ply) do + if IsValid(en) then + net.Start("COD.KillcamSend") + net.WriteUInt(flt, 32) + net.WriteData(tab3, flt) + net.WriteBool(false) + net.Send(en) + end + end + + COD.LastKillData = { + length = flt, + data = tab3 + } + end + end +end + +hook.Add("Tick", "RecordCamBot", function() + if COD.DataTable["Enable_KillCam"] then + local plyall = player.GetAll() + for k=1,#plyall do + local ply = plyall[k] + + if !COD.DataTable["Enable_KillCam_WithBots"] and !ply:IsPlayer() then continue end + + if not ply.KillCamTable then + ply.KillCamTable = {} + end + + if #ply.KillCamTable > 500 then + table.remove(ply.KillCamTable, 1) + end + + local plytab = { + model = ply:GetModel(), + ang = (ply:GetAimVector()):GetNormalized():Angle(), + pos = ply:EyePos()-ply:GetAimVector()*32+ply:GetUp()*16, + snd = "", + blt = {}, + hit = 0 + } + + if ply:GetNWString('SVAnim') != "" then + plytab.ang = (ply:GetForward()*1-ply:GetRight()*2):GetNormalized():Angle() + plytab.pos = ply:GetAttachment(ply:LookupAttachment('eyes')).Pos+ply:GetRight()*64-ply:GetForward()*16 + end + + if ply.VMSND and istable(ply.VMSND) then + plytab.snd = ply.VMSND + ply.VMSND = nil + end + + if ply.VMBLT then + plytab.blt = ply.VMBLT + ply.VMBLT = nil + end + + if ply.VMHIT then + plytab.hit = ply.VMHIT + ply.VMHIT = nil + end + + local otab = { + ent = {}, + model = {}, + pos = {}, + ang = {}, + cycle = {}, + seq = {}, + alive = {} + } + + for i=1,#plyall do + local pl = plyall[i] + if pl:IsLineOfSightClear(ply) then + table.insert(otab.ent, pl:EntIndex()) + table.insert(otab.model, pl:GetModel()) + table.insert(otab.pos, pl:GetPos()) + table.insert(otab.ang, Angle(0,math.Round(pl:EyeAngles().y),0)) + table.insert(otab.cycle, pl:GetCycle()) + table.insert(otab.seq, pl:GetSequenceName(pl:GetSequence())) + table.insert(otab.alive, pl:Alive()) + end + end + + table.insert(ply.KillCamTable, { + ply = plytab, + other = otab, + }) + end + end +end) + +hook.Add("EntityEmitSound", "RecordCamBot", function(data) + local ent = data.Entity + + if ent:IsPlayer() or ent.IsBot and ent:IsBot() then + if not istable(ent.VMSND) then + ent.VMSND = {} + end + + table.insert(ent.VMSND, data.SoundName) + end +end) + +hook.Add("EntityTakeDamage", "RecordCamBot", function(ent, data) + local att = data:GetAttacker() + if (att:IsPlayer() or att.IsBot and att:IsBot()) and (ent:IsPlayer() or ent.IsBot and ent:IsBot()) then + att.VMHIT = 1 + if data:GetDamage() >= ent:Health()+ent:Armor() then + att.VMHIT = 2 + end + end +end) + +hook.Add("EntityFireBullets", "RecordCamBot", function(ent, data) + if ent:IsPlayer() or ent.IsBot and ent:IsBot() then + if not istable(ent.VMSND) then + ent.VMSND = {} + end + + ent.VMBLT = data + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/server/sv_killstreaks.lua b/gamemodes/cod_custom/gamemode/server/sv_killstreaks.lua new file mode 100644 index 0000000..854a9c2 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/server/sv_killstreaks.lua @@ -0,0 +1,1091 @@ +local pl = FindMetaTable("Player") + +util.AddNetworkString("COD.UAVStart") +util.AddNetworkString("COD.CounterUAVStart") +util.AddNetworkString("COD.KillstreaksHUD2") +util.AddNetworkString("COD.NukeEffect") +util.AddNetworkString("COD.AirPatrol") + +function pl:SelectKillStreaks(first, second, third) + local max = #COD.Killstreaks + if first < 0 or first > max then + first = 0 + end + if second < 0 or second > max then + second = 0 + end + if third < 0 or third > max then + third = 0 + end + self:SetNWFloat('KillStreak1', first) + self:SetNWFloat('KillStreak2', second) + self:SetNWFloat('KillStreak3', third) +end + +function pl:SelectKillstreaksRandom() + if self:IsBot() then + local tab = {} + local tab2 = {} + + for i=1,14 do + table.insert(tab2, i) + end + + local num1 = math.random(1,#tab2) + tab[1] = tab2[num1] + table.remove(tab2, num1) + + local num2 = math.random(1,#tab2) + tab[2] = tab2[num2] + table.remove(tab2, num2) + + local num3 = math.random(1,#tab2) + tab[3] = tab2[num3] + table.sort(tab, function(a, b) return a < b end) + + + self:SelectKillStreaks(tab[1], tab[2], tab[3]) + else + self:SelectKillStreaks(1, 7, 13) + end +end + +function pl:CheckKillstreaks() + local tab = COD.Killstreaks + local ks1, ks2, ks3 = self:GetNWFloat('KillStreak1'), self:GetNWFloat('KillStreak2'), self:GetNWFloat('KillStreak3') + local frags = self:GetNWFloat('KillsP') + if ks1 > 0 then + if tab[ks1].kills <= frags and not self:GetNWBool('KillStreak1_Gave') and not self:GetNWBool('KillStreak1_Used') then + self:SetNWBool('KillStreak1_Gave', true) + net.Start("COD.KillstreaksHUD") + net.WriteFloat(ks1) + net.Send(self) + end + end + if ks2 > 0 then + if tab[ks2].kills <= frags and not self:GetNWBool('KillStreak2_Gave') and not self:GetNWBool('KillStreak2_Used') then + self:SetNWBool('KillStreak2_Gave', true) + net.Start("COD.KillstreaksHUD") + net.WriteFloat(ks2) + net.Send(self) + end + end + if ks3 > 0 then + if tab[ks3].kills <= frags and not self:GetNWBool('KillStreak3_Gave') and not self:GetNWBool('KillStreak3_Used') then + self:SetNWBool('KillStreak3_Gave', true) + net.Start("COD.KillstreaksHUD") + net.WriteFloat(ks3) + net.Send(self) + end + end +end + +function pl:UseKillstreak(type) + local tab = COD.Killstreaks + local ks1, ks2, ks3, ks4 = self:GetNWFloat('KillStreak1'), self:GetNWFloat('KillStreak2'), self:GetNWFloat('KillStreak3'), self.KillstreakOthers + if self:GetNWBool('KillStreak1_Gave') and not self:GetNWBool('KillStreak1_Used') and type == 1 then + self:SetNWBool('KillStreak1_Used', true) + self:SetNWBool('KillStreak1_Gave', false) + tab[ks1].func(self) + elseif self:GetNWBool('KillStreak2_Gave') and not self:GetNWBool('KillStreak2_Used') and type == 2 then + self:SetNWBool('KillStreak2_Used', true) + self:SetNWBool('KillStreak2_Gave', false) + tab[ks2].func(self) + elseif self:GetNWBool('KillStreak3_Gave') and not self:GetNWBool('KillStreak3_Used') and type == 3 then + self:SetNWBool('KillStreak3_Used', true) + self:SetNWBool('KillStreak3_Gave', false) + tab[ks3].func(self) + elseif istable(ks4) and #ks4 > 0 and type == 4 then + ks4 = ks4[#ks4] + tab[ks4].func(self) + COD:KillstreakAddOther(self, true) + end +end + +function pl:GiveRadioWep(str) + local wep = self:Give("tdm_radio") + wep.Killstreak = str + if str == "strating_run" then + wep.ManyTimes = true + wep.EndAfter = 3 + end + self:SelectWeapon("tdm_radio") + + local aw = self:GetActiveWeapon() + if IsValid(aw) then + self.RadioBeforeWep = aw:GetClass() + else + self.RadioBeforeWep = "" + end +end + +function COD:GiveKSAnn(float, ply) + net.Start("COD.KillstreaksHUD2") + net.WriteFloat(float) + net.WriteEntity(ply) + net.Broadcast() +end + +function COD:ChooseKillstreakRadio(ply, weapon, pos) + local str = weapon.Killstreak + if str == "package" then + COD:DropPackage(pos, ply) + elseif str == "airstrike" then + COD:AirstrikeCall(ply, pos) + elseif str == "mortar" then + COD:MortarCall(ply, pos) + elseif str == "airstrike_line" then + COD:LineAirstrikeCall(ply, pos) + elseif str == "emergencypackage" then + COD:DropEmergencyPackage(pos, ply) + elseif str == "helicopterrun" then + COD:HelicopterRun(ply, pos) + elseif str == "helicopter" then + COD:SpawnHelicopter(ply, pos) + elseif str == "strating_run" then + COD:StratingRun(ply, pos) + elseif str == "harrier" then + COD:SpawnHarrier(ply, pos) + end +end + +function COD:CheckSky(ent) + local tr = ent + if !isvector(ent) then + tr = tr:GetPos() + end + + local tr2 = util.TraceLine({ + start = tr, + endpos = tr+Vector(0,0,99999), + filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end, + }) + + return tr2.HitSky +end + +------------------------------------------------------------------------------------------------------------- +function COD:AirPatrol(ply) + local team = ply:Team() + local pos = ply:GetPos() + + COD:GiveKSAnn(10, ply) + + local tr2 = util.TraceLine({ + start = pos, + endpos = pos+Vector(0,0,99999), + filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end, + }) + + local height = math.Clamp(tr2.HitPos:Distance(pos), 100, 600) + + for i = 1,3 do + timer.Simple(i, function() + local airm = ents.Create('prop_dynamic') + airm:SetModel('models/tdmg/a10.mdl') + airm:SetPos(ply:GetPos()+Vector(0,0,height)) + airm:SetAngles(Angle(0,rnd,0)) + airm:Spawn() + airm:ResetSequence('strafing run') + + if i == 3 then + sound.Play("ambient/explosions/exp1.wav", pos, 0) + for k, pl in ipairs(player.GetAll()) do + if pl:Team() != ply:Team() then + net.Start("COD.AirPatrol") + net.WriteBool(true) + net.Send(pl) + else + net.Start("COD.AirPatrol") + net.WriteBool(false) + net.Send(pl) + end + end + for _, p in ipairs(ents.GetAll()) do + if p.KillstreakModel and p.Team and p.Team != ply:Team() then + p:EmitSound("ambient/explosions/explode_1.wav") + ParticleEffect("explosion_huge_h", p:GetPos(), Angle(0,0,0)) + p:Remove() + end + if (p:GetClass() == "tdm_ah64" or p:GetClass() == "tdm_mi24" or p:GetClass() == "tdm_harrier") and team != p.Team then + p:DestroyHeli(true) + end + end + end + + timer.Simple(6, function() + if !IsValid(airm) then return end + sound.Play("tdmg/a10.wav", pos, 0) + end) + + timer.Simple(15, function() + if !IsValid(airm) then return end + airm:Remove() + end) + end) + end + + sound.Play("ambient/machines/aircraft_distant_flyby3.wav", pos, 0) +end + +function COD:StratingRun(ply, pos) + if istable(pos) then + COD:GiveKSAnn(12, ply) + + local ang = Angle(0,rnd,0) + for k, v in ipairs(pos) do + local airm = ents.Create('prop_dynamic') + timer.Simple(4+k, function() + airm:SetModel('models/tdmg/saebomber.mdl') + airm:SetPos(v) + airm:SetAngles(ang) + airm:Spawn() + airm:ResetSequence('fly') + airm.Team = ply:Team() + airm.KillstreakModel = true + airm:EmitSound("ambient/machines/aircraft_distant_flyby3.wav") + end) + timer.Simple(5.5+k/2, function() + if !IsValid(airm) then return end + + util.ScreenShake( v, 5, 2, 2, 5000 ) + local explosion = ents.Create("env_explosion") + explosion:SetPos(v) + explosion:Spawn() + explosion:SetCreator(airm) + explosion.Team = ply:Team() + explosion:SetKeyValue("iMagnitude", "300") + explosion:Fire("Explode", 0, 0) + ParticleEffect("explosion_huge_h", v, Angle(0,0,0)) + sound.Play("tdmg/a10_explosion.wav", v, 0) + end) + timer.Simple(7+k/2, function() + if !IsValid(airm) then return end + + airm:Remove() + end) + end + + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == ply:Team() then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/airstrike_friendly.wav')]]) + else + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/airstrike_enemy.wav')]]) + end + end + end +end + +function COD:CallReinforcment(ply) + local pos, dist = nil, 999999 + local team = ply:Team() + local tab = COD.DataTable["backup_Spawns"] + + COD:GiveKSAnn(15, ply) + + for _, v in ipairs(tab) do + if isvector(pos) then + local dis1 = v:Distance(ply:GetPos()) + if dis1 <= dist then + pos, dist = v, dis1 + end + else + pos = v + end + end + + if isvector(pos) then + local heli = ents.Create("tdm_infil") + heli:SetPos(pos) + heli.Team2Team = ply:Team() == 2 + heli:Spawn() + heli.Team = ply:Team() + heli:SetNWFloat('Team', heli.Team) + heli.KillstreakModel = true + + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == ply:Team() then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/cover_friendly.wav')]]) + else + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/cover_enemy.wav')]]) + end + end + end +end + +function COD:SpawnSentry(ply) + local team = ply:Team() + local pos = ply:GetForward()*56+ply:GetPos() + COD:GiveKSAnn(9, ply) + + if pos then + local sen = ents.Create("tdm_sentry") + sen:SetPos(pos) + sen:SetAngles(ply:GetAngles()) + sen:Spawn() + sen.Team = ply:Team() + sen:SetNWFloat('Team', sen.Team) + + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == ply:Team() then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/turret_friendly.wav')]]) + else + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/turret_enemy.wav')]]) + end + end + end +end + +function COD:SpawnHelicopter(ply, pos) + local team = ply:Team() + + if pos then + COD:GiveKSAnn(13, ply) + local mi = ents.Create("tdm_mi24") + mi:SetPos(pos) + mi:SetAngles(Angle(0,math.random(0,360),0)) + mi:Spawn() + mi.Team = ply:Team() + mi:SetNWFloat('Team', mi.Team) + + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == ply:Team() then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/heli_friendly.wav')]]) + else + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/heli_friendly.wav')]]) + end + end + end +end + +function COD:UAVCall(team, mobile) + for k, ply in ipairs(player.GetAll()) do + if ply:Team() == team then + net.Start("COD.UAVStart") + net.WriteBool(mobile) + net.Send(ply) + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/uav_friendly.wav')]]) + else + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/uav_enemy.wav')]]) + end + end +end + +function COD:CounterUAVCall(plys) + COD:GiveKSAnn(5, plys) + for k, ply in ipairs(player.GetAll()) do + if ply:Team() == plys:Team() then + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/counter_uav_friendly.wav')]]) + else + net.Start("COD.CounterUAVStart") + net.Send(ply) + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/counter_uav_enemy.wav')]]) + end + end +end + +function COD:CallAC130(pl) + local team = pl:Team() + + local ac = ents.Create("prop_dynamic") + ac:SetModel("models/tdmg/ac130hipienfly.mdl") + ac:SetPos(pl:GetPos()) + ac.KillstreakModel = true + ac.Team = pl:Team() + ac:Spawn() + ac:SetMaterial("phoenix_storms/grey_steel") + ac:ResetSequence("fly") + ac:SetPlaybackRate(0.5) + ac.PenetrationPower = 25 + + local plane = ac + + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == team then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/ac130_friendly.wav')]]) + else + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/ac130_enemy.wav')]]) + end + end + + local bulletdelay = CurTime()+math.random(5,10) + local rocketdelay = CurTime()+math.random(10,20) + local rnd = math.random(1,666666666) + + hook.Add("Think", "AC130"..rnd, function() + local targets = {} + if !IsValid(ac) then + hook.Remove("Think", "AC130"..rnd) + end + if bulletdelay < CurTime() then + bulletdelay = CurTime()+math.random(5,10) + for _, ply in ipairs(player.GetAll()) do + if ply:Alive() and ply:Team() != team and COD:CheckSky(ply) and ply:GetNWFloat('Perk2') != 4 then + table.insert(targets, ply) + end + end + if #targets > 0 then + local target = targets[math.random(1,#targets)] + for i=1,75 do + timer.Simple(i/30, function() + if !IsValid(plane) then return end + local pos = target:GetPos() + util.ScreenShake(pos, 1, 2, 2, 5000) + plane.CurrentPenetrationPower = plane.PenetrationPower + plane:FireBullets({ + Damage = 250, + Src = pos+Vector(0,0,64), + Dir = Vector(0,0,-1), + Spread = VectorRand(-0.5,0.5), + Force = 50, + Attacker = ply, + Tracer = 0, + }) + if i == 1 then + sound.Play("tdmg/killstreaks/ac130_gun.wav", pos, 0) + end + end) + end + end + elseif rocketdelay < CurTime() then + rocketdelay = CurTime()+math.random(10,20) + for _, ply in ipairs(player.GetAll()) do + if ply:Alive() and ply:Team() != team and COD:CheckSky(ply) then + table.insert(targets, ply) + end + end + if #targets > 0 then + local target = targets[math.random(1,#targets)] + for i=1,math.random(2,4) do + timer.Simple(i/2, function() + if !IsValid(plane) then return end + local pos2 = target:GetPos() + Vector(math.random(-200,200),math.random(-200,200),0) + util.ScreenShake(pos2, 5, 2, 2, 5000) + util.BlastDamage(plane, plane, pos2, 512, 256) + ParticleEffect("explosion_huge_h", pos2, Angle(0,0,0)) + util.Decal("ExplosiveGunshot", pos2, pos2-Vector(0,0,4)) + sound.Play("tdmg/killstreaks/ac130_rocket.wav", pos2, 0) + end) + end + end + end + end) + + timer.Simple(60, function() + if IsValid(ac) then + ac:Remove() + end + end) +end + +function COD:SpawnHarrier(plys, pos) + if pos then + COD:GiveKSAnn(14, plys) + local h = ents.Create("tdm_harrier") + h:SetPos(pos) + h:SetAngles(Angle(0,math.random(0,360),0)) + h:Spawn() + h.Team = plys:Team() + h:SetNWFloat('Team', h.Team) + + timer.Simple(2.5, function() + if !IsValid(h) then return end + + util.ScreenShake( pos, 5, 2, 2, 5000 ) + local explosion = ents.Create("env_explosion") + explosion:SetCreator(h) + explosion:SetPos(pos) + explosion:Spawn() + explosion.Team = plys:Team() + explosion:SetKeyValue("iMagnitude", "300") + explosion:Fire("Explode", 0, 0) + ParticleEffect("explosion_huge_h", pos, Angle(0,0,0)) + sound.Play("tdmg/a10_explosion.wav", pos, 0) + end) + + for k, ply in ipairs(player.GetAll()) do + if ply:Team() == plys:Team() then + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/harrier_friendly.wav')]]) + else + net.Start("COD.CounterUAVStart") + net.Send(ply) + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/harrier_enemy.wav')]]) + end + end + end +end + +function COD:DropPackage(pos, ply) + local tr2 = util.TraceLine( { + start = pos, + endpos = pos+Vector(0,0,99999), + filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end, + } ) + + if not tr2.HitSky then return end + COD:GiveKSAnn(4, ply) + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == ply:Team() then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/care_friendly.wav')]]) + else + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/care_enemy.wav')]]) + end + end + + local height = math.Clamp(tr2.HitPos:Distance(pos), 100, 600) + + local heli = ents.Create("prop_dynamic") + heli:SetModel("models/tdmg/heli.mdl") + heli:SetPos(pos+Vector(0,0,4)) + heli:SetAngles(Angle(0,math.random(0,360),0)) + heli:Spawn() + heli:ResetSequence("spawn") + heli:SetBodygroup(3, 1) + heli.Team = ply:Team() + heli.KillstreakModel = true + + timer.Simple(1, function() + for i=1,10 do + local sproxy = ents.Create("tdm_infil_soundproxy") + sproxy:SetOwner(heli:GetOwner()) + sproxy:SetPos(heli:GetPos()) + sproxy:SetAngles(heli:GetAngles()) + sproxy:SetParent(heli) + sproxy.Sound = "tdmg/sas1_veh1_int_quad_front_stat.wav" + sproxy.Bone = "tag_main_rotor_static" + sproxy.Vol = 100 + sproxy:Spawn() + end + end) + + timer.Simple(12, function() + if !IsValid(heli) then return end + local care = ents.Create("tdm_package") + care:SetPos(pos+Vector(0,0,height-64)) + care:Spawn() + care:SetNWEntity('Owner', ply) + care:SetAngles(heli:GetAngles()) + end) + + timer.Simple(30, function() + if IsValid(heli) then + heli:Remove() + end + end) +end + +function COD:DropEmergencyPackage(pos, ply) + local tr2 = util.TraceLine( { + start = pos, + endpos = pos+Vector(0,0,99999), + filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end, + } ) + + if not tr2.HitSky then return end + COD:GiveKSAnn(19, ply) + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == ply:Team() then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/care_friendly.wav')]]) + else + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/care_enemy.wav')]]) + end + end + + local height = math.Clamp(tr2.HitPos:Distance(pos), 100, 600) + + local heli = ents.Create("prop_dynamic") + heli:SetModel("models/tdmg/heli.mdl") + heli:SetPos(pos+Vector(0,0,4)) + heli:SetAngles(Angle(0,math.random(0,360),0)) + heli:Spawn() + heli:ResetSequence("spawn") + heli:SetBodygroup(3, 1) + heli.Team = ply:Team() + heli.KillstreakModel = true + + timer.Simple(1, function() + for i=1,10 do + local sproxy = ents.Create("tdm_infil_soundproxy") + sproxy:SetOwner(heli:GetOwner()) + sproxy:SetPos(heli:GetPos()) + sproxy:SetAngles(heli:GetAngles()) + sproxy:SetParent(heli) + sproxy.Sound = "tdmg/sas1_veh1_int_quad_front_stat.wav" + sproxy.Bone = "tag_main_rotor_static" + sproxy.Vol = 100 + sproxy:Spawn() + end + end) + + + for i=1,3 do + timer.Simple(10+(i*1.5), function() + if !IsValid(heli) then return end + local care = ents.Create("tdm_package") + care:SetPos(pos+Vector(math.random(-64,64),math.random(-64,64),height-64)) + care:Spawn() + care:SetNWEntity('Owner', ply) + care:SetAngles(heli:GetAngles()) + end) + end + + timer.Simple(30, function() + if IsValid(heli) then + heli:Remove() + end + end) +end + +function COD:SpawnCMine(ply) + COD:GiveKSAnn(6, ply) + + local mine = ents.Create('tdm_cmine') + mine:SetPos(ply:EyePos()) + mine.Team = ply:Team() + mine:Spawn() + mine:GetPhysicsObject():SetVelocity(ply:GetAimVector()*256) +end + +function COD:DroneSpawn(ply) + local team = ply:Team() + + COD:GiveKSAnn(2, ply) + + if not ply:IsBot() then + local ch = ents.Create("tdm_drone") + ch:SetPos(ply:EyePos()+Vector(0,0,16)) + ch:SetCreator(ply) + ch:SetAngles(ply:GetAngles()) + ch:Spawn() + ch.Team = ply:Team() + ch:SetNWFloat('Team', ch.Team) + + return + end +end + +function COD:HelicopterRun(ply, pos) + local team = ply:Team() + + COD:GiveKSAnn(17, ply) + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == ply:Team() and pl != ply then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/heli_friendly.wav')]]) + elseif pl:Team() != ply:Team() and pl != ply then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/heli_enemy.wav')]]) + end + end + + if COD.DataTable["Enable_ManualControl_ChopperGunner"] and not ply:IsBot() then + local pos = table.Random(COD.DataTable["ChopperGunner_Spawns"]) + local ch = ents.Create("tdm_ah64") + ch:SetPos(pos) + ch:SetCreator(ply) + ch.Team = ply:Team() + ch:SetNWFloat('Team', ch.Team) + ch:Spawn() + + return + end + local tr2 = util.TraceLine({ + start = pos, + endpos = pos+Vector(0,0,99999), + filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end, + }) + + local height = math.Clamp(tr2.HitPos:Distance(pos), 0, 600) + + local airm = ents.Create('prop_dynamic') + airm:SetModel('models/tdmg/ah64.mdl') + airm:SetPos(pos+Vector(0,0,height)) + airm:SetAngles(Angle(0,math.random(0,360),0)) + airm:Spawn() + airm:ResetSequence('action') + airm:SetPlaybackRate(0.5) + airm.Attacking = false + airm.Team = ply:Team() + airm.KillstreakModel = true + sound.Play("tdmg/killstreaks/ah64_flyby.ogg", pos, 0) + + timer.Simple(6, function() + if !IsValid(airm) then return end + timer.Create("TargetChecker"..airm:EntIndex(), 1, 24, function() + if !IsValid(airm) then return end + if not airm.Attacking then + for _, ent in ipairs(ents.FindInSphere(pos, 1500)) do + if ent:IsPlayer() and ent:Alive() and ent:Team() != airm.Team and COD:CheckSky(ent) and ent:GetNWFloat('Perk2') != 4 then + local max = math.random(4,8) + for i=1, max do + timer.Simple(i/5, function() + if !IsValid(airm) then return end + local pos2 = ent:GetPos()+Vector(math.random(-64,64), math.random(-64,64),0) + sound.Play("tdmg/killstreaks/apache_cannon.wav", pos, 0) + timer.Simple(0.2, function() + local explosion = ents.Create("env_explosion") + explosion:SetCreator(airm) + explosion:SetPos(pos2) + explosion:Spawn() + explosion.Team = ply:Team() + explosion:SetKeyValue("iMagnitude", "75") + explosion:Fire("Explode", 0, 0) + end) + airm.Attacking = true + if i == max then + timer.Simple(1, function() + if !IsValid(airm) then return end + airm.Attacking = false + end) + end + end) + end + end + end + end + end) + end) + + timer.Simple(42, function() + if !IsValid(airm) then return end + airm:Remove() + end) +end + +function COD:MortarCall(ply, pos) + local team = ply:Team() + + local tr2 = util.TraceLine( { + start = pos, + endpos = pos+Vector(0,0,99999), + filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end, + } ) + + if not tr2.HitSky then return end + COD:GiveKSAnn(11, ply) + + for k, ply in ipairs(player.GetAll()) do + if ply:Team() == team then + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/airstrike_friendly.wav')]]) + else + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/airstrike_enemy.wav')]]) + end + end + + local height = math.Clamp(tr2.HitPos:Distance(pos)-100, 512, 4096) + + local rnd = math.random(0,360) + + sound.Play("ambient/explosions/exp3.wav", pos, 0) + + local cooldown = 6 + for i=1,16 do + if i == 5 or i == 9 or i == 13 then + cooldown = cooldown + 4 + end + timer.Simple(cooldown+i, function() + local pos2 = pos + Vector(math.random(-300,300),math.random(-300,300),0) + sound.Play("weapons/mortar/mortar_shell_incomming1.wav", pos2, 0) + timer.Simple(0.8, function() + util.ScreenShake( pos2, 5, 2, 2, 5000 ) + local explosion = ents.Create("env_explosion") + explosion:SetCreator(game.GetWorld()) + explosion:SetPos(pos2) + explosion:Spawn() + explosion.Team = ply:Team() + explosion:SetKeyValue("iMagnitude", "250") + explosion:Fire("Explode", 0, 0) + ParticleEffect("explosion_huge_h", pos2, Angle(0,0,0)) + sound.Play("tdmg/a10_explosion.wav", pos2, 0) + end) + end) + end + + timer.Simple(15, function() + if !IsValid(airm) then return end + airm:Remove() + airm2:Remove() + end) +end + +function COD:LineAirstrikeCall(ply, pos) + local team = ply:Team() + + COD:GiveKSAnn(16, ply) + + for k, ply in ipairs(player.GetAll()) do + if ply:Team() == team then + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/airstrike_friendly.wav') COD:SpeakerSay('tdmg/killstreaks/airstrike_siren.wav')]]) + else + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/airstrike_enemy.wav') COD:SpeakerSay('tdmg/killstreaks/airstrike_siren.wav')]]) + end + end + + local rnd = math.random(0,360) + local airm = ents.Create('prop_dynamic') + airm:SetModel('models/tdmg/b2.mdl') + airm:SetPos(pos) + airm:SetAngles(Angle(0,rnd,0)) + airm:Spawn() + airm:ResetSequence('action') + airm:SetPlaybackRate(0.25) + airm.Team = ply:Team() + airm.KillstreakModel = true + + sound.Play("ambient/machines/aircraft_distant_flyby3.wav", pos, 0) + + local offset = 3000 + timer.Simple(8, function() + if !IsValid(airm) then return end + for i=1,100 do + timer.Simple(0.1*i, function() + if !IsValid(airm) then return end + offset = offset - 60 + local pos2 = pos+airm:GetForward()*(offset) + if COD:CheckSky(pos2) then + local explosion = ents.Create("env_explosion") + explosion:SetCreator(airm) + explosion:SetPos(pos2+airm:GetRight()*32) + explosion:Spawn() + explosion.Team = ply:Team() + explosion:SetKeyValue("iMagnitude", "300") + explosion:Fire("Explode", 0, 0) + + local explosion = ents.Create("env_explosion") + explosion:SetCreator(airm) + explosion:SetPos(pos2-airm:GetRight()*32) + explosion:Spawn() + explosion.Team = ply:Team() + explosion:SetKeyValue("iMagnitude", "300") + explosion:Fire("Explode", 0, 0) + + ParticleEffect("explosion_huge_h", pos2-airm:GetRight()*32, Angle(0,0,0)) + ParticleEffect("explosion_huge_h", pos2+airm:GetRight()*32, Angle(0,0,0)) + + util.ScreenShake( pos2, 5, 2, 2, 5000 ) + sound.Play("tdmg/a10_explosion.wav", pos2, 0) + end + end) + end + end) + + timer.Simple(20, function() + if !IsValid(airm) then return end + airm:Remove() + end) +end + +function COD:AirstrikeCall(ply, pos) + local team = ply:Team() + + local tr2 = util.TraceLine( { + start = pos, + endpos = pos+Vector(0,0,99999), + filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end, + } ) + + --if not tr2.HitSky then return end + COD:GiveKSAnn(7, ply) + + for k, ply in ipairs(player.GetAll()) do + if ply:Team() == team then + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/airstrike_friendly.wav')]]) + else + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/airstrike_enemy.wav')]]) + end + end + + local height = math.Clamp(tr2.HitPos:Distance(pos)-100, 512, 4096) + + local rnd = math.random(0,360) + + local airm = ents.Create('prop_dynamic') + airm:SetModel('models/tdmg/a10.mdl') + airm:SetPos(pos) + airm:SetAngles(Angle(0,rnd,0)) + airm:Spawn() + airm:ResetSequence('strafing run') + airm.Team = ply:Team() + airm.KillstreakModel = true + airm.PenetrationPower = 25 + + local airm2 = ents.Create('prop_dynamic') + airm2:SetModel('models/tdmg/a10.mdl') + airm2:SetPos(pos) + airm2:SetAngles(Angle(0,rnd,0)) + airm2:Spawn() + airm2:SetNoDraw(true) + airm2.Team = ply:Team() + airm2.KillstreakModel = true + airm2.PenetrationPower = 25 + + timer.Simple(3, function() + if !IsValid(airm2) then return end + airm2:ResetSequence('strafing run') + airm2:SetNoDraw(false) + end) + + sound.Play("ambient/machines/aircraft_distant_flyby3.wav", pos, 0) + timer.Simple(6, function() + if !IsValid(airm) then return end + sound.Play("tdmg/a10.wav", pos, 0) + end) + timer.Simple(9, function() + if !IsValid(airm2) then return end + sound.Play("tdmg/a10.wav", pos, 0) + end) + + for i=1,1000 do + timer.Simple(6+(i/500), function() + if !IsValid(airm) then return end + util.ScreenShake( pos, 1, 2, 2, 5000 ) + airm.CurrentPenetrationPower = airm.PenetrationPower + local add = Vector(math.random(-256,256),math.random(-256,256),0) + airm:FireBullets({ + Damage = 500, + Src = add+tr2.HitPos-Vector(0,0,4), + Dir = Vector(0,0,-1), + Spread = VectorRand(-1,1), + Force = 50, + Tracer = 0, + }) + if math.random(1,100) <= 1 then + local explosion = ents.Create("env_explosion") + explosion:SetCreator(airm) + local vec = VectorRand(-128,128) + vec.z = 0 + explosion:SetPos(pos+vec) + explosion:Spawn() + explosion.Team = ply:Team() + explosion:SetKeyValue("iMagnitude", "100") + explosion:Fire("Explode", 0, 0) + end + if i == 1 then + sound.Play("tdmg/a10_shooting.wav", pos, 0) + end + end) + timer.Simple(9+(i/500), function() + if !IsValid(airm2) then return end + util.ScreenShake( pos, 1, 2, 2, 5000 ) + airm2.CurrentPenetrationPower = airm2.PenetrationPower + local add = Vector(math.random(-256,256),math.random(-256,256),0) + airm2:FireBullets({ + Damage = 500, + Src = add+tr2.HitPos-Vector(0,0,4), + Dir = Vector(0,0,-1), + Spread = VectorRand(-1,1), + Force = 50, + Tracer = 0, + }) + if math.random(1,100) <= 1 then + local explosion = ents.Create("env_explosion") + explosion:SetCreator(airm) + local vec = VectorRand(-128,128) + vec.z = 0 + explosion:SetPos(pos+vec) + explosion:Spawn() + explosion.Team = ply:Team() + explosion:SetKeyValue("iMagnitude", "100") + explosion:Fire("Explode", 0, 0) + end + if i == 1 then + sound.Play("tdmg/a10_shooting.wav", pos, 0) + end + end) + end + + timer.Simple(15, function() + if !IsValid(airm) then return end + airm:Remove() + airm2:Remove() + end) +end + +function COD:GiveJuggernaut(ply) + ply:SetModel('models/tfusion/playermodels/mw3/mp_fullbody_ally_juggernaut.mdl') + ply:SetWalkSpeed(80) + ply:SetRunSpeed(160) + ply:SetMaxArmor(2500) + ply:SetArmor(2500) + ply:SetNWBool('jugger', true) + local wep = ply:Give('mg_dblmg') + wep:SetClip1(2000) + ply:SelectWeapon('mg_dblmg') + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == ply:Team() then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/care_friendly.wav')]]) + else + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/care_enemy.wav')]]) + end + end +end + +function COD:CallK9(ply) + local team = ply:Team() + local pos = ply:GetForward()*48+ply:GetPos() + + if pos then + local dog = ents.Create("vj_tdm_k9") + dog:SetPos(pos) + dog.Team = ply:Team() + dog:Spawn() + + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == ply:Team() then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/cover_friendly.wav')]]) + else + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/cover_enemy.wav')]]) + end + end + end +end + +function COD:GiveWeaponKillstreak(ply, class) + local wep = ply:Give(class) + ply:SelectWeapon(wep) + function wep:Reload() end + for k, pl in ipairs(player.GetAll()) do + if pl:Team() == ply:Team() then + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/care_friendly.wav')]]) + else + pl:SendLua([[COD:SpeakerSay('tdmg/killstreaks/care_enemy.wav')]]) + end + end + local rnd = math.random(0,1000000) + hook.Add("Think", "WK"..rnd, function() + if !IsValid(wep) then + hook.Remove("Think", "WK"..rnd) + else + local owner = wep:GetOwner() + if !IsValid(owner) then + wep:Remove() + else + local clip = wep:Clip1() + if clip == 0 then + wep:Remove() + end + end + end + end) +end + +function COD:Nuke(team) + if COD.TimeBeforeEnd < CurTime()+30 then return end + net.Start("COD.NukeEffect") + net.Broadcast() + for k, ply in ipairs(player.GetAll()) do + if ply:Team() == team then + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/nuke_friendly.wav')]]) + else + ply:SendLua([[COD:SpeakerSay('tdmg/killstreaks/nuke_enemy.wav')]]) + end + end + timer.Simple(15, function() + util.ScreenShake(Vector(0,0,0), 10, 5, 15, 50000) + timer.Simple(7, function() + if team == 1 then + COD.DataTable["Team1_Kills"] = COD.DataTable["MaxKills"] + else + COD.DataTable["Team2_Kills"] = COD.DataTable["MaxKills"] + end + end) + end) +end \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/server/sv_knockout.lua b/gamemodes/cod_custom/gamemode/server/sv_knockout.lua new file mode 100644 index 0000000..42183ba --- /dev/null +++ b/gamemodes/cod_custom/gamemode/server/sv_knockout.lua @@ -0,0 +1,93 @@ +COD.DelayGamemodeNumber = 999999999 + +hook.Add("PlayerDeath", "TDMPlayer_Knockout", function(ply) + if COD.GameStarted and COD.DataTable["Gamemode"] == 3 then + timer.Simple(0.1, function() + if !IsValid(ply) then return end + + ply.DeathTime = CurTime()+999999999 + end) + end +end) + +hook.Add("PlayerSpawn", "TDMPlayer_Knockout", function(ply) + if COD.GameStarted and COD.DataTable["Gamemode"] == 3 then + timer.Simple(0.1, function() + if !IsValid(ply) then return end + + ply:SetNWFloat('Perk1', 0) + ply:SetNWFloat('Perk2', 2) + ply:SetNWFloat('Perk1_Choose', 0) + ply:SetNWFloat('Perk2_Choose', 0) + ply:SetNWFloat('KillStreak1', 0) + ply:SetNWFloat('KillStreak2', 0) + ply:SetNWFloat('KillStreak3', 0) + end) + end +end) + +hook.Add("COD.ChangeState", "TDMGmodStartMatch_Knockout", function(start) + if start and COD.DataTable["Gamemode"] == 3 then + COD.TimeBefore1PerkUnlock = math.huge + COD.TimeBefore2PerkUnlock = math.huge + COD.DisableSpawn = true + COD.DelayGamemodeNumber = CurTime()+5 + COD.DisableEndGameByNoTeam = false + else + COD.DisableSpawn = false + end +end) + +hook.Add("Think", "TDMGmodStartMatch_Knockout", function() + if COD.GameStarted and COD.DataTable["Gamemode"] == 3 then + local team1, team1alive = team.GetPlayers(1), false + local team2, team2alive = team.GetPlayers(2), false + local loseteam = 0 + + for k, p in ipairs(team1) do + if p:Alive() then + team1alive = true + break + end + end + + for k, p in ipairs(team2) do + if p:Alive() then + team2alive = true + break + end + end + + if team1alive and team2alive then + COD.DelayGamemodeNumber = CurTime()+2 + loseteam = 0 + elseif team1alive and not team2alive then + loseteam = 1 + elseif team2alive and not team1alive then + loseteam = 2 + elseif not team1alive and not team2alive then + loseteam = 3 + end + + if loseteam == 1 and COD.DelayGamemodeNumber < CurTime() then + COD.DataTable["Team1_Kills"] = COD.DataTable["MaxKills"] + BroadcastLua([[ + COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[ + COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[ + ]]) + elseif loseteam == 2 and COD.DelayGamemodeNumber < CurTime() then + COD.DataTable["Team2_Kills"] = COD.DataTable["MaxKills"] + BroadcastLua([[ + COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[ + COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[ + ]]) + elseif loseteam == 3 and COD.DelayGamemodeNumber < CurTime() then + COD.DataTable["Team1_Kills"] = 0 + COD.DataTable["Team2_Kills"] = 0 + BroadcastLua([[ + COD.DataTable["Team2_Kills"] = ]]..COD.DataTable["Team2_Kills"]..[[ + COD.DataTable["Team1_Kills"] = ]]..COD.DataTable["Team1_Kills"]..[[ + ]]) + end + end +end) \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/server/sv_takedown.lua b/gamemodes/cod_custom/gamemode/server/sv_takedown.lua new file mode 100644 index 0000000..2e8e7f7 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/server/sv_takedown.lua @@ -0,0 +1,237 @@ +function COD:ConnectWeapon(ply, model, lang, lpos, scale, attachment, usebonemerge, boneang) + local wep = ents.Create('base_anim') + local attach = ply:GetAttachment(ply:LookupAttachment(attachment)) + wep:SetPos(attach.Pos) + wep:SetModel(model) + wep:SetAngles(attach.Ang) + wep:SetParent(ply, ply:LookupAttachment(attachment)) + if usebonemerge then + wep:AddEffects(EF_BONEMERGE) + end + if boneang and ply:LookupBone(boneang) then + wep:SetAngles(select(2, ply:GetBonePosition(ply:LookupBone(boneang)))) + end + wep:Spawn() + wep:SetLocalAngles(lang) + wep:SetLocalPos(lpos) + wep:SetModelScale(scale, 0) + function wep:Think() + if !IsValid(ply) or not ply.Takedowning then + wep:Remove() + end + end + return wep +end + +function COD:TakeThisIntoPhys(ent, removetime) + local wep = ents.Create("prop_physics") + wep:SetModel(ent:GetModel()) + wep:SetAngles(ent:GetAngles()) + wep:SetPos(ent:GetPos()) + wep:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + wep:Spawn() + wep:GetPhysicsObject():Wake() + + timer.Simple(removetime, function() + if !IsValid(wep) then return end + wep:Remove() + end) + + ent:Remove() + return wep, wep:GetPhysicsObject() +end + +local knife_model = "models/tdmg/wep/combat_knife.mdl" +local pistol_model = "models/tdmg/wep/m18.mdl" +local ar_model = "models/viper/mw/weapons/w_galima.mdl" +local machete_model = "models/tdmg/wep/w_machete.mdl" +local pkm_model = "models/tdmg/wep/w_mw_pkm.mdl" +local shotgun_model = "models/tdmg/wep/w_rem870_p.mdl" +local sniper_model = "models/tdmg/wep/m82.mdl" +local sledgehammer_model = "models/tdmg/wep/w_sledgehammer.mdl" +local pickaxe_model = "models/tdmg/wep/wpn_h1_melee_pick_axe_wm.mdl" +local katana_model = "models/tdmg/wep/w_katana.mdl" +local new_pickaxe_model = "models/tdmg/wep/new/hatchet.mdl" +local new_katana_model = "models/tdmg/wep/new/katana.mdl" +local new_stick_model = "models/tdmg/wep/new/kalistick.mdl" +local modeltab = {knife_model, pistol_model, ar_model, machete_model, pkm_model, shotgun_model, sniper_model, sledgehammer_model, katana_model, new_stick_model, new_pickaxe_model, new_katana_model} +for _, v in pairs(modeltab) do + util.PrecacheModel(v) +end + +local pl = FindMetaTable("Player") +util.AddNetworkString("COD.TakedownCam") + +concommand.Add("cod_givetakedown", function(ply, cmd, args) + if args[1] then + local num = tostring(args[1]) + ply:SetNWString('TakedownAnim', num) + end +end) + +hook.Add("PlayerButtonDown", "TakeDownTDM", function(ply, but) + if ply:Alive() and but == KEY_E then + ply:Takedown() + end +end) + +hook.Add("CalcMainActivity", "!TDMAnims", function(ply, vel) + local str = ply:GetNWString('SVAnim') + local num = ply:GetNWFloat('SVAnimDelay') + local st = ply:GetNWFloat('SVAnimStartTime') + if str != "" then + ply:SetCycle((CurTime()-st)/num) + return -1, ply:LookupSequence(str) + end +end) + +hook.Add("Think", "TDMGmodTakedown", function() + for _, ply in ipairs(player.GetAll()) do + if ply.Takedowning and (not ply:Alive() or !ply.TakedownIsFinished and (!IsValid(ply.TakedowningTarget) or ply.TakedowningTarget:Health() <= 0)) then + ply.Takedowning = false + ply:SetSVAnimation("") + ply:Freeze(false) + net.Start("COD.TakedownCam") + net.WriteBool(false) + net.Send(ply) + if ply.TakedowningGun then + ply:SelectWeapon(ply.TakedowningGun) + end + elseif ply:IsBot() and ply.Takedowning and IsValid(ply.TakedowningTarget) then + ply:SetPos(ply.TakedowningTarget:GetPos()) + ply:SetEyeAngles(ply.TakedowningTarget:EyeAngles()) + end + end +end) + +function pl:SetSVAnimation(anim, autostop) + self:SetNWString('SVAnim', anim) + self:SetNWFloat('SVAnimDelay', select(2, self:LookupSequence(anim))) + self:SetNWFloat('SVAnimStartTime', CurTime()) + self:SetCycle(0) + if autostop then + local delay = select(2, self:LookupSequence(anim)) + timer.Simple(delay, function() + if !IsValid(self) then return end + + local anim2 = self:GetNWString('SVAnim') + + if anim == anim2 then + self:SetSVAnimation("") + end + end) + end +end + +function pl:IsAtBack(enemy) --This function was made by OpenAI ChatGPT + if !IsValid(enemy) then return end + local enemyForward = enemy:GetForward() + local enemyToPlayer = self:GetPos() - enemy:GetPos() + local angle = enemyForward:Angle():Forward():Dot(enemyToPlayer:GetNormalized()) + local degrees = math.deg(math.acos(angle)) + return degrees > 100 +end + +function pl:Takedown(forceentity) + local tr = self:GetEyeTrace() + local ent = tr.Entity + local dist = tr.StartPos:Distance(tr.HitPos) < 96 + if forceentity then + dist = true + ent = forceentity + end + + if !ent:IsPlayer() or ent:Team() == self:Team() or self:IsDowned() or ent.Takedowning or self.Takedowning or !ent:OnGround() or !self:OnGround() or !self:IsAtBack(ent) or not dist then + return + end + + + local float = self:GetNWString('TakedownAnim') + if float == "00" then + local _, rnd = table.Random(COD.Takedowns) + float = rnd + end + if not COD.Takedowns[float] or float == "00" then return end + + if not COD.Takedowns[float] then return end + if !isnumber(float) then + anim1, anim2 = "execution_"..float.."_attacker_stand", "execution_"..float.."_victim_stand" + if ent:IsDowned() then + anim1, anim2 = "execution_"..float.."_attacker_laststand", "execution_"..float.."_victim_laststand" + end + end + + local delay1 = select(2, self:LookupSequence(anim1)) + local delay2 = COD.Takedowns[float].deathtime + if ent:IsDowned() then + delay2 = COD.Takedowns[float].deathtime_laststand + end + + local ang1 = ent:EyeAngles() + self:Freeze(true) + self:SetEyeAngles(Angle(ang1.x,ang1.y,0)) + self:SetPos(ent:GetPos()) + self:SetSVAnimation(anim1) + local wep = self:GetActiveWeapon() + if IsValid(wep) then + self.TakedowningGun = wep:GetClass() + else + self.TakedowningGun = "" + end + local wep = ent:GetActiveWeapon() + if IsValid(wep) then + ent.TakedowningGun = wep:GetClass() + else + ent.TakedowningGun = "" + end + self.TakedowningTarget = ent + self.Takedowning = true + self.TakedownIsFinished = false + self:SetActiveWeapon(nil) + ent:SetActiveWeapon(nil) + ent.TakedowningTarget = self + ent.Takedowning = true + ent.TakedownIsFinished = false + ent:SetSVAnimation(anim2) + ent:Freeze(true) + ent:SetEyeAngles(Angle(ang1.x,ang1.y,0)) + + net.Start("COD.TakedownCam") + net.WriteBool(true) + net.WriteFloat(delay1) + net.WriteBool(true) + net.Send(self) + + net.Start("COD.TakedownCam") + net.WriteBool(true) + net.WriteFloat(delay2) + net.WriteBool(false) + net.Send(ent) + + if ent:IsDowned() then + COD.Takedowns[float].effect_laststand(self, ent) + else + COD.Takedowns[float].effect(self, ent) + end + + timer.Simple(delay2, function() + if IsValid(ent) and IsValid(self) and self.Takedowning then + self.TakedownIsFinished = true + ent:Freeze(false) + ent:TakeDamage(ent:Health()+ent:Armor(), self) + ent.Takedowning = false + ent.TakedowningTarget = nil + ent:SetSVAnimation("") + end + end) + + timer.Simple(delay1, function() + if IsValid(self) and self.Takedowning then + self:Freeze(false) + self:SetEyeAngles(Angle(ang1.x,ang1.y,0)) + self.Takedowning = false + self:SetSVAnimation("") + self:SelectWeapon(self.TakedowningGun) + end + end) +end \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/shared.lua b/gamemodes/cod_custom/gamemode/shared.lua new file mode 100644 index 0000000..59a4e35 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/shared.lua @@ -0,0 +1,609 @@ +GM.Author = 'HarionPlayZ' +GM.Name = "Call Of Duty TDM" + +--[[ + Say thanks to this guys: + HarionPlayZ - Main Developer, ported CoD Animations to GMod. + TameCoot - Retargeted CoD Season 1 Animations + Kirloper - Gave MWII Animations + Shark_Vil - SLib Library + RefoselDev - Gave Hosting for server and many more + HPZ Development Team - Viewmodels, animations, languages and more. + + ---------------------------------------------------------------- + help with Languages: + + +]]-- + +COD = COD or {} + +AddCSLuaFile('languages.lua') +include('languages.lua') +AddCSLuaFile('takedowns.lua') +include('takedowns.lua') + +COD.ApplyCommands = { + ["Server"] = { + ["sv_crazyphysics_warning"] = 0, + }, + ["Client"] = {}, +} + +COD.DataTable = { + ["MaxKills"] = 75, + ["MaxTime"] = 600, +} + +local str = file.Read("cod_tdm/"..game.GetMap()..".lua", "LUA") +if str then + RunString(str) +end + +COD.DataTable["Delay_Before_Start"] = 18 +COD.DataTable["Enable_KillCam"] = true +COD.DataTable["Enable_KillCam_WithBots"] = true + +COD.DataTable["Enable_RandomGamemode"] = true + +COD.DataTable["Team1_Kills"] = 0 +COD.DataTable["Team2_Kills"] = 0 + +COD.DataTable["MaxKills"] = 100 +COD.DataTable["MaxTime"] = 600 +COD.DataTable["MaxAIInTeam"] = 10 + +if not COD.DataTable["Gamemode"] then + COD.DataTable["Gamemode"] = 1 +end + +COD.GamemodeSettings = { + [1] = { + ["MaxKills"] = 100, + ["MaxTime"] = 600, + }, + [2] = { + ["MaxKills"] = 500, + ["MaxTime"] = 900, + ["Time_Before_HeavyUnits"] = 300, + ["Time_Before_SupportPackages"] = 480, + }, + [3] = { + ["MaxKills"] = 100, + ["MaxTime"] = 120, + }, + [4] = { + ["MaxKills"] = 100, + ["MaxTime"] = 120, + }, + [5] = { + ["MaxKills"] = 200, + ["MaxTime"] = 600, + }, +} + +team.SetUp(1, "SpecGru", Color(85,165,95)) +team.SetUp(2, "KorTac", Color(195,165,85)) + +COD.Killstreaks = { + [1] = { + name = COD.Language["killstreak_1"], + desc = COD.Language["killstreak_desc_1"], + icon = Material('tdmg/hud/killstreaks/puav.png'), + kills = 4, + sound = "tdmg/killstreaks/uav_ready.wav", + func = function(ply) + COD:UAVCall(ply:Team(), false) + COD:GiveKSAnn(1, ply) + end, + }, + [2] = { + name = COD.Language["killstreak_2"], + desc = COD.Language["killstreak_desc_2"], + icon = Material('tdmg/hud/killstreaks/drone.png'), + kills = 4, + sound = "tdmg/killstreaks/care_ready.wav", + func = function(ply) + COD:DroneSpawn(ply) + end, + }, + [3] = { + name = COD.Language["killstreak_3"], + desc = COD.Language["killstreak_desc_3"], + icon = Material('tdmg/hud/killstreaks/armor.png'), + kills = 4, + sound = "tdmg/killstreaks/care_ready.wav", + func = function(ply) + ply:SetMaxArmor(250) + ply:SetArmor(250) + COD:GiveKSAnn(3, ply) + end, + }, + [4] = { + name = COD.Language["killstreak_4"], + desc = COD.Language["killstreak_desc_4"], + icon = Material('tdmg/hud/killstreaks/carepackage.png'), + kills = 5, + sound = "tdmg/killstreaks/care_ready.wav", + func = function(ply) + ply:GiveRadioWep("package") + end, + }, + [5] = { + name = COD.Language["killstreak_5"], + desc = COD.Language["killstreak_desc_5"], + icon = Material('tdmg/hud/killstreaks/counteruav.png'), + kills = 5, + sound = "tdmg/killstreaks/counter_uav_ready.wav", + func = function(ply) + COD:CounterUAVCall(ply) + end, + }, + [6] = { + name = COD.Language["killstreak_6"], + desc = COD.Language["killstreak_desc_6"], + icon = Material('tdmg/hud/killstreaks/mine.png'), + kills = 5, + sound = "tdmg/killstreaks/care_ready.wav", + func = function(ply) + COD:SpawnCMine(ply) + end, + }, + [7] = { + name = COD.Language["killstreak_7"], + desc = COD.Language["killstreak_desc_7"], + icon = Material('tdmg/hud/killstreaks/airstrike.png'), + kills = 6, + sound = "tdmg/killstreaks/airstrike_ready.wav", + func = function(ply) + ply:GiveRadioWep("airstrike") + end, + }, + [8] = { + name = COD.Language["killstreak_8"], + desc = COD.Language["killstreak_desc_8"], + icon = Material('tdmg/hud/killstreaks/k9.png'), + kills = 6, + sound = "tdmg/dog/bark (7).wav", + func = function(ply) + COD:CallK9(ply) + COD:GiveKSAnn(8, ply) + end, + }, + [9] = { + name = COD.Language["killstreak_9"], + desc = COD.Language["killstreak_desc_9"], + icon = Material('tdmg/hud/killstreaks/sentry.png'), + kills = 7, + sound = "tdmg/killstreaks/turret_ready.wav", + func = function(ply) + COD:SpawnSentry(ply) + end, + }, + [10] = { + name = COD.Language["killstreak_10"], + desc = COD.Language["killstreak_desc_10"], + icon = Material('tdmg/hud/killstreaks/patrol.png'), + kills = 7, + sound = "tdmg/killstreaks/airstrike_ready.wav", + func = function(ply) + COD:AirPatrol(ply) + COD:GiveKSAnn(10, ply) + end, + }, + [11] = { + name = COD.Language["killstreak_11"], + desc = COD.Language["killstreak_desc_11"], + icon = Material('tdmg/hud/killstreaks/mortar.png'), + kills = 7, + sound = "tdmg/killstreaks/airstrike_ready2.wav", + func = function(ply) + ply:GiveRadioWep("mortar") + end, + }, + [12] = { + name = COD.Language["killstreak_12"], + desc = COD.Language["killstreak_desc_12"], + icon = Material('tdmg/hud/killstreaks/strat.png'), + kills = 8, + sound = "tdmg/killstreaks/airstrike_ready.wav", + func = function(ply) + ply:GiveRadioWep("strating_run") + end, + }, + [13] = { + name = COD.Language["killstreak_13"], + desc = COD.Language["killstreak_desc_13"], + icon = Material('tdmg/hud/killstreaks/helicopter.png'), + kills = 9, + sound = "tdmg/killstreaks/heli_ready.wav", + func = function(ply) + ply:GiveRadioWep("helicopter") + end, + }, + [14] = { + name = COD.Language["killstreak_14"], + desc = COD.Language["killstreak_desc_14"], + icon = Material('tdmg/hud/killstreaks/harrier.png'), + kills = 9, + sound = "tdmg/killstreaks/harrier_ready.wav", + func = function(ply) + ply:GiveRadioWep("harrier") + end, + }, + [15] = { + name = COD.Language["killstreak_15"], + desc = COD.Language["killstreak_desc_15"], + icon = Material('tdmg/hud/killstreaks/backup.png'), + kills = 9, + sound = "tdmg/killstreaks/cover_ready.wav", + func = function(ply) + COD:CallReinforcment(ply) + COD:GiveKSAnn(15, ply) + end, + }, + [16] = { + name = COD.Language["killstreak_16"], + desc = COD.Language["killstreak_desc_16"], + icon = Material('tdmg/hud/killstreaks/stealth.png'), + kills = 10, + sound = "tdmg/killstreaks/airstrike_ready2.wav", + func = function(ply) + ply:GiveRadioWep("airstrike_line") + end, + }, + [17] = { + name = COD.Language["killstreak_17"], + desc = COD.Language["killstreak_desc_17"], + icon = Material('tdmg/hud/killstreaks/heli.png'), + kills = 10, + sound = "tdmg/killstreaks/heli_ready.wav", + func = function(ply) + if not COD.DataTable["Enable_ManualControl_ChopperGunner"] then + ply:GiveRadioWep("helicopterrun") + else + COD:HelicopterRun(ply, Vector()) + end + end, + }, + [18] = { + name = COD.Language["killstreak_18"], + desc = COD.Language["killstreak_desc_18"], + icon = Material('tdmg/hud/killstreaks/muav.png'), + kills = 12, + sound = "tdmg/killstreaks/uav_ready.wav", + func = function(ply) + COD:UAVCall(ply:Team(), true) + COD:GiveKSAnn(18, ply) + end, + }, + [19] = { + name = COD.Language["killstreak_19"], + desc = COD.Language["killstreak_desc_19"], + icon = Material('tdmg/hud/killstreaks/airdrop.png'), + kills = 12, + sound = "tdmg/killstreaks/care_ready.wav", + func = function(ply) + ply:GiveRadioWep("emergencypackage") + end, + }, + [20] = { + name = COD.Language["killstreak_20"], + desc = COD.Language["killstreak_desc_20"], + icon = Material('tdmg/hud/killstreaks/ac130.png'), + kills = 15, + sound = "tdmg/killstreaks/ac130_ready.wav", + func = function(ply) + COD:CallAC130(ply) + COD:GiveKSAnn(20, ply) + end, + }, + [21] = { + name = COD.Language["killstreak_21"], + desc = COD.Language["killstreak_desc_21"], + icon = Material('tdmg/hud/killstreaks/jugger.png'), + kills = 15, + sound = "tdmg/killstreaks/care_ready.wav", + func = function(ply) + COD:GiveJuggernaut(ply) + COD:GiveKSAnn(21, ply) + end, + }, + [22] = { + name = COD.Language["killstreak_22"], + desc = COD.Language["killstreak_desc_22"], + icon = Material('tdmg/hud/killstreaks/nuke.png'), + kills = 25, + sound = "tdmg/killstreaks/nuke_ready.wav", + func = function(ply) + COD:Nuke(ply:Team()) + COD:GiveKSAnn(22, ply) + end, + }, +} + +COD.Perks = { + ["Type1"] = { + [1] = { + name = COD.Language["perk_1_1"], + desc = COD.Language["perk_1_1_desc"], + icon = Material("tdmg/hud/perks/explodedef.png"), + }, + [2] = { + name = COD.Language["perk_1_2"], + desc = COD.Language["perk_1_2_desc"], + icon = Material("tdmg/hud/perks/spectator.png"), + }, + [3] = { + name = COD.Language["perk_1_3"], + desc = COD.Language["perk_1_3_desc"], + icon = Material("tdmg/hud/perks/star.png"), + }, + [4] = { + name = COD.Language["perk_1_4"], + desc = COD.Language["perk_1_4_desc"], + icon = Material("tdmg/hud/perks/fastequip.png"), + }, + }, + ["Type2"] = { + [1] = { + name = COD.Language["perk_2_1"], + desc = COD.Language["perk_2_1_desc"], + icon = Material("tdmg/hud/perks/fasthealth.png"), + }, + [2] = { + name = COD.Language["perk_2_2"], + desc = COD.Language["perk_2_2_desc"], + icon = Material("tdmg/hud/perks/survival.png"), + }, + [3] = { + name = COD.Language["perk_2_3"], + desc = COD.Language["perk_2_3_desc"], + icon = Material("tdmg/hud/perks/ghost.png"), + }, + [4] = { + name = COD.Language["perk_2_4"], + desc = COD.Language["perk_2_4_desc"], + icon = Material("tdmg/hud/perks/invisiblity.png"), + }, + }, +} + +COD.Loadout = { + ["Pistols"] = { + [".357"] = { + class = "mg_357", + icon = Material("vgui/entities/mg_357"), + }, + [".50 GS"] = { + class = "mg_deagle", + icon = Material("vgui/entities/mg_deagle"), + }, + ["M19"] = { + class = "mg_p320", + icon = Material("vgui/entities/mg_p320"), + }, + ["M1911"] = { + class = "mg_m1911", + icon = Material("vgui/entities/mg_m1911"), + }, + ["Renetti"] = { + class = "mg_m9", + icon = Material("vgui/entities/mg_m9"), + }, + ["Sykov"] = { + class = "mg_makarov", + icon = Material("vgui/entities/mg_makarov"), + }, + ["X16"] = { + class = "mg_glock", + icon = Material("vgui/entities/mg_glock"), + }, + }, + ["SMGs"] = { + ["AUG"] = { + class = "mg_augolf", + icon = Material("vgui/entities/mg_augolf"), + }, + ["CX-9"] = { + class = "mg_secho", + icon = Material("vgui/entities/mg_secho"), + }, + ["Fennec"] = { + class = "mg_victor", + icon = Material("vgui/entities/mg_victor"), + }, + ["ISO"] = { + class = "mg_charlie9", + icon = Material("vgui/entities/mg_charlie9"), + }, + ["MP5"] = { + class = "mg_mpapa5", + icon = Material("vgui/entities/mg_mpapa5"), + }, + ["MP7"] = { + class = "mg_mpapa7", + icon = Material("vgui/entities/mg_mpapa7"), + }, + ["P90"] = { + class = "mg_papa90", + icon = Material("vgui/entities/mg_papa90"), + }, + ["PP19 Bizon"] = { + class = "mg_beta", + icon = Material("vgui/entities/mg_beta"), + }, + ["Striker 45"] = { + class = "mg_smgolf45", + icon = Material("vgui/entities/mg_smgolf45"), + }, + ["UZI"] = { + class = "mg_uzulu", + icon = Material("vgui/entities/mg_uzulu"), + }, + }, + ["Assault Rifles"] = { + ["AK-47"] = { + class = "mg_akilo47", + icon = Material("vgui/entities/mg_akilo47"), + }, + ["AN-94"] = { + class = "mg_anovember94", + icon = Material("vgui/entities/mg_anovember94"), + }, + ["AS-VAL"] = { + class = "mg_valpha", + icon = Material("vgui/entities/mg_valpha"), + }, + ["CR-56 AMAX"] = { + class = "mg_galima", + icon = Material("vgui/entities/mg_galima"), + }, + ["FAL"] = { + class = "mg_falima", + icon = Material("vgui/entities/mg_falima"), + }, + ["FN SCAR 17"] = { + class = "mg_scharlie", + icon = Material("vgui/entities/mg_scharlie"), + }, + ["FR 5.56"] = { + class = "mg_falpha", + icon = Material("vgui/entities/mg_falpha"), + }, + ["Grau 5.56"] = { + class = "mg_sierra552", + icon = Material("vgui/entities/mg_sierra552"), + }, + ["Kilo 141"] = { + class = "mg_kilo433", + icon = Material("vgui/entities/mg_kilo433"), + }, + ["M13"] = { + class = "mg_mcharlie", + icon = Material("vgui/entities/mg_mcharlie"), + }, + ["M4A1"] = { + class = "mg_mike4", + icon = Material("vgui/entities/mg_mike4"), + }, + ["Oden"] = { + class = "mg_asierra12", + icon = Material("vgui/entities/mg_asierra12"), + }, + ["RAM-7"] = { + class = "mg_tango21", + icon = Material("vgui/entities/mg_tango21"), + }, + }, + ["LMGs"] = { + ["Bruen MK9"] = { + class = "mg_mkilo3", + icon = Material("vgui/entities/mg_mkilo3"), + }, + ["FiNN LMG"] = { + class = "mg_sierrax", + icon = Material("vgui/entities/mg_sierrax"), + }, + ["Holger-26"] = { + class = "mg_mgolf36", + icon = Material("vgui/entities/mg_mgolf36"), + }, + ["M91"] = { + class = "mg_kilo121", + icon = Material("vgui/entities/mg_kilo121"), + }, + ["MG34"] = { + class = "mg_mgolf34", + icon = Material("vgui/entities/mg_mgolf34"), + }, + ["PKM"] = { + class = "mg_pkilo", + icon = Material("vgui/entities/mg_pkilo"), + }, + ["RAAL MG"] = { + class = "mg_slima", + icon = Material("vgui/entities/mg_slima"), + }, + ["SA87"] = { + class = "mg_lima86", + icon = Material("vgui/entities/mg_lima86"), + }, + }, + ["Sniper Rifles"] = { + ["AX-50"] = { + class = "mg_alpha50", + icon = Material("vgui/entities/mg_alpha50"), + }, + ["Dragunov"] = { + class = "mg_delta", + icon = Material("vgui/entities/mg_delta"), + }, + ["HDR"] = { + class = "mg_hdromeo", + icon = Material("vgui/entities/mg_hdromeo"), + }, + ["Rytec AMR"] = { + class = "mg_xmike109", + icon = Material("vgui/entities/mg_xmike109"), + }, + }, + ["Marksman Rifles"] = { + ["Crossbow"] = { + class = "mg_crossbow", + icon = Material("vgui/entities/mg_crossbow"), + }, + ["EBR-14"] = { + class = "mg_mike14", + icon = Material("vgui/entities/mg_mike14"), + }, + ["Kar98k"] = { + class = "mg_kilo98", + icon = Material("vgui/entities/mg_kilo98"), + }, + ["MK2 Carabine"] = { + class = "mg_sbeta", + icon = Material("vgui/entities/mg_sbeta"), + }, + ["SKS"] = { + class = "mg_sksierra", + icon = Material("vgui/entities/mg_sksierra"), + }, + ["SPR"] = { + class = "mg_romeo700", + icon = Material("vgui/entities/mg_romeo700"), + }, + }, + ["Shotguns"] = { + ["725"] = { + class = "mg_charlie725", + icon = Material("vgui/entities/mg_charlie725"), + }, + ["Jak-12"] = { + class = "mg_aalpha12", + icon = Material("vgui/entities/mg_aalpha12"), + }, + ["Model 680"] = { + class = "mg_romeo870", + icon = Material("vgui/entities/mg_romeo870"), + }, + ["Origin-12"] = { + class = "mg_oscar12", + icon = Material("vgui/entities/mg_oscar12"), + }, + ["R9-0"] = { + class = "mg_dpapa12", + icon = Material("vgui/entities/mg_dpapa12"), + }, + ["VLK Rogue"] = { + class = "mg_mike26", + icon = Material("vgui/entities/mg_mike26"), + }, + }, + ["Others"] = { + ["Combat Knife"] = { + class = "tdm_infection_knife", + icon = Material("vgui/spawnicons/icon_cac_weapon_me_soscar_knife"), + }, + }, +} \ No newline at end of file diff --git a/gamemodes/cod_custom/gamemode/takedowns.lua b/gamemodes/cod_custom/gamemode/takedowns.lua new file mode 100644 index 0000000..3c554a1 --- /dev/null +++ b/gamemodes/cod_custom/gamemode/takedowns.lua @@ -0,0 +1,3619 @@ +local knife_model = "models/tdmg/wep/combat_knife.mdl" +local pistol_model = "models/tdmg/wep/m18.mdl" +local ar_model = "models/viper/mw/weapons/w_galima.mdl" +local machete_model = "models/tdmg/wep/w_machete.mdl" +local pkm_model = "models/tdmg/wep/w_mw_pkm.mdl" +local shotgun_model = "models/tdmg/wep/w_rem870_p.mdl" +local sniper_model = "models/tdmg/wep/m82.mdl" +local sledgehammer_model = "models/tdmg/wep/w_sledgehammer.mdl" +local pickaxe_model = "models/tdmg/wep/wpn_h1_melee_pick_axe_wm.mdl" +local katana_model = "models/tdmg/wep/w_katana.mdl" +local new_pickaxe_model = "models/tdmg/wep/new/hatchet.mdl" +local new_katana_model = "models/tdmg/wep/new/katana.mdl" +local new_stick_model = "models/tdmg/wep/new/kalistick.mdl" + +local function lasers(ply, bool) + if bool then + lasers(ply, false) + ply.Lasers = {} + + local id = ply:LookupAttachment("eyes") + local tab = ply:GetAttachment(id) + if not tab then return end + + local ent = ents.Create("prop_dynamic") + ent:SetModel("models/hunter/plates/plate4.mdl") + ent:SetMaterial("models/debug/debugwhite") + ent:SetColor(Color(255,0,0,200)) + ent:SetRenderMode(RENDERMODE_WORLDGLOW) + ent:DrawShadow(false) + ent:SetPos(tab.Pos) + ent:SetAngles(tab.Ang) + ent:SetParent(ply, id) + ent:Spawn() + ent:SetLocalPos(Vector(36,-1.2,5)) + ent:SetLocalAngles(Angle(0,90,-10)) + ent:SetModelScale(0.4) + table.insert(ply.Lasers, ent) + + local ent = ents.Create("prop_dynamic") + ent:SetModel("models/hunter/plates/plate4.mdl") + ent:SetMaterial("models/debug/debugwhite") + ent:SetColor(Color(255,0,0,200)) + ent:SetRenderMode(RENDERMODE_WORLDGLOW) + ent:DrawShadow(false) + ent:SetPos(tab.Pos) + ent:SetAngles(tab.Ang) + ent:SetParent(ply, id) + ent:Spawn() + ent:SetLocalPos(Vector(36,1.2,5)) + ent:SetLocalAngles(Angle(0,90,-10)) + ent:SetModelScale(0.4) + table.insert(ply.Lasers, ent) + else + if istable(ply.Lasers) then + for _, ent in ipairs(ply.Lasers) do + ent:Remove() + end + ply.Lasers = nil + end + end +end + +local function lights(ply, bool, onlyright, isred) + if bool then + lights(ply, false) + ply.Lasers = {} + + local id = ply:LookupAttachment("anim_attachment_LH") + local tab = ply:GetAttachment(id) + local id2 = ply:LookupAttachment("anim_attachment_RH") + local tab2 = ply:GetAttachment(id) + + if not tab or not tab2 then return end + + if not onlyright then + if isred then + local ent = ents.Create("prop_dynamic") + ent:SetModel("models/effects/vol_light128x512.mdl") + ent:SetColor(Color(255,0,0,200)) + ent:SetRenderMode(RENDERMODE_TRANSALPHA) + ent:DrawShadow(false) + ent:SetPos(tab.Pos) + ent:SetAngles(tab.Ang) + ent:SetParent(ply, id) + ent:Spawn() + ent:SetLocalPos(Vector(0,0,0)) + ent:SetLocalAngles(Angle(0,40,270)) + ent:SetModelScale(0.05) + table.insert(ply.Lasers, ent) + else + local ent = ents.Create("prop_dynamic") + ent:SetModel("models/effects/vol_light128x512.mdl") + ent:SetColor(Color(255,255,0,200)) + ent:SetRenderMode(RENDERMODE_TRANSALPHA) + ent:DrawShadow(false) + ent:SetPos(tab.Pos) + ent:SetAngles(tab.Ang) + ent:SetParent(ply, id) + ent:Spawn() + ent:SetLocalPos(Vector(0,0,0)) + ent:SetLocalAngles(Angle(0,40,270)) + ent:SetModelScale(0.1) + table.insert(ply.Lasers, ent) + end + end + + if isred then + local ent = ents.Create("prop_dynamic") + ent:SetModel("models/effects/vol_light128x512.mdl") + ent:SetColor(Color(255,0,0,200)) + ent:SetRenderMode(RENDERMODE_TRANSALPHA) + ent:DrawShadow(false) + ent:SetPos(tab2.Pos) + ent:SetAngles(tab2.Ang) + ent:SetParent(ply, id2) + ent:Spawn() + ent:SetLocalPos(Vector(0,0,0)) + ent:SetLocalAngles(Angle(0,-40,90)) + ent:SetModelScale(0.05) + table.insert(ply.Lasers, ent) + else + local ent = ents.Create("prop_dynamic") + ent:SetModel("models/effects/vol_light128x512.mdl") + ent:SetColor(Color(255,255,0,200)) + ent:SetRenderMode(RENDERMODE_TRANSALPHA) + ent:DrawShadow(false) + ent:SetPos(tab2.Pos) + ent:SetAngles(tab2.Ang) + ent:SetParent(ply, id2) + ent:Spawn() + ent:SetLocalPos(Vector(0,0,0)) + ent:SetLocalAngles(Angle(0,-40,90)) + ent:SetModelScale(0.1) + table.insert(ply.Lasers, ent) + end + else + if istable(ply.Lasers) then + for _, ent in ipairs(ply.Lasers) do + ent:Remove() + end + ply.Lasers = nil + end + end +end + +COD.Takedowns = { + ["00"] = { + name = "Random", + }, + ["01"] = { + name = "Making Holes", + deathtime = 3, + deathtime_laststand = 2.6, + effect = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(0,90,0), Vector(0,-3,0), 1.5, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + bm:EmitSound(")tdmg/takedown/execution_001_stand.ogg", tar:GetBloodColor()) + end) + timer.Simple(0.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + timer.Simple(1.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(0,90,0), Vector(0,-3,0), 1.5, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + bm:EmitSound(")tdmg/takedown/execution_001_laststand.ogg") + end) + timer.Simple(1.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + end, + }, + ["02"] = { + name = "Punctual Puncture", + deathtime = 3, + deathtime_laststand = 2.6, + effect = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(90,90,0), Vector(0,-1,3), 1.5, "anim_attachment_RH") + timer.Simple(0.3, function() + if !IsValid(att) or !att.Takedowning then return end + bm:EmitSound(")tdmg/takedown/execution_002_stand.ogg") + end) + timer.Simple(1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_L_Thigh", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(0,90,0), Vector(0,-3,0), 1.5, "anim_attachment_RH") + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_002_laststand.ogg") + end) + timer.Simple(1.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["03"] = { + name = "Sidearm Hustle", + deathtime = 3, + deathtime_laststand = 2.6, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pistol_model, Angle(-50,0,40), Vector(-1,-0,-4), 1.1, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_003_stand.ogg") + end) + timer.Simple(2.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pistol_model, Angle(-50,0,40), Vector(-1,-0,-4), 1.1, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_003_laststand.ogg") + end) + timer.Simple(2.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + }, + ["04"] = { + name = "Kneecaps And Brainpans", + deathtime = 2.7, + deathtime_laststand = 3.4, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pistol_model, Angle(-50,0,40), Vector(-1,-0,-4), 1.1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_004_stand.ogg") + end) + timer.Simple(0.3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_L_Calf", tar:GetBloodColor()) + end) + timer.Simple(0.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Calf", tar:GetBloodColor()) + end) + timer.Simple(2.3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pistol_model, Angle(-50,0,40), Vector(-1,-0,-4), 1.1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_004_laststand.ogg") + end) + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Calf", tar:GetBloodColor()) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + }, + ["05"] = { + name = "Smooth Cuts", + deathtime = 2.7, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, katana_model, Angle(0,0,40), Vector(0,-4,3), 0.8, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_005_stand.ogg") + end) + timer.Simple(1.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + timer.Simple(1.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, katana_model, Angle(-60,0,40), Vector(0,-3,-1), 0.8, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_005_laststand.ogg") + end) + timer.Simple(1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(0.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(1.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Clavicle", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Clavicle", tar:GetBloodColor()) + end) + timer.Simple(3.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + end) + end, + }, + ["06"] = { + name = "Slice And Easy", + deathtime = 2.6, + deathtime_laststand = 2.4, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, machete_model, Angle(-40,0,50), Vector(-0,-1,1), 1.2, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_006_stand.ogg") + end) + timer.Simple(0.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Thigh", tar:GetBloodColor()) + end) + timer.Simple(1.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, machete_model, Angle(-40,0,50), Vector(-0,-1,1), 1.2, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_006_laststand.ogg") + end) + timer.Simple(0.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(1.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + }, + ["07"] = { + name = "Main Man", + deathtime = 2.8, + deathtime_laststand = 2.8, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, ar_model, Angle(-40,0,50), Vector(-2,-1,-4), 1, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(bm, ar_model, Angle(-40,0,50), Vector(-2,-1,-4), 1, "anim_attachment_RH") + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_007_stand.ogg") + end) + timer.Simple(0.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + local wep3, wep3_p = COD:TakeThisIntoPhys(wep2, 10) + wep3_p:SetVelocity(tar:GetForward()*64-tar:GetRight()*64) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, ar_model, Angle(-40,0,50), Vector(-2,-1,-4), 1, "anim_attachment_RH") + timer.Simple(0.15, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_007_laststand.ogg") + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + }, + ["08"] = { + name = "Lights Out", + deathtime = 2.8, + deathtime_laststand = 2.8, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, ar_model, Angle(-40,0,50), Vector(-2,-1,-4), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_008_stand.ogg") + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, ar_model, Angle(-40,0,50), Vector(-2,-1,-4), 1, "anim_attachment_RH") + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_008_laststand.ogg") + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + }, + ["09"] = { + name = "Blowout", + deathtime = 3.2, + deathtime_laststand = 2.6, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, shotgun_model, Angle(-220,-25,-240), Vector(9.5,-5,7.8), 1, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + att:EmitSound(")tdmg/takedown/execution_009_stand.ogg") + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Calf", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, shotgun_model, Angle(-220,-25,-240), Vector(9.5,-5,7.8), 1, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_009_laststand.ogg") + end) + timer.Simple(2.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["10"] = { + name = "Racked And Wrecked", + deathtime = 2.7, + deathtime_laststand = 2.7, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, shotgun_model, Angle(-220,-25,-240), Vector(9.5,-5,7.8), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + att:EmitSound(")tdmg/takedown/execution_010_stand.ogg") + end) + timer.Simple(1.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + wep = COD:ConnectWeapon(att, shotgun_model, Angle(-270,-25,45), Vector(0,2,-3), 1, "anim_attachment_LH") + end) + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + wep = COD:ConnectWeapon(att, shotgun_model, Angle(-220,-25,-240), Vector(9.5,-5,7.8), 1, "anim_attachment_RH") + end) + timer.Simple(2.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.7, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, shotgun_model, Angle(-220,-25,-240), Vector(9.5,-5,7.8), 1, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_010_laststand.ogg") + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Calf", tar:GetBloodColor()) + end) + timer.Simple(2.7, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["11"] = { + name = "LMG KIA", + deathtime = 2.8, + deathtime_laststand = 2.8, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pkm_model, Angle(-160,-90,-25), Vector(10,-3,1), 1.1, "anim_attachment_RH") + timer.Simple(0.6, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_011_stand.ogg") + end) + timer.Simple(2.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + timer.Simple(2.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pkm_model, Angle(-160,-90,-25), Vector(10,-3,1), 1.1, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_011_laststand.ogg") + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + timer.Simple(2.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + }, + ["12"] = { + name = "Up Close And High Caliber", + deathtime = 2.8, + deathtime_laststand = 2.8, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pkm_model, Angle(-160,-90,-25), Vector(10,-3,1), 1.1, "anim_attachment_RH") + timer.Simple(0.8, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_012_stand.ogg") + end) + timer.Simple(2.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pkm_model, Angle(-160,-90,-25), Vector(10,-3,1), 1.1, "anim_attachment_RH") + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_012_laststand.ogg") + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + end, + }, + ["13"] = { + name = "Sighted In", + deathtime = 1.8, + deathtime_laststand = 2, + effect = function(att, tar, bm) + if true then + tar:SetNWBool('HeadBlowMWII', true) + end + local wep = COD:ConnectWeapon(att, sniper_model, Angle(45,-40,70), Vector(7,-5,9), 1, "anim_attachment_RH", false, "ValveBiped.Bip01_R_Hand") + local wep2 = COD:ConnectWeapon(bm, ar_model, Angle(-40,0,50), Vector(-2,-1,-4), 1, "anim_attachment_RH") + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_013_stand.ogg") + end) + timer.Simple(1.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + if true then + tar:HeadBlow() + end + local wep3, wep3_p = COD:TakeThisIntoPhys(wep2, 10) + wep3_p:SetVelocity(tar:GetForward()*64) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sniper_model, Angle(45,-40,70), Vector(7,-5,9), 1, "anim_attachment_RH", false, "ValveBiped.Bip01_R_Hand") + if true then + tar:SetNWBool('HeadBlowMWII', true) + end + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_013_laststand.ogg") + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + if true then + tar:HeadBlow() + end + end) + end, + }, + ["14"] = { + name = "Point And Shoot", + + deathtime = 1.7, + deathtime_laststand = 2, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sniper_model, Angle(45,-40,70), Vector(7,-5,9), 1, "anim_attachment_RH", false, "ValveBiped.Bip01_R_Hand") + local wep2 = COD:ConnectWeapon(bm, ar_model, Angle(-40,0,50), Vector(-2,-1,-4), 1, "anim_attachment_RH") + if true then + tar:SetNWBool('HeadBlowMWII', true) + end + timer.Simple(0.8, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_014_stand.ogg") + end) + timer.Simple(1.7, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + if true then + tar:HeadBlow() + end + local wep3, wep3_p = COD:TakeThisIntoPhys(wep2, 10) + wep3_p:SetVelocity(tar:GetForward()*64) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sniper_model, Angle(45,-40,70), Vector(7,-5,9), 1, "anim_attachment_RH", false, "ValveBiped.Bip01_R_Hand") + if true then + tar:SetNWBool('HeadBlowMWII', true) + end + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_014_laststand.ogg") + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + if true then + tar:HeadBlow() + end + end) + end, + }, + ["15"] = { + name = "Hammer Meet Skull", + + deathtime = 2.8, + deathtime_laststand = 2.8, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sledgehammer_model, Angle(45,-50,50), Vector(0,0,0), 1, "anim_attachment_RH") + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_015_stand.ogg") + end) + timer.Simple(0.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Calf", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sledgehammer_model, Angle(45,-50,50), Vector(0,0,0), 1, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_015_laststand.ogg") + end) + timer.Simple(1.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + }, + ["16"] = { + name = "Breach And Fear", + + deathtime = 2.2, + deathtime_laststand = 2.2, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sledgehammer_model, Angle(45,-50,50), Vector(-3,-8,4), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_016_stand.ogg") + end) + timer.Simple(0.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Calf", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sledgehammer_model, Angle(45,-50,50), Vector(-3,-8,4), 1, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_016_laststand.ogg") + end) + timer.Simple(0.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + }, + ["17"] = { + name = "Resident Drummer", + + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, "models/tdmg/wep/wpn_h1_melee_mace_wm.mdl", Angle(-10,0,0), Vector(1.5,0,0), 1.1, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, "models/tdmg/wep/wpn_h1_melee_mace_wm.mdl", Angle(10,0,0), Vector(0,1.5,0), 1.1, "anim_attachment_LH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_017_stand.ogg") + end) + timer.Simple(0.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(1.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_L_Calf", tar:GetBloodColor()) + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, "models/tdmg/wep/wpn_h1_melee_mace_wm.mdl", Angle(-10,0,0), Vector(1.5,0,0), 1.1, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, "models/tdmg/wep/wpn_h1_melee_mace_wm.mdl", Angle(10,0,0), Vector(0,1.5,0), 1.1, "anim_attachment_LH") + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_017_laststand.ogg") + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + }, + ["18"] = { + name = "Bloody Percussionist", + + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, katana_model, Angle(-10,0,0), Vector(0,-1,4), 0.6, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, katana_model, Angle(10,0,0), Vector(1,0,4), 0.6, "anim_attachment_LH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_018_stand.ogg") + end) + timer.Simple(1.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(3.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, katana_model, Angle(-10,0,0), Vector(0,-1,4), 0.6, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, katana_model, Angle(10,0,0), Vector(1,0,4), 0.6, "anim_attachment_LH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_018_laststand.ogg") + end) + timer.Simple(0.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(1.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + }, + ["19"] = { + name = "Lumber Smack", + deathtime = 3.2, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pickaxe_model, Angle(10,0,0), Vector(0,0,0), 1, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_019_stand.ogg") + end) + timer.Simple(0.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pickaxe_model, Angle(-50,0,50), Vector(0,0,0), 1, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_019_laststand.ogg") + end) + timer.Simple(1.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + end, + }, + ["20"] = { + name = "Chopping Block", + + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pickaxe_model, Angle(0,0,0), Vector(0,0,0), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_020_stand.ogg") + end) + timer.Simple(0.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pickaxe_model, Angle(10,0,-30), Vector(0,0,0), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_020_laststand.ogg") + end) + timer.Simple(1.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + end, + }, + ["21"] = { + name = "Don't Struggle", + + deathtime = 2.4, + deathtime_laststand = 2.4, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-1,-1), 1.1, "anim_attachment_RH") + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + att:EmitSound(")tdmg/takedown/execution_021_stand.ogg") + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Calf", tar:GetBloodColor()) + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.1, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-1,-1), 1.1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_021_laststand.ogg") + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + timer.Simple(2.1, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + }, + ["22"] = { + name = "A Friendly Hello", + + deathtime = 2.8, + deathtime_laststand = 2.8, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-1,-1), 1.1, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_022_stand.ogg") + end) + timer.Simple(1.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_L_Thigh", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-1,-1), 1.1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_022_laststand.ogg") + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.1, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + wep:Remove() + end) + end, + }, + ["23"] = { + name = "Slingblade", + + deathtime = 2.6, + deathtime_laststand = 2.8, + effect = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(90,90,0), Vector(0,-1,3), 1.5, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_023_stand.ogg") + end) + timer.Simple(0.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(90,90,0), Vector(0,-1,3), 1.5, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_023_laststand.ogg") + end) + timer.Simple(1.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + end, + }, + ["24"] = { + name = "Planting Steel", + + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(270,90,0), Vector(0,-1,-2), 1.5, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_024_stand.ogg") + end) + timer.Simple(0.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Thigh", tar:GetBloodColor()) + end) + timer.Simple(1.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(1.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(90,90,0), Vector(0,-1,3), 1.5, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_024_laststand.ogg") + end) + timer.Simple(1.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["25"] = { + name = "Knuckle Up", + + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_025_stand.ogg") + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_025_laststand.ogg") + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["26"] = { + name = "No Firearms Needed", + + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_026_stand.ogg") + end) + timer.Simple(1.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_026_laststand.ogg") + end) + end, + }, + ["27"] = { + name = "Jaw Buster", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_027_stand.ogg") + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_027_laststand.ogg") + end) + timer.Simple(0.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(1.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(1.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["28"] = { + name = "All Kicks", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_028_stand.ogg") + end) + timer.Simple(1.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_028_laststand.ogg") + end) + timer.Simple(0.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["29"] = { + name = "Cage Match", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_029_stand.ogg") + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_029_laststand.ogg") + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["30"] = { + name = "Sweet Dreams", + deathtime = 2.3, + deathtime_laststand = 2.3, + effect = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_030_stand.ogg") + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_030_laststand.ogg") + end) + end, + }, + ["31"] = { + name = "Suplex Deluxe", + deathtime = 2.4, + deathtime_laststand = 2.8, + effect = function(att, tar, bm) + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_031_stand.ogg") + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0.6, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_031_laststand.ogg") + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["32"] = { + name = "Gravity Assist", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_032_stand.ogg") + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_032_laststand.ogg") + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["33"] = { + name = "A Bit Stabby", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(270,90,0), Vector(0,-1,-2), 1.5, "anim_attachment_RH") + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_033_stand.ogg") + end) + timer.Simple(1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + timer.Simple(1.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(270,90,0), Vector(0,-1,-2), 1.5, "anim_attachment_RH") + timer.Simple(0.8, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_033_laststand.ogg") + end) + timer.Simple(0.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["40"] = { + name = "Rapid Incision", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(270,90,0), Vector(0,-1,-2), 1.5, "anim_attachment_RH") + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_040_stand.ogg") + end) + timer.Simple(2.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_L_Upperarm", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(90,90,0), Vector(0,-1,3), 1.5, "anim_attachment_RH") + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_040_laststand.ogg") + end) + timer.Simple(1.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["41"] = { + name = "Killer Kodachis", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, new_katana_model, Angle(-10,0,0), Vector(0,-1,-4), 1.3, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, new_katana_model, Angle(10,0,0), Vector(1,0,-4), 1.3, "anim_attachment_LH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_041_stand.ogg") + end) + timer.Simple(0.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(0.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(1.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(3.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, new_katana_model, Angle(-10,0,0), Vector(0,-1,-4), 1.3, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, new_katana_model, Angle(10,0,0), Vector(1,0,-4), 1.3, "anim_attachment_LH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_041_laststand.ogg") + end) + timer.Simple(1.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + }, + ["42"] = { + name = "Sadukar Wrath", + deathtime = 2.8, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, new_katana_model, Angle(-10,0,0), Vector(0,-1,-4), 1.3, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, new_katana_model, Angle(10,0,0), Vector(1,0,-4), 1.3, "anim_attachment_LH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_042_stand.ogg") + end) + timer.Simple(0.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(1.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.9, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, new_katana_model, Angle(-10,0,180), Vector(0,-1,4), 1.3, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, new_katana_model, Angle(10,0,180), Vector(1,0,4), 1.3, "anim_attachment_LH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_042_laststand.ogg") + end) + timer.Simple(1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(3.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + }, + ["43"] = { + name = "Smack Attack", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, ar_model, Angle(0,0,20), Vector(-2,-1,-0), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_043_stand.ogg") + end) + timer.Simple(0.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, ar_model, Angle(0,0,20), Vector(-2,-1,-0), 1, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_043_laststand.ogg") + end) + timer.Simple(2.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.7, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + }, + ["44"] = { + name = "Foul Fate", + deathtime = 3, + deathtime_laststand = 2.6, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, ar_model, Angle(0,0,20), Vector(-2,-1,-0), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_044_stand.ogg") + end) + timer.Simple(0.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Pelvis", tar:GetBloodColor()) + end) + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.35, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Pelvis", tar:GetBloodColor()) + end) + timer.Simple(0.35, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Pelvis", tar:GetBloodColor()) + end) + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, ar_model, Angle(0,0,20), Vector(-2,-1,-0), 1, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_044_laststand.ogg") + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + }, + ["45"] = { + name = "Sticky Situation", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, new_stick_model, Angle(-10,0,0), Vector(1.5,0,-4), 1.2, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, new_stick_model, Angle(10,0,0), Vector(0,0,-4), 1.2, "anim_attachment_LH") + timer.Simple(0.3, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_045_stand.ogg") + end) + timer.Simple(0.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(1.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, new_stick_model, Angle(-10,0,0), Vector(1.5,0,-4), 1.2, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, new_stick_model, Angle(10,0,0), Vector(0,0,-4), 1.2, "anim_attachment_LH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_045_laststand.ogg") + end) + timer.Simple(2.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + }, + ["47"] = { + name = "Timber", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, new_pickaxe_model, Angle(10,0,0), Vector(0,0,-3), 1.2, "anim_attachment_RH") + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_047_stand.ogg") + end) + timer.Simple(0.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Thigh", tar:GetBloodColor()) + end) + timer.Simple(1.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Upperarm", tar:GetBloodColor()) + end) + timer.Simple(1.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Upperarm", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, new_pickaxe_model, Angle(10,0,0), Vector(0,0,-3), 1.2, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_047_laststand.ogg") + end) + timer.Simple(0.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Upperarm", tar:GetBloodColor()) + end) + timer.Simple(1.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Upperarm", tar:GetBloodColor()) + end) + end, + }, + ["49"] = { + name = "Hammer It Out", + deathtime = 2.7, + deathtime_laststand = 2.2, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sledgehammer_model, Angle(0,90,30), Vector(2,0,4), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_049_stand.ogg") + if true then + tar:SetNWBool('HeadBlowMWII', true) + end + end) + timer.Simple(0.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Neck1", tar:GetBloodColor()) + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + if true then + tar:HeadBlow() + end + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sledgehammer_model, Angle(0,90,30), Vector(2,0,4), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_049_laststand.ogg") + if true then + tar:SetNWBool('HeadBlowMWII', true) + end + end) + timer.Simple(0.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + if true then + tar:HeadBlow() + end + end) + end, + }, + ["51"] = { + name = "Blackcell SOP", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_LH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_051_stand.ogg") + end) + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(1.9, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep2) then return end + local ef = EffectData() + ef:SetEntity(wep2) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.1, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep2) then return end + local ef = EffectData() + ef:SetEntity(wep2) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(3.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_LH") + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_051_laststand.ogg") + end) + timer.Simple(1.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(1.9, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep2) then return end + local ef = EffectData() + ef:SetEntity(wep2) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.1, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep2) then return end + local ef = EffectData() + ef:SetEntity(wep2) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(3.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + }, + ["52"] = { + name = "Blackcell Moves", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_LH") + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_052_stand.ogg") + end) + timer.Simple(0.3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(1.1, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_L_Calf", tar:GetBloodColor()) + end) + timer.Simple(2.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_LH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_052_laststand.ogg") + end) + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Calf", tar:GetBloodColor()) + end) + timer.Simple(1.3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep2) then return end + local ef = EffectData() + ef:SetEntity(wep2) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + local ef = EffectData() + ef:SetEntity(wep2) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + }, + ["53"] = { + name = "Bootlicker", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_053_stand.ogg") + end) + timer.Simple(1.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_053_laststand.ogg") + end) + timer.Simple(2.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["55"] = { + name = "Hip Hop Hurt", + deathtime = 2.4, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep2 = COD:ConnectWeapon(bm, ar_model, Angle(0,0,20), Vector(-2,-1,-0), 1, "anim_attachment_RH") + timer.Simple(0.3, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_055_stand.ogg") + end) + timer.Simple(1.5, function() + if !IsValid(wep2) then return end + local wep3, wep3_p = COD:TakeThisIntoPhys(wep2, 10) + wep3_p:SetVelocityInstantaneous(att:GetForward()*128) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0.3, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_055_laststand.ogg") + end) + end, + }, + ["56"] = { + name = "Spinal Adjustment", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_056_stand.ogg") + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_056_laststand.ogg") + end) + end, + }, + ["57"] = { + name = "Shred Em Up", + deathtime = 2.2, + deathtime_laststand = 2.5, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, new_katana_model, Angle(-10,0,0), Vector(0,-1,-4), 1.3, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_057_stand.ogg") + end) + timer.Simple(0.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_L_Calf", tar:GetBloodColor()) + end) + timer.Simple(1.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Neck1", tar:GetBloodColor()) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, new_katana_model, Angle(0,0,180), Vector(0,-1,4), 1.3, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_057_laststand.ogg") + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(3.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + end) + end, + }, + ["58"] = { + name = "Shhh", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, new_katana_model, Angle(0,0,180), Vector(0,-1,4), 1.3, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_058_stand.ogg") + end) + timer.Simple(1.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, katana_model, Angle(-10,0,0), Vector(0,-1,4), 0.7, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_058_laststand.ogg") + end) + timer.Simple(0.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(1.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(3.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + end) + end, + }, + ["60"] = { + name = "Boomstick Boogie", + deathtime = 2.75, + deathtime_laststand = 2.75, + effect = function(att, tar, bm) + tar:SetNWBool('HeadBlowMWII', true) + local wep = COD:ConnectWeapon(att, "models/tdmg/wep/new/doomshotgun.mdl", Angle(-25,0,0), Vector(10,0,2), 1.1, "anim_attachment_RH") + timer.Simple(0.3, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_060_stand.ogg") + end) + timer.Simple(2.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + if true then + tar:HeadBlow() + end + end) + timer.Simple(2.7, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetOrigin(wep:GetPos()+wep:GetForward()*32) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + effect_laststand = function(att, tar, bm) + tar:SetNWBool('HeadBlowMWII', true) + local wep = COD:ConnectWeapon(att, "models/tdmg/wep/new/doomshotgun.mdl", Angle(-25,0,0), Vector(10,0,2), 1.1, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_060_laststand.ogg") + end) + timer.Simple(2.7, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + if true then + tar:HeadBlow() + end + end) + timer.Simple(2.7, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetOrigin(wep:GetPos()+wep:GetForward()*32) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + }, + ["61"] = { + name = "Daughter Of Hatred", + deathtime = 3.8, + deathtime_laststand = 3.8, + effect = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_061_stand.ogg") + end) + timer.Simple(0.8, function() + if !IsValid(att) or !att.Takedowning then return end + lights(att, true, true, true) + end) + for i=1,10 do + timer.Simple(1+(i/10), function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning then return end + lights(att, false) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_061_laststand.ogg") + end) + timer.Simple(0.8, function() + if !IsValid(att) or !att.Takedowning then return end + lights(att, true, false, true) + end) + for i=1,10 do + timer.Simple(1+(i/10), function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning then return end + lights(att, false) + end) + end, + }, + ["62"] = { + name = "Inarius Impaling", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, "models/props_junk/harpoon002a.mdl", Angle(90,0,0), Vector(0,0,3), 0.8, "anim_attachment_RH") + local wep3, wep3_p + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_062_stand.ogg") + end) + timer.Simple(1.25, function() + if !IsValid(tar) or !tar.Takedowning or !IsValid(wep) then return end + wep:Remove() + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + wep = COD:ConnectWeapon(bm, "models/props_junk/harpoon002a.mdl", Angle(0,0,0), Vector(0,0,3), 0.8, "chest") + end) + + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, "models/props_junk/harpoon002a.mdl", Angle(270,0,0), Vector(0,0,3), 0.8, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_062_laststand.ogg") + end) + timer.Simple(1.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + end, + }, + ["63"] = { + name = "Stabbed A Lot", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(90,90,0), Vector(0,0,3), 1.6, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_063_stand.ogg") + end) + timer.Simple(1.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(90,90,0), Vector(0,0,3), 1.6, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_063_laststand.ogg") + end) + timer.Simple(0.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(1.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["64"] = { + name = "Lets Go Clubbing", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, "models/tdmg/wep/w_baton.mdl", Angle(0,90,0), Vector(0,0,0), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_064_stand.ogg") + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, "models/tdmg/wep/w_baton.mdl", Angle(0,270,0), Vector(0,0,0), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_064_laststand.ogg") + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["65"] = { + name = "Bruised and Battered", + deathtime = 3.2, + deathtime_laststand = 2.8, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, "models/tdmg/wep/w_batteringram.mdl", Angle(0,140,0), Vector(7,10,-3), 1, "anim_attachment_RH") + local wep3, wep3_p + timer.Simple(0.3, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_065_stand.ogg") + end) + timer.Simple(2.9, function() + if !IsValid(wep1) then return end + wep3, wep3_p = COD:TakeThisIntoPhys(wep1, 10) + wep3_p:SetVelocity(att:GetForward()*128+att:GetRight()*48-Vector(0,0,128)) + end) + timer.Simple(3.15, function() + if !IsValid(wep3_p) then return end + wep3_p:SetVelocity(att:GetForward()*72+Vector(0,0,200)) + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, "models/tdmg/wep/w_batteringram.mdl", Angle(0,90,0), Vector(7,4,-3), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_065_laststand.ogg") + end) + timer.Simple(2.6, function() + if !IsValid(wep1) then return end + wep3, wep3_p = COD:TakeThisIntoPhys(wep1, 10) + wep3_p:SetVelocity(Vector(0,0,-64)) + end) + timer.Simple(2.8, function() + if !IsValid(wep3_p) then return end + wep3_p:SetVelocity(att:GetForward()*72+Vector(0,0,200)) + end) + end, + }, + ["66"] = { + name = "Electrifying", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, "models/tdmg/wep/w_shocker.mdl", Angle(0,90,0), Vector(0,0,3), 1, "anim_attachment_RH") + for i=1,20 do + timer.Simple(0.5+(i*0.05), function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(bm) + ef:SetMagnitude(1) + util.Effect("TeslaHitboxes", ef) + end) + end + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_066_stand.ogg") + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, "models/tdmg/wep/w_shocker.mdl", Angle(0,90,0), Vector(0,0,3), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_066_laststand.ogg") + end) + for i=1,20 do + timer.Simple(1+(i*0.05), function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(bm) + ef:SetMagnitude(1) + util.Effect("TeslaHitboxes", ef) + end) + end + end, + }, + ["67"] = { + name = "Shell Of A Day", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, shotgun_model, Angle(20,190,0), Vector(12,1,3), 1, "anim_attachment_RH") + timer.Simple(0.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + att:EmitSound(")tdmg/takedown/execution_067_stand.ogg") + end) + timer.Simple(0.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, shotgun_model, Angle(20,190,0), Vector(12,1,3), 1, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_067_laststand.ogg") + end) + timer.Simple(1.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["68"] = { + name = "Shotgun Slayed", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, shotgun_model, Angle(20,190,0), Vector(12,1,3), 1, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_068_stand.ogg") + end) + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + timer.Simple(2.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, shotgun_model, Angle(20,190,0), Vector(12,1,3), 1, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_068_laststand.ogg") + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine", tar:GetBloodColor()) + end) + end, + }, + ["69"] = { + name = "No Escape", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pkm_model, Angle(-0,90,180), Vector(10,-2,-2), 1.1, "anim_attachment_RH") + timer.Simple(0.6, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_069_stand.ogg") + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + timer.Simple(2.1, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + timer.Simple(2.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + timer.Simple(2.3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pkm_model, Angle(-0,90,180), Vector(10,-2,-2), 1.1, "anim_attachment_RH") + timer.Simple(0.7, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_069_laststand.ogg") + end) + timer.Simple(2.2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + }, + ["70"] = { + name = "OMG LMG", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pkm_model, Angle(-0,100,180), Vector(10,0,-3), 1.1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_070_stand.ogg") + end) + timer.Simple(1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(1, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, pkm_model, Angle(-0,100,180), Vector(10,0,-3), 1.1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_070_laststand.ogg") + end) + for i=1,4 do + timer.Simple(2.1+(i*0.1), function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + timer.Simple(2.1+(i*0.1), function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end + end, + }, + ["71"] = { + name = "Close Encounter", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sniper_model, Angle(0,270,4), Vector(12,0,6), 1, "anim_attachment_RH", false, "ValveBiped.Bip01_R_Hand") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_071_stand.ogg") + end) + timer.Simple(0.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_L_Calf", tar:GetBloodColor()) + end) + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sniper_model, Angle(0,270,4), Vector(12,0,6), 1, "anim_attachment_RH", false, "ValveBiped.Bip01_R_Hand") + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_071_laststand.ogg") + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + }, + ["72"] = { + name = "No Scope Needed", + deathtime = 2.1, + deathtime_laststand = 3, + effect = function(att, tar, bm) + tar:SetNWBool('HeadBlowMWII', true) + local wep = COD:ConnectWeapon(att, sniper_model, Angle(0,270,4), Vector(12,0,6), 1, "anim_attachment_RH", false, "ValveBiped.Bip01_R_Hand") + local wep2 = COD:ConnectWeapon(bm, ar_model, Angle(0,0,20), Vector(-2,-1,-0), 1, "anim_attachment_RH") + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_072_stand.ogg") + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + if true then + tar:HeadBlow() + end + end) + timer.Simple(2, function() + if !IsValid(wep2) then return end + COD:TakeThisIntoPhys(wep2, 10) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, sniper_model, Angle(0,270,4), Vector(12,0,6), 1, "anim_attachment_RH", false, "ValveBiped.Bip01_R_Hand") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_072_laststand.ogg") + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep) then return end + local ef = EffectData() + ef:SetEntity(wep) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["73"] = { + name = "Heavy Handed", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_073_stand.ogg") + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_073_laststand.ogg") + end) + end, + }, + ["74"] = { + name = "Get Bodied", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_074_stand.ogg") + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_074_laststand.ogg") + end) + end, + }, + ["75"] = { + name = "Beat Drop", + deathtime = 3, + deathtime_laststand = 2.8, + effect = function(att, tar, bm) + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_075_stand.ogg") + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_075_laststand.ogg") + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["77"] = { + name = "Snoop Hustle", + deathtime = 2.8, + deathtime_laststand = 3, + effect = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(270,90,0), Vector(0,-1,-2), 1.5, "anim_attachment_RH") + local wep = COD:ConnectWeapon(bm, ar_model, Angle(0,0,20), Vector(-2,-1,-0), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_077_stand.ogg") + end) + timer.Simple(2.1, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(wep) then return end + COD:TakeThisIntoPhys(wep, 10) + end) + end, + effect_laststand = function(att, tar, bm) + COD:ConnectWeapon(att, knife_model, Angle(90,90,0), Vector(0,-1,3), 1.5, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_077_laststand.ogg") + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["79"] = { + name = "Bong RIP", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, "models/props_junk/GlassBottle01a.mdl", Angle(0,0,0), Vector(0,0.5,4), 1, "anim_attachment_RH") + local wep3, wep3_p + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_079_stand.ogg") + end) + timer.Simple(0.5, function() + if !IsValid(wep) then return end + wep3, wep3_p = COD:TakeThisIntoPhys(wep, 10) + wep3_p:SetVelocity(att:GetForward()*64-Vector(0,0,256)) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, "models/props_junk/GlassBottle01a.mdl", Angle(0,0,0), Vector(0,0.5,4), 1, "anim_attachment_RH") + local wep3, wep3_p + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_079_laststand.ogg") + end) + timer.Simple(0.5, function() + if !IsValid(wep) then return end + wep3, wep3_p = COD:TakeThisIntoPhys(wep, 10) + wep3_p:SetVelocity(att:GetForward()*100) + end) + timer.Simple(2.4, function() + if !IsValid(wep3) then return end + wep3:Fire("Break") + end) + end, + }, + ["81"] = { + name = "Deadly From Downtown", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, "models/weapons/w_eq_fraggrenade_thrown.mdl", Angle(0,0,0), Vector(0,0,0), 1, "anim_attachment_RH") + local wep3, wep3_p + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_081_stand.ogg") + end) + timer.Simple(1.8, function() + if !IsValid(att) or !att.Takedowning then return end + wep3, wep3_p = COD:TakeThisIntoPhys(wep, 10) + wep3_p:SetVelocity(att:GetForward()*150+Vector(0,0,100)) + end) + timer.Simple(2.6, function() + if !IsValid(wep3) then return end + local ef = EffectData() + ef:SetOrigin(wep3:GetPos()) + ef:SetFlags(1) + util.Effect("Explosion", ef) + wep3:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, "models/weapons/w_eq_fraggrenade_thrown.mdl", Angle(0,0,0), Vector(0,0,0), 1, "anim_attachment_RH") + local wep3, wep3_p + timer.Simple(0.2, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_081_laststand.ogg") + end) + timer.Simple(1.7, function() + if !IsValid(att) or !att.Takedowning then return end + wep3, wep3_p = COD:TakeThisIntoPhys(wep, 10) + wep3_p:SetVelocity(att:GetForward()*24) + end) + timer.Simple(2.6, function() + if !IsValid(wep3) then return end + local ef = EffectData() + ef:SetOrigin(wep3:GetPos()) + ef:SetFlags(1) + util.Effect("Explosion", ef) + wep3:Remove() + end) + end, + }, + ["83"] = { + name = "Tatman Tactics", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_083_stand.ogg") + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_083_laststand.ogg") + end) + end, + }, + ["85"] = { + name = "Kickin It", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0.5, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_085_stand.ogg") + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_085_laststand.ogg") + end) + timer.Simple(2.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + }, + ["86"] = { + name = "Cranial Crack", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_086_stand.ogg") + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_086_laststand.ogg") + end) + end, + }, + ["87"] = { + name = "Laser Everyone", + deathtime = 2.5, + deathtime_laststand = 2.5, + effect = function(att, tar, bm) + tar:SetNWBool('HeadBlowMWII', true) + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_087_stand.ogg") + lasers(att, true) + end) + timer.Simple(0.3, function() + if !IsValid(att) or !att.Takedowning then return end + lasers(att, true) + end) + timer.Simple(0.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_L_Calf", tar:GetBloodColor()) + end) + timer.Simple(0.8, function() + if !IsValid(att) or !att.Takedowning then return end + lasers(att, false) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + if true then + tar:HeadBlow() + end + lasers(att, true) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning then return end + lasers(att, false) + end) + end, + effect_laststand = function(att, tar, bm) + tar:SetNWBool('HeadBlowMWII', true) + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_087_laststand.ogg") + end) + timer.Simple(1, function() + if !IsValid(att) or !att.Takedowning then return end + lasers(att, true) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + if true then + tar:HeadBlow() + end + lasers(att, true) + end) + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning then return end + lasers(att, false) + end) + end, + }, + ["88"] = { + name = "Crowbar 101", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, "models/tdmg/wep/w_crowbar.mdl", Angle(0,90,0), Vector(0,0,3), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_088_stand.ogg") + end) + timer.Simple(0.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + end, + effect_laststand = function(att, tar, bm) + local wep = COD:ConnectWeapon(att, "models/tdmg/wep/w_crowbar.mdl", Angle(0,90,0), Vector(0,0,3), 1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_088_laststand.ogg") + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + end, + }, + ["89"] = { + name = "Necessary Evil", + deathtime = 2.8, + deathtime_laststand = 3, + effect = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_089_stand.ogg") + end) + timer.Simple(1.4, function() + if !IsValid(att) or !att.Takedowning then return end + lights(att, true) + end) + timer.Simple(1.7, function() + if !IsValid(bm) or !bm.Takedowning then return end + local ef = EffectData() + local pos = bm:GetPos() + if bm:LookupBone("ValveBiped.Bip01_Pelvis") then + pos = bm:GetBonePosition(bm:LookupBone("ValveBiped.Bip01_Pelvis")) + end + ef:SetOrigin(pos) + util.Effect("HelicopterMegaBomb", ef) + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning then return end + lights(att, false) + end) + end, + effect_laststand = function(att, tar, bm) + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_089_laststand.ogg") + end) + timer.Simple(1.8, function() + if !IsValid(att) or !att.Takedowning then return end + lights(att, true, true) + end) + timer.Simple(2.8, function() + if !IsValid(bm) or !bm.Takedowning then return end + local ef = EffectData() + local pos = bm:GetPos() + if bm:LookupBone("ValveBiped.Bip01_Pelvis") then + pos = bm:GetBonePosition(bm:LookupBone("ValveBiped.Bip01_Pelvis")) + end + ef:SetOrigin(pos) + util.Effect("HelicopterMegaBomb", ef) + end) + timer.Simple(3, function() + if !IsValid(att) or !att.Takedowning then return end + lights(att, false) + end) + end, + }, + ["90"] = { + name = "Sidepiece Deceased", + deathtime = 3, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_RH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_090_stand.ogg") + end) + timer.Simple(0.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_R_Calf", tar:GetBloodColor()) + end) + timer.Simple(0.3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(2.3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_RH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_090_laststand.ogg") + end) + timer.Simple(2.3, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.3, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + end, + }, + ["93"] = { + name = "Play For Sport", + deathtime = 2.8, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_LH") + timer.Simple(0, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_093_stand.ogg") + end) + for i=1,3 do + timer.Simple(0.8+(i/5), function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.8+(i/5), function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(0.95+(i/5), function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep2) then return end + local ef = EffectData() + ef:SetEntity(wep2) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.95+(i/5), function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + end + timer.Simple(3.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_LH") + timer.Simple(0.1, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_093_laststand.ogg") + end) + timer.Simple(1.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(1.9, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep2) then return end + local ef = EffectData() + ef:SetEntity(wep2) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.9, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + }, + ["94"] = { + name = "Fate And Consequence", + deathtime = 2.8, + deathtime_laststand = 3, + effect = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_LH") + timer.Simple(0.6, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_094_stand.ogg") + end) + timer.Simple(0.8, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep2) then return end + local ef = EffectData() + ef:SetEntity(wep2) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(0.8, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + timer.Simple(1.6, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.6, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine2", tar:GetBloodColor()) + end) + timer.Simple(2.4, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep2) then return end + local ef = EffectData() + ef:SetEntity(wep2) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.4, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(2.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(2.5, function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Head1", tar:GetBloodColor()) + end) + timer.Simple(3.7, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + effect_laststand = function(att, tar, bm) + local wep1 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_RH") + local wep2 = COD:ConnectWeapon(att, pistol_model, Angle(0,0,0), Vector(-4,-0.2,-1), 1.1, "anim_attachment_LH") + timer.Simple(0.4, function() + if !IsValid(att) or !att.Takedowning then return end + att:EmitSound(")tdmg/takedown/execution_094_laststand.ogg") + end) + for i=1,4 do + timer.Simple(1.1+(i/5), function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + local ef = EffectData() + ef:SetEntity(wep1) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.1+(i/5), function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + timer.Simple(1.2+(i/5), function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep2) then return end + local ef = EffectData() + ef:SetEntity(wep2) + ef:SetAttachment(1) + ef:SetFlags(1) + util.Effect("MuzzleFlash", ef) + end) + timer.Simple(1.2+(i/5), function() + if !IsValid(tar) or !tar.Takedowning then return end + bm:MWII_BE("ValveBiped.Bip01_Spine4", tar:GetBloodColor()) + end) + end + timer.Simple(3.5, function() + if !IsValid(att) or !att.Takedowning or !IsValid(wep1) then return end + wep1:Remove() + wep2:Remove() + end) + end, + }, +} \ No newline at end of file diff --git a/gamemodes/cod_custom/icon24.png b/gamemodes/cod_custom/icon24.png new file mode 100644 index 0000000000000000000000000000000000000000..99d6f9aac114720d66f875ffc9953a1badb8df16 GIT binary patch literal 3090 zcmV+t4DIuYP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rh3<4A*3sGd!@Bjb{7D+@wR9M4}ms^Zw$5n>E z+V^wq?sNL)zRb9LW;~g(9oqqmI3b|K1Ot%=Tb3fQ1O!lcLyMvj4z7f3n+M8cnJ9WN{CZjTrM!g^idd8UU%P+s2 zZftC@x3~9xwnqGD;KBpWz9t_3@m3sZ5_0^@1EX>broH=)i!+zbQ>h1}Q6k3UNi7_O56VJ*N(f=4X?kUGak1$4`~QCiKK<0M zkXtrOt@g%3yZObMFP@kTj-1zC-J%lIn2rYg+&xQV%Hnc&$c~j!S*|m4W{&pyJhf^a z3OL#CbMvJegu4@5;Y!c<{y{1AN49PE_V@RHat5l^Du3{YzfEhd@w00yOMl~7@=;5T zY?+L?{?1$T{vDp{2&NL79^4dxu!HfVuT09{9+;EUzz-gmBR9VRDU70?QYe zmY{vlDtVa`B@=Ahrj!b+u!PLy{l4#Sx7+Qv#^dpO0KfAaPtZG-_uO-C?XQHx;;p?O zaP8Uwsb0hr367oG{1NM=Mc(fyR$_c zPr(OETiB`PODWgGF#M+Ly0MfJyWMW{!ngjJuYBciKYRZC-JiCD24z`NtHm!RGTv#-tHi!%i6|yCefJTN`b!M5-itf-@n2KPCdveYYE$P*r=Z2^1&PAWq~p! zO;INg^Sgu)H(IUMo8$2q+qP}K@P$8X8SFn@TU}nO1OY+_21iH4(n4huigb$W2r}a$ z+zN}!t6)1E9v?GaE%8>Xm_#GTIpKKBwaGP3`~j+2(l>pKGUREFD_s1oM)oL^vjfX*eP8;dpeQJ?p8Z+qk7z`pDE5WZ;$faf)CDa=Y);Bijb~|*3U93mv zsGn`&E&5pVHu+J?+VUA*d*MI$!L7?^Ut{GqVgeP@psIYr(WGhF*1ve3*R?k{Hvyg~ z%kozb#>dRfcx=iLPZezK_b62aLL-&N@+{^TmIz#j-P^kqA8jx^3JJG|e$*HvsPTzeNZ8_+RHPUqpt7b8`(&FJWALgQeKj#-Ol8<7_UV+_o z5T1p!B)OlnAKs*&ckw;n2F^7a4ICkaeevSO1+6v4GsvpN)-dCEnsN5t4`USv+_k*O z!shp4gP~woR&x2i5cA-po~KH z3*1aF<1`V7#iyTs8Yc(>%W)jfU=Rq_{aH>@8?~@OtKl-kEQ2`W;I)^@(gamxxIvw{ z*#&}o=gH!PtMQxsy;bmQ{!@H>@nihglW!0OQ^vPXNQNm^U{gjprdLv^98)tGOy#-f zp2I22QoD{*2n23nGaCu0mgLElqNS}T7S)8IM%10h~r0>`cwzQaSEpx6l z%PZf#MwqvFEjq+KyULk!AEL-pv^I!YpLjWA)}3Rsavw`#9c^Gc-D60XY><$oQ)Wz? zx5FKZeu0^4Fktx>r7AI){`1d2k8|nLB|Oi&?)e@i71q|zVWBCF=5Rcrqaq$!n@1NZ zX)+;Aa*}jH;4ISi?qb#~P#`gs;A*PWneI*4efbJ9FNyXin5o7pEOc1nR9uu)C2&1S z5}YJS@I3F$N~IFnrQN8y9&tKmP+CBN`Kda!TEL7`r7_cF=lT|@8>9V#!}KQI(E(2A zAu13CW3n`3;tw$;q{lIGTu^2TGc+&-Kk&#^J^-$yX^N9&8P#g_YPDK>tBU_K^}uHk zmDmWTvy$?n$5f=$oCaZ%Pzp`BX%Lf$s2`FY#w6n@rXkQqlMge}-I!#Ul239}Br%bO z5Paby5R_&4hLm!rC={GX+ zHHYjVA?wDdQeg!)a##@WOo^{XMBkl|-ipaja>^405ul+_Zy=>q#+a|STCGG%iM6w{ zLli|wslJwF+1AORL+|96ERRWcM^v|M=Efdbl5o)7=V)<2QJ0jiMwgmmKSK^AMj3<= z6o&=*QBKj%(M1W_JDnfc0f8S-6veAr>u>(A=eXHy(wOnbqrp@T2g6_N9UnX4C_-8} z7dFpREe-qoJKU~Bgcl5@r70#k*+GgN73f@{VukGF9Yo|`FJv7q{Xw6n>HJfyf4mck73C}xd0rDtE zO%xi9M3GN&@==D2B)ZV(q{M33@7(n-1mJsnM{7%6OKkBR9W(w-}+Q^GK$_%Qas#f2CL2HER#55m@CRq zLu?>7nA{+23nSlI3u7V21^FmPP9&8uU{21WG9{&y|ERTo#&MjJcWeKDeoO!h+~706 z{_}s~y5_S{nwy>d5k+Z>vme}KX>AcjNMLra%f5fN|avr3Nejr)|faokY(t5| z%kxV>%IIXw+4cwM4SVb!-Xu_Us%3>N%5;|INuKAsN-2QHfkWWn&g=j~AbJ-d09Jtw z;B2YXMz253Klagw&5AQ)U)$-c*I&O9?(f~G%QA7^@?5Hc&uBd0^7i-1WzIC7kY|NC z+&e1A<0vjw838VE3a9|yos4I9#Kr$?!t@SV0-ON*H}{S^o$hGa@r%`F-Iu`Sa58Dz z9nmnQwk=`Vd6662wsBooD5*-vb;@eBnw;oy7ns};>fbr>?K>LBcj6hK#Sc3{fN%sx z8iB#JY%6%^zV#<%mi^KsOuqMaXZnhL24g4IE$wM001R)MObuXVRU6WV{&C-bY%cCFfuYNF)}SM zGE_1!Ix{soF)=GJFgh?WK*!Z&0000bbVXQnWMOn=I&E)cX=Zr*}_)-3@U{o2~E_WJV{4mz*sw}TC>#Gf> z^LF*fC41xIs_d?%VeaRzZm#&@!%4rZ@(@ka;^(l|Le|CJUZ2dfUctZz{NJS?S*v_} zI+peS@sBObpU2Mi{_i5oktu;9Z^@UQKr-HvWK7%0RQ0W^h{>9^tiK22*&-}ssa7J-H?*s69{)VW=Z zzTni>nXa|_l89&_Hff(BM@YUIpHmHGtKQ|fHFMinbJjn8hHr@bs&maMk738PTaMlI zRC=yO>#}6TlR?q_Z<3f&SGZrP=Yl%Xy7evZ?7Q@WxhqqoLP%L?h84SA(n5>%Oq%y@z^_DuL8-AVCtaxneX1LA&hVkj>wlBSGS%zlpMZ?HZ*i~lF@}QM-H$|#S3YT2{oC~EKG1wbntYbi7WFKc9D!!XbIYjqa>bAl?Qahu z9s$$9S$sy>VAaK9kH^aQ{%-{o%I-l*Zu-g-iyK!xmMqi-3*7^lRf`PPv*fdvys4WK zECt$5a@k#d=<1P9;zwYDx;SGqjoiw~^hn|sziF4SJM z!NX1?{`jEx^#o&m@%(bdVV|=-$&dN@aqxz>+i=oi5k`8CM={@Ko(w^tD*4@IgGk$D zQICbbzfvy$_Q!>_?rV-nmV+mg`LWETdBc-e^pTQohAj~9W3H91PpHq1B%U1k74kh1 z+TK?TD9)Wz$4}aJV;Oo)Q3Ewh+tUYpAA2D(!t#$MH}DE|FpAfrR~6MRa)Vd{hr_xbWhd4kkm@-O1vrN0DiIQElji z`%BTxtY+NRxaUXHKRt}zkp2p+MU^x6VXR)v!%1>7X;zi&{<2?xP`uZGpWNJqH5S?x z>A4AptFKuw-RMZTlUc_pXoxVEp-m+DhI@LB`%W@B)rt0B33|o}{>o*|N*o61VzNsE zepLMH9vl~PbuY?1)ch#3tmEWV(@1uMuI)qV1GL>ao%{+;G^eHhd}U87 zFGFH@dBn@^aC5hDqk(!8+P=7E!Q)=OkYUZM#4Uhq5x!du;CcM8f5@q~SAD~}L>&un zK!Tg-Lu?tG$BZQ`W(z}A-Rf2&#*E?Lw#)F3`m}K*?dWZpx9@gAlEUjF6t+NTt<(kP zJjZHA4=SvueU)r*<{Gv>XM;o)cqm@ZOB}}Ff7GyGq^CZtgVZF=rSxMq$JEIS%-1*L zJ2{j!M_*0<}+;I_M^bSyb)YL6Ha3)nO;0DsL`^FR~8Dn{kf} z6^8;b+W9Y?Y4I?78Ji@88~(;Z2R8$6Su6=NYhtF`F6*;kR}CXm-_euQ5O8X&xU)Ym z4T&hY#%<{=mxm4-rJ+7MOJB%aAc;qJO_O>CaN9@ zU8$Ectb!mkc(t+AL?z~Tjk%|Qm2B)br2o&*_0<#odu&SY2VXOg^k#k zCirno>#4QXBI{D9w};cjSMbEt9#ec7m^^Ix_oQWc&zY2&V7}6ymo&jI(Ngg6@nn*G z9(8qfi7lRuOQ~lSd@N#iw1or^V{h_DOV>sQtaa+2!lS)p3&u-x;gH<9;fS7=H35Jy23mCzMME+@E#LfqI1+=#d+eXi^2sUnC
  • 8=P23|#s1O-`8vJEVDy zW_)BMCNJ)C+I9jbs2y{u=jSV!0JdWsF<)}I*4YYI*WB{*JJPdaJ%VxV#Q5Me+LML& zNp&fN9uC7$Z?BUOQb{0HW2rzAXOvd6IZ5}MeGOJ{?;}3p((f@7g{<K4A9GAOQrU35FxI zNheeLv7^GLi#&5O<*`G8p2p@)vhLj|XeUTD$e8FZZ2PeV_hJN5FG=Gusf5QeI%&4- zVW?IP~4;E$8D;70Mdx;Krxh zrVg&Rv$HGs^XILNhlda(Rn~miyYAqBHJezbS66D$8AcSYr>8f|ldRA;f{>q7e@~Y= z6gBTUs`yE4h&4^j(>bfGtn98m5Dg7i^4f9n{+SZNGfH_SC0`!l;vz%v9?N_^R$=+e z7T3s{byJGtLJ}}LJw5HZ`bDsmoj5!a=}BzTf9kuqk*0T;B?Bw8>LbFSrFlt_rrOJl z=&xjBF#6~!LLn5ny6Ag0U-oyl&f&8vTnLHHh8AaI+Zf>D?d8RzrSBwLhxAm+R&f+U ze!xQy)6zS5Dy}bsj);3AlVqmTUs)WWy3L3mngyZKpBb@~hPFx|RW~?( zlahfk>6A7$QKHv0J2S)c@#Du}ycKlmC9bZV+fhD0OW&VNh`_ZTcXGzxraXVgwTvjd zRzevc#M2_8!*sBBTfAy(0`jahwy{6IV0IHmDrsqHZG^FwZh|)kmW_Z(zea)%9(pZa zkhNTLfO!O#nd}4UcJUzsX}o_j+3m07{>k>}jq{QI|m%~|*dDXZtJL*YOFo;+cafYIoC8>YDo>gnokwzo_9 zo$by4RJD8|UdC@T!B+w{Q-cZ<9u4|(nw(~lfWV0pqL^2jdA&Es*4jD;?3t^dRJU9! zo`z8HL7F^gOSSL8N~hw_pFdF$ao9AU7tVTD;ueQs+J)SOdn?(crX7Z@@{qhDzh2I40sG!Mtrlpi(!`+@T<7>^-% zSR98w1HG>@4cGttr#wyw>VdCh%%hp3&tl3cY1nLi*!q(v?0tt`US7X@Vi}eF@2(al zgL->M67m-I7bKR1+2Ly6al)fhi-BgQ5@nt?{ zXYK9np{^qHw82apN1kTB+s5DZtMeuh=%2z>s2PNir}>gMTZ)-Ce=XWz0nURojKVa* zQvM}*COw@aM2E1Z7Qpe#{7eM(DO7ja@+_4-|QoJg9>)r?J< z!7b1assLaPK8dmk!Iu-L&b0!jbLrUf@Su=}>h3e*Y>jCOcq zNuFhsbUX@bZ{5rZC!YH-Yi9)JZ~Ji&^;dhU_vG8U@#jyVAaL=G?)wWyMy`Kk7wxUA z-b6-5I#bdLCE88mFn!yT_ADNGuw=@Uy!QL|=ku|A3AaH;$%`Ikdi>B@Y8WcT^?1_o zmFO!exm79M@a=e)!DKH{9v+^QA>@&XiAkqEhhV}GG8|0%w@Rk{MWfFk2|xRNxpi!NQTTUbh#>{p;Ja zw!2KGs8|-`QhstC_7wR()wlXNANTAvsFTsZzNW)3@R8so@9vrNyV}(<@?4L1*xTDP zTyC_7H!-ZHu?jxIQ!>VR(6bnagALGcq#bp9$JGuQl$JdUt<|lDPaO zCvg~!>9dH7ANn#+n{5UPV{-esIYD2&PrIaL++a1DSCx{Q>YYCuJw6;mFRzJGPSO3w zSpS9E9`XEmZn3agXa4N$>`(y-6+1h-0gMO}b3NfphDPz_P_$1yWIO4WIs+bt=Z~hJ zEHTFR97E;g-ETf~y|QBv&}LFRE(lQ&G|;IJRNY3EVu`obDL3vAj$Gwa{MJ$!%H2g~ zl7aNZ7&D`;o2R$;RoKSH z#sc`XI-30R$LXmQL02~hgdR@Jt~)+6)0kUR<2GaGks$}88GywLzSq%|2fM-nJTJz| z$mhQTZMF?E6Gd3&+fgw3H@C|Em!ruTIK&F!XM!zTih4uhXLIRMVu!!EpQc?k@|g&ZrVi_?dYa-&xerXp_lppXcv>}@jNeSBxsX6Z z>&~)}am2+&Zm}yT!;lP2iP`Pdt5?nME0SUsna`}h_N~|3{^X5cDTu@zZ1@@)7^2US zi2fBt>hQvcC$VpRT^NNX_b=r}N-$oKsC(qu z*Br)GCJm!G{(B>omByc9R~`{Qy~$mvo#jf-xO>(50%p~EcY7uI@4mXUz$M_ziiFwf zn_52;y}saM{^-LYnk@&7O4IN5DD$pAUdzyPZ#~iI_69I8Go3i@ymKulg?Ys%I&AyDKt;uXTLp3FeT=c!Nf5*7(v~^>v`sQ^CtxNqc1LEy z5fDsh+8dko5kZL?S}7ZX$MIwBdoZl(1r0_yC1=ThR8T-iRM?v$y3+bzFgFDZF2(Rl zy1{SrZO=m@J4s!zXcC$;W3Gx0DOX=N9Ic#B&es*PZwo0^mXz52A=1)6@b^0iH_|^C z&AdHE3eGwH{0aH=Rn{w@j+7z9m|;Qf8k5}JgX;UTD3r*#CoX07+{mw$wWn-TEZX}&sJX|%r#!r|Ct zBMz@M(+SJ3cgu|QJ8#{e2q&XKKk!|Aumo@Cy=ZOI?MQFbd=9pmqmu> z#+^aa2RlI%wyj3{2U2iKE1H+8s7ksLJB@fI{lqeKW}NX1qM9;A#UzUjN1Ido0ZZ|gb32LoP8;By}iAMZWr%v7CBqj*&Vhho;|BdNlD=$ z&1@HWy)BgtmW-1@T@3<(FnMtP<$1Pis436%^@d=ZCo^O{Tbp5K8>AV!f{z|Z;J&Q; zrqPJv5!*mWe`B|_d#5hUz{d@PfcfDr_L3ck99QB=l8;tnl#px|-KZ93U;WDr9lFtR z4W3hB|v1HtSYw?aF-!3OH!;TNAC@A@A0Fv{VbHWg^6WZ?0d@~-lwer!hM zR791cjfW#p==_dS7w77|PPSdv{S_0}ZDFyMr@?s5MMX9jyLF4VZzkRJy1TmcXKQ1b zYMA5`n!Y1Y?i^P=IcN87iV-kk^aBd0J-vQYZXTR|zwJ z$E!QvSLe|`hU4uQ;F^fXaX{$S*>qaey39nCXM_bMSF;r%cu11;y$I8MPp4D;kH1kF z;85>+8p`OBTgB=6x}nK4ODW1$mnLMQ_c3*-NW@+ovN6zc8+rtwmIqN&L-=Q4fM}Ax zA}kBf)N;xVymxC-pL98^%|t&Kt~MV?>4cdn*1Y42w~GWzS^R1xoYVYC*FNKwa)~Dz z|EO&cq9ILYvR(U znsy7VzE|EMcrP1G+}hcarxMKQp(zr5#}3-r+8u_M3}(8z7=RfyyzdO-2<|xge))t2 z#~o+6y~M^=54$cVOqL0w3vNOOKYsFR>&MpDYS(x@ZRRI=>lQ)Z3zjsTExJ$23cklR zBh&OoBjg9s<9}J1IX`RLNU&c(F zgI;loeabGn+#figdH4f#C@RLsmz(&j0NZp-yBXl|iM&y(b!qvxaJ37cg6b<1M<_p0%yfe5Wl$V(A<} ztNbuUx4cf3LJTopJrM()G-tIR`9Q8k7F$=>_=P;-YYMc^K=~ zte0+CnhPzwPbnqnN`X4Qm=Q+v>qu;WD?igu!%u6sK5TG*dmC(aJ3Y>7B5deyUF%6n zcxpdeLXZ`H>ERe$5vX_<)4h}Zf*46{-&cUi8PgGu&om8(7N|M&Gt+qeu zI-}p4@;Z86m2CGmW$Bx~Q#`h5(oVo?D{H9Eb4rEykbNdWM~ZlYnk7Rfvp>g$V=#2| zcmD~kr&Zn82hVQNg$hE1Z>*H%$@s3$nRv-68a{2^%1g~?z1%MHZ*$w3 zSag`J-8~a^-y@GZNYo`xON5<)drJ&jyxfMSrjnAyzUd`AhP*-1V`;F^q^xh{L)6sN z+^{=%$}>XmXHQ>N@EJ6f7MT@vY95oy(}$0U5h}aI8sq!KhYJpV(ZzrM^Bg~mu$o?p zG-{RZ%eQ{|sNNopNVX@MQCDg|GG3c;_kQT~5JLH`sK;5sRR%6=92P4HFWwdDCKx}O zG?;Otz%h?y(qj5Wh->V1G+Uj^U?U%G_%kuoF`eUTOWEJ+{CI10I%!9%a|pb-Mxfv@ zuw$`Q0A8asTU)><7EsWmx*k+>bm4Pb(M>7(Fkrg2q}kX!xk(rU4!N`rjwqx!0&0|_ z&30&0*79LDM>brOMqkJaFc<-Du^IO`Rs?#w9?*s@*(3)1;<@mupqV?zq!k8%3C>kL#^mym(?(VL-TK05Or{`q+ z9JFL#Wgy5AV~0T5f^y1NWh4a+>O3E|#U-+_EaA+!ZoRLolAOg#!(3J^dubT?HDNSa zab7UiaAtaSh#IImA@fb{ZIxg_d{Ny~|Eb3(AtEA@QrfiFh>*OR9*VqZRaPxfcitL7 z*c~=o7WAl>G6x$61e#8ixf7K)J~S=!Ug?ES|`>MJ-LwmBE9j zjABxgOl4v=M#WzH;w=%qql)48jt5=gj^T$TnF?V=1jQEq-CbNe^w;q`wZ2!Uf%|@E zP2Es?tsPL;cWjKVW_qLiuUA=_5o*M}+=TOIV4=(yOezv$V@Q1!N(lSEEWi=**z}`k zJ&{k*Z`Eg2FtACXMJIC6=-1j(Ov((_sweI(7b)1dcG352Xujiil?%)E6ad1?1{Q=4ofk_N(-d& z*9DHU_Y3y~Y4FV&>o8NwKH;z^#|}ZY0(ER>Yild=!boG6`K|{{$SZ&&uwUArK7Ruy$8dMC_2oPhu-!!Ydgv=TW2BS;oDMVIuHOmldc+K|Z+xTuYf=h_ zA2e~~GB!WP!l?p6%yO}QLnRu*x2zc6qFv!7G5$~JLNS6wgTo2)z4cS8U&`qOKCXRl z1CtEDP0$7lg}wx849?=2Fj9Z2RuM(J^Zi>(JsOm3RR;2I6nKdWkwXoh^`8WNlKiH3 zJJ?*%@bom9&M#>^V^>$cd*$im@V`gTcoL2LJV{I*CYX(*C&8BxqgGlRa;i1|u|sY> zL0@b%?^K2am=LHl3pF=4H`Dh5bClgowN(cwV`U#GqD!3%KPb}#PXWz#4d|a%ZF`M7 zn!UahMWspKUbF140UqMF4j9E#OB)-41hb0-GmKh0xiags$d|Mbh`^?C)6Blz-|1fiErG2gEmfOaX0k_)4G4}N`NY020L?2Z8q{n+0& zIt}_9XPe)mT7$S+3->M6tlU#4#kKKQTP|(Q4Mm{h5FC=cwWsp3H41CrU$``+VYbKO zim{CTA~lhVBqu}TqHwqTH5-J11D2iLp%^D8uhDpdS{&YcH0r(tcAFYIz4)QRjfH+8 zHU7It$_cP4*R2r@Xao%PZcbMF+ZtZAy+PgY=)vZ>fd|3Qjmf#Pb^s`MD7*Ppd8u|m zea+3Ddz<%o=FM~_yJG(6XiSN9^4$I2df~p{iKGce@Ey&(mD;q|@cz5~?9UF_Lg7q2 zDJkjiJ)pMTX#ntR&o5=qvH>(7Yp)^ig;7r++oXv(t-O4P986~%65VeO>22&>b7n?e zFzJpwxm#nD6ov&5hReE9Sz|K#t~&XCN)<*KXo%2BU>8fQcryZo*WwCSRV?N*Yk^dD zT6B3-EaQ>*jUt($QOES}xmaxa_2n)3`S}IFz+kFrc+LD(S5S1PxQdtoKQx71ey~Bv z@7iN{VZk1Z!Ma5Hh}#(Z2T+IE^lFP6z*DH>AI$f1HYJ!pYR!1la4A1mR=OjSfy9u; zBV0U)bT4kcKJ4?puW5h}%z^$A1xjKS<9_{WR`Nk)!b{f>x&`~ zn5Yr6iYSni!K5Fs7hXN4k|-A7udP9FyBU;H&xgGY^iLk{iX<220i&b_Ed$5^;ILUTk}ifP!&xNYa_+Du4B6b4;+XNR4E`c0PcZPx}!A9o3*hG`U*J| zXr@ECCeav-XXI@Z{D7l%KQ$XoYk{B#dDMVO<>P2nW6aF#j3Fo}*tG98+0?k-fXtAF zLMcQ)q}>jGl2EsGa8OoQZtTU7hn7H#_ByGVG!*?aGC~Wa9YXCcop=}GB6U!`uzu-r z5YlMtLY8uJa)kv21-gY%dxwghoBL ziVGQ4TfPk^W=!E>p0ugZCcHa!xchJoVCi4LbX^*I&(TlYJUGk?)Bf=r-PVvyr`C>&^|MR992o zr}rwz^*C^t&UEGF!|&zpQv|24)eevrd@+#vI<8*cfCoD5l+@jxN#3qXwnESCb@qda zm^V-69ho2r0f7zqrRuzB+gErDKfcO_6Vro@MCSXqKeWkKgpTN0O@lYozM6K`RjYn^ z`41h^k*5@Z$|g>Poanlh1G)3qdb#8D5_=2B+|k}@mO(#g@guko&R3(TfO}*D@C7q> z>)CFcxL&V#Gk_x>;8r7*Y;&N!JinLVZ5$l5j^5|ku#m9zm{*zLiXRV4L%+^$dWw7N zzjRr|o4ahm@M4RzDS9h&Ltp;TEbZO;ihp?T8?uQ8SFEeE=LSdYG={#U%_gqe*&(vC zYM}>u%rLEI(N^|VE9X5dCH(Kd{}_rfiH6L7TiDpxxF{sRFG1c|85h{> z2F~GmG$uxId{tl=pNfKx6x6EM7=FPmy-6{1QM;tA6(}#=F(3?hfzgnKg^nimEN9Nx zBhfqxVNWJ%{)@w4JXz>3=(v<#z^Hj_ESCT6srhrAVX!V-2lyvl&s%Z3NM~zoCLMdQ z;-%Ruv6a(B+z#(0M!&wwCC`jKcqE$qN!ylfv>k%EG#S(lgr`X*PVqY78j|0pKEK- zeLHRjAl&R^dpsG-WIntg-mYsf)ES&U%Q&+@k@SN2z*WQP*&J!m)i9B1Z){Ki@*_vApY;DK^ol;r z;R?p4eNiv%CC+#9S!>HLB6ZRNAB!H4ITlLoq%|hEyXD&;z4_OM%IuhLch}#}_)#7l z^lvVuk=V^XzP!3p7Qfv5b`|jYUD*SVI95&94<8ur>z*q$Iw$hJe{R_d?ARc?#NFwm zn4!PZRmi2Osi^{WmQFI0Mx5FhS>gPQu<2U1K#!fum#^zfZN|~qzCGwR5r{TtXGBkI zQ#`wbAVEI%-G8k3M0zUnM!=h$OjF7ykb3jfM>n|u1wL1XezNbE}D&Xq4cX;kOymyuglLy_L zXZzhBgE)~@xp(%5Hll)5o0I;UcIvYlf=bZtX$Q! z?OAy|NJVzA&UShvL4iRnPIc#gz*PMG+ZrmVPwyZVCPHkWqPO>bcJJuwWL*{b zl&O(|Q$EH#NFi@KTMOpA+9glE*Jn~K1}!+jtY)u2%v2`5T@V8*fIK4&@k8PinOz|%5C(sA*H{Rdf-jt!Pnp9yY(BAkAr0^@= zBSl_h8gJLsJ@io9PQ$+Y!mwMQmanwvwNr9M-W`ba^hz7i7r{pcr4ytSp;H}Ig?)Jf zfouzrd=X9$N`8!%t6(T4UM2_D%flSPYlInDu|ZR9OF;p1!Hq?4ayd3RSlTz>4_1Ig zL>DOm&#r&3SfRZ^rRke);CQG3Dr>EzCy~R*m9~ZI&`WovIq!h34FIKE*t#b=1e|=k zV0nie8zvOmGk&`XLGgr6?tg2s%9I}WtIYwhHWF+Ms^#;lcThxb<9sH%yxP>5!9U9c zdXOM7JL$sAh9_sQQ=r=MNcmTKu9i>6b^S7Ce`Wd?KL^Rv9kW>1z8JLCgMlqPtRnYK zTumZ9YUm}XTdx|eir5Fqu`&V!QH)^AnLn_CT@#C<+tI>m^-7J0Mz06fv?Lil08Dy} zi;HVv7tgz+sG{6Dw+|z^iES5KZ#<#*s3f)swkct>!D-i@ zN^3s_0;@~uLW1lkg~T+%2C1GsGl9+n(J--RQdo?w zZ-^fqgCdK;^IQ{Sj@A69X3tLY>pYwp)TR2;)USqtF-Ty#;Muzn=S$B*_?NYB;iLr? zB7$Y0X?b)aGe)RKb!!3CPN@C%{Ue$4yd&A6_&ARxl7w z!fB5|yR4IL#f*srsj4t&YWe4<@XDZw9Og%K_{8!{m5}p;^}bifGUL&1Iu5L+649D_ zkut27O3XE@IVhFXt%d(gVlb$)9jXx3*4<9UV0 zJ=9IGU^9NoVKdqoS`~0?8rRqzXtFX;SW=0Q`i!Z3(uCO#mV$$|HU2#@nridEdoup8 z5bZgwK?MM>tezlgU_N%|4~#ad%uRpj-|?t&8&mLaRgidShPCLR zTYJn#027L|tu7b+r&QHJC0c2WnAw^-(X!^}Td3M6LgW zusd~n=;#3-Qsf!&XZOwt(Pt`?+VJ*~%3?2zvUo9L{(}TgqYQg{`wS&4NgffAr)dBJ zl>9kT$`IR9KFxkpU0{mQI|`ll{v0*Aw%eLED? zyHgCxwzRf}mjFv-3k)C0+36{Vvw`4;ze9MPoj&F{^PYm5*17PBFI&AF!uf{A1tm|S z(Dv%hh@9NiR|Ccq`L(zHm;5m*rIDiNJp5rDi-85{gG9^}{+V4Ittwwz>W z8hf}jTJ7Zkq6yU1)lI7ZP!9LR0Psd4_w;*MyOy`OEDi~W?Vu?SM=v|e{78z;GD+$$ zbz}~Dm}{rhygzvXfAu;EOnUCGV4%tcUS$d)DBN;2=q32n-r`NoLwGzWERRW7rK@4#>u=37WKl=qysW!enX*&sr{$}fzqJuRmHK|F5 zf%`n-efFP*?M7wEn`0bC<&6GpzAoLKN1~izPnc3{%G2VHorUq>52Dfg-pk2-(mi`U zJ`(@*F&st{xmphteaqeNJwHJbO}~L(YrIF?dic?!M;AP^5ok*Q@)&-Zmxhdi{$K!n z6%H2dgzY3ujwv!b$&K5*u?6%Sd?fu7;8D!hVn87OL^kOb=v-u)SF_dNmtcXK>`QgV z_CCHI8>y7Y(3H2u&xGRmi*5*H-B9qNByZ0HeI$&iv%7HB1tmU*sX5Fy);v#F(u0B) z?{3dtfERxrr|LHF`agg`4gAr+GOl(mDQXqlV|9};y1a6!7*zdJtf*`Cwh)C7f`xVF zK*k^^CFxBA3zCt@wBQlQKP>>!Nm-6J$;{o%h%~$(>lV_mg?A78?zn=d4}bZqvm^>L(z6MqL{z>QvlYazXU+2~!|*iUi$c=niNcqFy&A zlXXlNaMTxz4v=bo1A1S5eUE}78^6bx4fXuHmD{U*NuRr$ zv$KxRTJM^#lQSq-s%?^RHJ`|m?qkDfs#TaAp#s2SYi*jvs65p`qCZS=}NN>-XSp;S~h~G?53Jxt$Ts^OridT76pWHQ=x?=KUtq^ zILQu$smo&B9_LG@pU+ITp7LSY^cK$3x+dzX5;2=P)Dq?gs{i;`2mg2_#3Dl4dCt| zJX)LCT2%Q_3_a!o>%l;LkB{t zKl4>4#$}?>VVkXEV;y|dhsVO_)X6~#7u^415bXP)3H2G@8DS!1%E5~TomVoj`u+Pz z^|uc&#?_~4_R5{?Wgz5I3gksqXziZNPJ@{!f~1&hqJT(q-ou#rx4S-DwWl!6Jybkw zfyo#v4h>N--5np2^8N8QL(Sgm$LL*{(b|o!R*fw!Ejov9$16pMTtUq5@2^k-Sx8@3 z>>A`*dNRd4EAxW3!#<4{X}RZ*T45eYUHs?R+1tw0NB0mU4=a!{S6XC4L~K%2QZ)8& zVqE_usH;m~%*gB-^i z|D^sXij+r&;OUe}6on?EIMB+5_GfBr@ZNRV>J$HcX)Mgi@beiK+ju*-q?YcSUX1-0 zRmInwsTO%rtYMW(AoZH2zz~aGSc>&5djHDS)pbnH5_pfz+H98~-Z`Lnx+tXT!)DlA zZ?O08z2-mW3N~bFjhY45AO3^QX-w%QBJ2 zu3cZb7E%x8l@FP9;It)Tx9R&n$oqijyY+M|rkF?f5t;zTMZDFr8DPAg1|+ZL;zDUM*$cxKqov zY>$YH^a6Pt@}Ko)%n)oVr6dFfEel1ubrNYEXEl3x^?Z;ob16sfVl3ed{>O~CUxfMl zAn=&KZuK_h8o1&DzBfBY{@yI{&QGu*dmUn5002E3<@{`@|DyRCEw83>i=YkyU;ex77GtUrpR3VWzQ%>D7QRr*^_R zNqFbq`^;nJ&E;fUt0Xum&_N2K0)8M}X_9%-Z{c@Mb$3AJuYgdM2zcA=6ef-50X{O2 z>nH)-379I>!QT;YDzGFT6;(=)W`)YY&2PqI`p53kH9{s^MQSVMuyD3@DF`Q_x~{GX zs3sZSd%`|IligF>ePbM{X#K)!Ji}A&D4VInbWyP_Tcy14M55O#jCe^69%80rzWmR! zi9rWjsZH}&J{y57Gh*z_S7WT5Cb%B51cCj=rluxE(H544@ycl6_nM-d*V;8@Gd|A+ z;{8r2T`#{rQHg$oGfJ1V>LdMe%7aj?+r`NtT^2enGXN!gYK)=ivfqdKJ%&!Hkl6S{O;`Tb`kTQ&`4&0vI}W5#M0ag zx+p5c3ExyA&T2-^w;p~pQ#8r#5-`NwTjP!PzadMVNYTlnuH-x0ofW*iJ{qE$t2FBq z=2w3ZJ`rUBLfwjj^VNS7^z4Pf-umY&$q`todb-nG!-2$S3!F}_mx|!uYUDT&Bze6Y4vv@POTC3j3nA5E(xfJ1+Rw;J*J0uL1Tvp1^+S=K*HpL5R2ef>7RnQq zY>C{jMz&lF8ybYa%<#U$f?kubz15_r3C5=R-SH9gsCA#W+o@N8IfKRR!-raMZUe3r zN?D|SFq!P}%3L*W@XA)*?Wu$DTqPls(MSgkQQ;>lzw`L}F9Fx7+l=dPR8lvcA={x0 z@fY5wf4SM^)S&MyZ{a;W1i#J0o=PliTN+~RGLO9MlUv#DavnMgy9cee?0U6n&+oL< z5Zse)>439vw5=!TQM!|V>Z@5&6W*WzjAGJQCv5in3Gi4Tt?kbLyM)j7fwF@pxai}O#k@F9_X68Y+IFV8Krpt4Z~f?EG)}eS zr&o$Oa}zIZh1?$>$1R?ZJrL3Z6Z0we7xz-7={2z5}H zl@R*^C|{`5MCgGy)Se)W;%<4SHBL7g>kZr}eMpMT1ne5a|2;=1$;GAecW0+>3#la^ zj8_bf3-SBNADcbr#ZVY7r6N&&6>`SQoVyZ3MQFK!vL=i)0R~s%5V8tn@%cb)xNMcg zHYSwPr2Ga|%6w)sv5n(SFp2nrA)M*6OyzV0$n^ z=s#pSl!=0@_jd8967zYb8I6PL`ZIo&R8>AhdMgpT5Vg-5wZ zBAiwdzu3M>zv-%DO2JY^)tTo-S;Cjmmw{!+ZR@#e$f~BILg6lZsIR%Y$l(REm5^q&>Cn#f+i>SuT1;7-%BP;(bhJ@>=2FtwO!zjc_;p)i0go6>t=!6I7=(kI~cx zS7Ph0oz@%-AUy_rbP*KvT02(16&}OY_i;z~d=><3tZq`%XS~!*al@E0%f;`%+T)?S z?V!=12T{LjOLsm;3e*!p-1diK0fK}O~;{vS7s#T&pj_=|(u(e>3 z>3b>@+(-Sn`d1)XC70P^DpXMHC$9NE$O=7+cljv;;_6KTQO2tRW9BAyb>f$A2@W;b zU%WlDU=UR|ko2G(DMhf_@-}=B!1r<%O!ZPtYiji)VWh)9CyL`TSQaAqUCqY&Wz=#y z2E9&~Y5N%sI;jZ(iV3;H#+9cmIKf8Hz@PK@zck~MG}9Cev^eWy4wGU-UnwD^afC3e zV+0(;3l0lR24gc{CF{}gW$H3=2cY4&i!>6$O6 z=k9x2D(v(z`)j2B%1m~EtRgAS`i^A52c?$JmOfiQR07TQ5ft-ogp9%cXN@7n5~)(c zu_^qa!scN)PC^t~3+Q|%AcI7i)9}M>=dVI;J@?b1sV6elgC$(EYpXJ1j~}kC#OCpf zm08xdkC0o&KgfV&@RrgrrE+(bcb2VwkTDT8o}kPBp2|m+@2j<|Lm)a)tevA@O;-U$ zUDwaiu^e_Us4B6@L_|gP09A74>5E#1+5I%H0(z^>TtW`G2lYs(j#VeFyL2O*&Xq4bYV#*0w(RAce0j0BF)(*pGQxplW-R*Rptmx((2Emmq>oExVd$YLOT5l+H%c6R z^N-51mP7K{hJh<=qQ88!j?8fxIwMv?=Sq%RIg#=L#qH<6@ImUl&-&brhW(kQ4$pQ= zAL*z`5`T0ICJ>PPI1<%*o(+QSq)RhjmGs{Oe^BgexLHBy#tEFHXenN{3;?HB?54`I zAHfLxxLU71+lMN&bvW)?=T=jrzarrov?0F~exi*{Q=B9}sn9#Z|G4UZdOORnDBG?N z4~Q^?(kU&S(ny2k(9Iwr5)#rN(uj0-Hw=iBoMU$Yg@ zm?$SE{C6P#UkTY*aRhcfI-ni^F}cJopbImpdIMQ^R1K z{4W!4FI2UFNtbZ1_X_&A!@+YA(7~0e>Z30r-`^@HQDa&ZAP|gZOM=O3s^9V9)Ee*v zN(lHUY?p5q=jLh_R4?sT&>xwr1P5&9jQL>vD4h(doEQ0QX_UsoHSm7*(H?mAFHDFH zP64Wa13(Ph;~yEHRN#>S7a=1JVS6?)Yf>T?(H?%EXaQ-%YRPe`LQ!f zPZ_XxboAj9i-b-pO7V3mXm>uA;!W~oB+*(~C0uS(~)N+?vIU* z{-tYEZ23n3uq9*|%BWIKqnr>2U>0COIR)w&3a_oYK9~U9d~t}f zVatUw(E2C(aWI6UxA*tLw$uRpCbgnmWtt*wTV+OCcQ>~p{VJ0c7f`Qg!b%anh6klh zk)55==pCb0wJ^A|hV7?cnY7ydoA|t}L-8}I`|@DP<3L8NYO!?A8$ak+;cexWh!GD) zOiS~Ps+LJ6HooYQ<*BhrtjXe$*yVs2fH7d=t*?klg!Qn};{pbD;qkJ2^~CLe4S2Kc zF>k9=ELBN43MDSZs#q$_5G@B-1jC>AhaUFeG()8bdLXUzlUlQNzABxL5 zkj}Xu0^(CZ`CHMVS8a2X8Rrl^@>uV(UuviTrU7G6T%i3DHG)4ciFc{t5sZ~o1`1;h z!gIU%d#Lai6dP7>JsGYM&6M6c#oh@ZT-L7xY#t7n33iU5Q;s1vkr?ed`z2T7|MrAq zQWY5@Vz!8YrS}K4N83*lb8okGdsuwPO#h+Xh2=h zS6!X%j{vrgI=_q}&R3Iz6*kwr8mTjR?%r#KLg2oq+j)AfR@_teXX>~LUqL&m`Zho%<_$C? zHPn2kis}(-R3IMFV$ycL#4YlElI05O6+s~(=DLSzG{J~IQd1wENDYH|aGEJkYeY3h zfq9H8^dS5+K0f{yD6cmqz%pb2(GX-vOS*r4o=gysiR)ne`nu~SsjeP&#C2&?)4~d% zl@5T*dSLEy6()7pnb7udcPx1ze(X6$0VZRAUS6d0{Ln7dS*$5vLW+VHpk<$U<&zWP zbUbczR#0BbUfK9|A#?5aXK&3RfnU_5>u|$iG3XSn{Y5_4Q0QDy@^8Vw$-_0<>T?v8 zXC1ITa7!GdD4y(%@xR~oH~9{*>8FsvLSCw!&)a9751^|@9*m}Jqxub8_hLX;g=Dtc z_tWK!-B*B0;f+@mhM>Y&H?ksAQc`4HUC-RapESFOpyj<;5=N)*@6|gLeR0_Q-w!n9mB_-Mu`z^asL1(LLy;F+KmZR3#0i&L?4!%aj~^QW+@cH3 z{}5AUmB2dQ@pB}T6xkjE{GFqYEABU-e^|~|8keOgPrGqX2Frn&6+G@44>rUHj5;d) zOp;q(WlI818Do8+AsX3;_Pw6U^@G(0mRiCE%~e`%R*sKaf7cA9OcSi>Qh3tGJEd?L zXP^|+rwCwPV;(6$%t(rL7>Z?^jA9^)N~gjEkZ8|hwJ;(cz}`}v3fa9TPK!jn!;F8dI7DDp$>ghaXLy+Q#rHyDKh=v^OP}Yry5DJHnFO%TE5CMh*8zL)hehoI zxVV4)7x*R$Uk18>4EO+dfq2l~Zcr%{2kQyMi~MigN}T&}yNhd83%7!&xPll7u9u)$ z{92c#=!Z965T1ybn2#5@5HRECV%l?6zu?SGN7E!MddL66m^-4HV}uco^27Y$nwLHA z+{C@tb@a%C3#(MWjtvE^?f52LB?L(-At&ImAb`ZHf*|YkK|8}@kRaKa`wt+u|7Ll# zon?!wi(gDDjlSdp4EJLsVI4=S83|{lW#&N;0pOKJof;S}^MHASqBgkf3>t1FZ#{w1 zJq61EOG-1asEsC7`FY%g)Pl0AnP>t|TVer{L2drV^-*QYr{;y8SP0s)Q4=WWMj zhkbb+_V3?w+<kdh=dKv#lDxAX`0Cg8qGa#~>~eK))C z8n?2ycw;pB3%>0Nt2I_M#sDc&y~{ZHJ4ARgK9Jk|P!JIS+^{y`WY~-$ubR!itYI1z zcxW0o%JQ>BU(w!LOW7Wl;=3a9IeJt z|BwVi3No^a$J3sw@}qy%HDQZ~NP!uI|9kL|V*j|;0!_pavWFDZOV+MNJsfNS>5@W6 zEdI-!jR;wbAnRnO1}&vHdFCS%CSwY7r-3HV^n#HmT^dURN4 z>lde3d$;*IRvGf41-1~zQCKD`X{}55K33J|!C7xc`1`>;IL6olkwkI8I7)4ig#lM8 zJ2>M0=TA=|6If6VZ*2vltTk9tIn1N@e*AO$M6lS=3_N7q`%TjJJy&DWoLyqT`1OO{ zU&hzmBWozuTmu_7+?)D(w#jJ5RAGalVQEHLThf-r3!|1gk9hFyL4 zIQF~nXunyhl_GjpZYhSZh^;+hKH8*p>gHjsd+Rz1khtF~-!Id-0ZXf{2|KK=uBIQf z`==LS>O#91nKXB^09cu4jQU!QY?_Q3{8fcV2x>Zraiu&A0b~!rN7gkoG=ne#rKJX- z!g!sIsYETw2FO2`4n7&h<@@Mb)#hZ;T}X_JvKE!I%+mC> zYNvjUU_4&e!Tap#%xST8(2MSmf8Iy!_isZ2;whsz@Nanc?B!66Q}+|0<+Zsv52AoJ zm9j-|2C2rS7{O3G{9-JYCbYiaoc}Gm@E53yr%J{ zlqnRxA&Y`o?4^UO1H9P>&`=jhkS`W#{Z<7KRJb*KZngXzr3F*ZmB_y90TCGMV7pUi zBEZZAP58JqP*@dE3kZdRA5*Vih(t1s0Wnx-O@M|JvG3a0PnV{wznA-gDH{Y(5OaV; z1`&A0yBKNa-=>!he+K2)y(qo7%Ajav#UV$yNw6?G>+s?x>0W_h%X%j`ZL+^{u&-yu znk}E@|M)#WK0aQW>DYF~3=|4ws3uA2QGR;#E;&5Ug^HV4W*ter`2PXPG)|6oc4Z*l zE17-a)vZKvHEpTMfju0yKB+8~0Vz2uqnI4y-k{kKpT2-Y>B21G4aYY=VA~r(DqXq9 z^VM72$G{ktlmv7?FDU*?yLec*P4bc^!6n(MfWd?{wm<~T+g*~h?vcc@K1dh&sBy25 z`-U$&7(FSF4=+S&04%2y)B7FM)w}i2xNQlF41plNpfHI9a{F*-Y!^kTpDgj8gRW%p z(pE{!{LQy6UV3S|NYY@u{KxPK7>Oi3-6sMRl0f2HsLX9R8VR1pJsyW&esFypXQ)a6 z%Xh)>u8i`!GBmQ`Zy!|NbJwc9eZ}P0Yp(utW@XAa_O*w=JdAn`Ei3 zz>4;z=jhd__~mTt5K{AVH@*xRsL?B%dDD9`u4x&{Uq4$RlRu6cfGE?i8m)1`MH92% z001n-V~C<)Ep9O0tEFH|0b2Cuu))HR7XO{R9iHH7bQFOP**86`(lthQ?*a-+I2w6B zy11NPB3UO)>mlaBecmQ6b_7Mvt{gHn=WIfO<_=!FU}W`O6=gYt7(vDSEPDZYJSzYg zw5rXBh3I^8QtQ!VtWGyOGy7w9Us5I3(Ea|VN@e@!xl4S(=2IP*2?_!l=!ItZ68m7% z5TnI*4K_I8zW|w(K!dEFpP&06v=*E|&V#?#cD%xUgI-xMI6OL@D5&&pqu@|Wld(Ct zlcji1@lz_t3U;|dM00)}t$cqt1h<=Z#T-(ppUMW*-CXQ(K4_2*px7dZ$_MYjhrdfq z;sxg~3S>wo%o1V^_&_RC=SDgXumj2b7dpDj`5H2wq}2e)`!gzfY*a#h7O*UIJel)0iWvw+BWBw9nQpG~@ zK$k?KH945tCCG$4Dg^P`;6bm97}VU+epf@L_o1Mu`GX6*Iy-PT)bj_LdW+}J;dCJy zK<*;dR9pu`1A}pd7N$a~%@ifXPBzVsr-nb6;LGK-T#7TL5LMqFl)OLbV?IB7`)K@c z*MI;1Edc4b>*cEVaVNNJw6P=J2b;|Y5W8##EuaO+ z6Un)=TDoob$Jc)UaCp5N9v(hG3-wWv{H308Y%70kd|gE-{sRVqOxxD?f_)7m6uI%6 zLZpVAv-Eg_1HD3OLSzS&BG$HaFFPwO>s={!MJOUK9* zlLt@$Ts-R!c}#(uCpWgdo?qfs$x<|s@-AB+5=eUj?u6ccz;AoF04Zaw*+n#V6~E$T zWmtEBWp%ZB*>=f&@;zCZ3u^c?I5_yF^)m`LT5A^Q5>9G$-_X#I@<8Oq$AlkJ$FDc} zKxykOxC(q41h`1fpyU~VT7K-zDKs;mIyPB1t4KwoLeJcKY(xZtM}qaZ-H3}665_fk zyIS+cWXFX(mSAgD;$m5J48JIvW1=t?BBfuZ%ZcbI+zRm;cYk{BR;dL8o)rfd*C>*+ z7$#H~xcA@Ndt@nn zBzn|nuFzyeO;;3dKgFsp+4MYwB72!j+@apE0`TA2S4eK^7`av%trgfaoGGUipUehV zj_-=}mBh;QIm{nV zz!d*GNl6Ut7ka0z-!^Ho_;pD&Zot=GK$cEp%l;2{gr*PIb4VZe<_I|hPO+^wWGpip zD5OweHI@uZE=)yZZg_!H2>w>VXS-wSk{8q3eV1T+L9c7&qLR~0!m|wJpz3o@(z^bH zK|N2>=Ums)Vx+8QwC8p437aP7=N>55jpr^%NJ-!2SM=Z)B_c9~p_>2{nA_dmUE?B& zlv}%e9rruulV=86Zg2!YL<$ImU_mpX5C_s)^HW625XrH@U%Vamuix3Yi}$IB=-pH#l9MPWmz!Mm zK~{kK4#2S-!Ke`zLW{s5NGOsGw-3B1c}nGgOV;a5i6XV_Y2xYQ<74aNbGr;)|D)UG zU5WqB09io3^v$e01Y}nR9vzNB2nf&$hQiyhrgs>CPk|wg#|2)#T<|sl!1I?nGg6zJ z%dhB@CXyQxfvY}Uu^6}^J@~vG$~@xM&lHZ;gV17)DEI=}X#-~SR9#V9!ZXf-{cWdW zRSEqP_DdY_A-?AAcsxq-P(wRb1P)s=mPkR_s;fSfEcp33ETL&CeTHf&>I}JTyAiHT&>-N;qmc9@7VEL9$C05tBwOHUb%0gqDp3 zIL9})x3^z|I$-hoYRv!Mm*%Qp;r{yW*#F@#67w|y;V15(*4N@75lu&|uT?=bVEGLat=kC_5;Z zp4JJ4TekoaB^9I|-Z0d82u`FuZQ8Ut__#I~M@TR!6E^Rhm1ZOW>B-ssbkKZ_v~A?9 zbKhuUK+lSzb6E_{TnIf~ zto`2-^L~9--lC`{rJz|9NE_DuLZ{x4v(fL)%hk)PnMYJK5_^~)GG2MG@6uH6vsO~5 zwD=TmLEbgkx!Cwxf4kX12}T|p8=Ff`LnC>IyreoJ!$d?s01`_d^qZFEs!ZG43@eaC zQSX^pxP|$oWrYBL=7?TFU!-H}#jGgM?oz=7|Mn+RfX9a94es#%Yg<$Kx%DfQKr(iF zT(`uas!|i~qNTI}?0gAAxrtcp;I3wH-SXX)*W7-aoBv+s^{m_5NA#=+m<1<5!N2IR zU0?0y`j2Q(PwnyI{>!r5trxFwhe9fkZz@1zF$aVx^@6>J3G&g5tQpwyFxK>W9G{0K z*Apq1Sa*ETiA_&SOABoH%t{U5m@RIQ4+$2gNS)o=x106IWTy>)9i0FWP{OEct_pbH zYxkxQmbnA>Wk>Rka#6dGda(lRPeI{@Lr^c`TrcVPSrK6R<|ozYlyMs!{GR7&cHa7N+TX9}?B-V22>x&DGS4ZiS(KWRLIGCShA(-p%@39<4TLpO2*UnroC{EmRXkt$Isu3%gK3EtMq zSCJ4>2*i06q8 zKZ9R+;`1PV7Uy^tx;Vi+Y(i&fZ_9$Ws`F|1pX9tHi@ow;R)oj8e!g zl3N?%Z7q}=O46l%k1ev_?U(Ob%xOUWYYHDK^u{xc;4B`3$8=LFg6u}^g7_83I}%95 z_E!8@-qJyOl**!ye#z~Q3;cWKvp#1^IZdJvvpu0q)kPAw=~vn4YAKE3g4rIC5Ly`J zI1uEB0CM^Vbd*Vv8YDi1a_nptnI^QtD=66D2Y46I`Y1$zeHXm@M|*qLN>DnVwOESi zkmDOagR&VzaMyf|JmPM{37M^`jGB0{*}W*4cS?HtC7B9}*b_Y&a4sJ`?Rw!x+2=D>9cw@G90Ou(B zzyqGQ>3xDTWdR@f^-_j*Mo~t_pHi8vvZT3D zhj0-<={(ytq4?l2=LX$2(sg;g-1ZjW<<&~i8r(i7L18!B%V|lxZ6dIt3;OFz6Uzcp zK(*PDUvR6ClIlAbpzS%fpm-7gSBs5x^ZEw#`2H?vWqYN<7}LwId*cj3`!5F3M?J$P z4XCS6nPK!F%LYXLMK ziy~{QS8Lk~9-eCO@6%4vw(><5piPq%s z@bE3tFrEX8nncKcaT~bh0{NF0l!VTen4cpcXljsA!2>b z7T^wJ;T?&au99>h9Al2qQQQ?Vnw!yr8O;?E$SSeWGF*-0Gd|&SmLqVc9Fi~WynG@z zmT^oq7@S(^_3C+2F{RYxLEX^lX-!}Q{`!*QpB7d7k#5y&C;Qq3e$|$#a~08r^GEv7 z%3C9Jyn-3qbhUqq&klbw5@wXVrBTCU+UiwE;Wy5~pfI9DxD9?ungl)@nJzTXgZ;(S z7vAIkgiCAzsjQECdxf=WkDJ3s`5l$B(SGCltXkSkhH`PSI@B~OSz%Czw~$SnW$ zY9ryNhN*>X7)E1pzis%{xw*LytZK<^DoUyH@t-8NTnI0_8HXOd8H`KD`dC$LV(YY)h{aWqO8ZjJ9GCaLF5EE(D-} zjBcfe(e3tGLk#IRSdkY&5qaJ*32gY>d?Sg+vYiSd#;(=l_GwL%PCHWLFZ0vHwmJu~ zWT)iUh?vHr6PSK>@5Wz+rZ97>SSSs}kxZ&QKdfs%OF)D-PF)AJ{hW4eOYquc`kXu~ zm`3B#_@%Qsex`%TF*~K5uo~hjdSV?(Z$rxh7YT8b*>nGG1aV5%(qip>b)c9aOi*&M zzHvy_d=r_#)V}MLQ@rK2*oBrMIVb%!6v}0{{MRW^2p^#oI@Mtx6MwEKi=sZ0Z;>mP z@=wgeZwovm@0=3xu|%!Gx0HRFcxajgt%bbumSahM8E+~~sW!qEj+et+%nB4*Pdq!R z1L@hBJgJw3HI73Z=&h9x{%R3!79j!7Yrd!Bb7x^zrM){*`;&9`yc zjOseNlBJUjGq*$b)JDxU=gOH-MI@vUHuaz>`u6Li1`LVrDtTsMoNi&9SGEeOzOOJ8 zKF8!ZQp|b@a0Chlu@db`{fGCqCEMHHhyNXgnGf}J&N&nDLUjpa_*|U#s%y=iy9oyAEM`Qmsssx zT^CElI4O9x1QQZjstBvt{XeKWi^d^JJ8gD1#fceUPwNPc_oxOegSSozn1s-o=yp~m znET659)CNxY16T8{M37{@yRALEh$N&`)n@cnB`+rts+17q+-T{{pks-nbTzP1E00$ zNyOpsjrd6VMh?F^;ql`un$TNr4;)r_hJ~$wJO4%5fF{qc;J24qIx1?YoX=-d6PZSv zO31C$lHgBignC;1Rf4*2aF0C~lPFIHsSJDs-DQU*?kJO_Eh=biChynp*z^8VSM{#T zpcjODPPn9RbJ#g`Ez!qnJ86U8hViiwQxc1_Nlb{eFnp3KKn2Z`9y7o}TJ`KpDZw92 z+~SdLHKv-;!abWoW$_P-CQMqz8wuqf@-Fi96L-^6$@I-zRErkI%J^pn_%}ze6BEuR zv?QBekaLUF6kKU|{9uAZ5WeLkW&La&+_Gk%>mi3kcGEg$GqekM01QWBi4 zde@6d8%bFUr8#aY>^@ML+SobXoljewm!+_&nZ-3K`2&CNpICty%_x0p(-8GwZ>z3N zK3H_hrk#ss&>VlB+0#pTdUjp(@=;4pah(IE19J`9 zp5W;8Jfu91iC9q$FF`DK?vW5aQ^11aIiZRn$yb)!|H^NFwJJ$XLKl?E!&l)j;Z6IFyPm3=FteW_>C{68Iz@4f`Te=) zzLWNMtT>4=ufiCLNd_ZgvCvo>&xfhtd&XI17Y zsPDw>2DwK%ED))daW#{MobZg(-NEJ94pz)3Wn%EV1b4&^4`S>Io1a4Xwp9WHxB8;5 z-ksjoeA?+x`_2LUJV|)Qpy(H_%d*hY_L}#EoQ~~&2h8d=X8ru4>F8=7&dDFIxNm)! zO&X1+t%$k1em4?!_JL8khc<`6WGal!(XULC;rg{?r|L7f6(XI~Q>;xaC>x`jcUDL% zgdayc{p{9({#I=4?{gi(*@Bgu8E*A<%a?LlDveX3VO*J%BhpIkrq`ZSbP>`+xqnw| z7jqsQQ=&JY(zLqZn7b(*haN^fA^uMkPJjB*>!W)7T;b5QC@xAd!t7LLs-JhnoC-`1 zGh1MjxI%_M_)qv%fAAl>cC#tx_`&U8Taa^eaoe2o;o$JfG)?#k?O4)}`W2F|a=|T! zC%0y%OLDuT`X_Jv#@28=`F5lqW`B#iX*m!pSze4}5HNN;(9{&IcahbuVPKNy(WVh8 z)voD(mToD`#J3^~G3!q}vV9R|M$O;e@>C{=cO}Yiqu%aYf|B#8? 0) then + util.PrecacheModel(dir) + end + return dir +end + +local function loadAttachments(dir) + dir = dir .. "/" + local File, Directory = file.Find(dir.."*", "LUA") + for k, v in ipairs(File) do + if (string.EndsWith(v, ".lua")) then + LoadAttachment(dir, v) + end + end + + for k, v in ipairs(Directory) do + loadAttachments(dir..v) + end +end + +loadAttachments("weapons/mg_base/modules/attachmentss") +Model = oldModel + +--check baseclass +local function checkBaseClassInAttachments() + for name, att in pairs(MW_ATTS) do + if (istable(name)) then + mw_utils.ErrorPrint("checkBaseClassInAttachments: You may have defined BaseClass twice! "..(name.Name || "error class")) + MW_ATTS[name] = nil + end + + if (name != "att_base") then + if (att.Base == nil) then + mw_utils.ErrorPrint("checkBaseClassInAttachments: "..name.." doesn't inherit from anything! This will cause problems...") + MW_ATTS[name] = nil + end + + if (att.Base == name) then + mw_utils.ErrorPrint("checkBaseClassInAttachments: You are inheriting from self (Base = myself)! This would freeze your game. ("..name..")") + MW_ATTS[name] = nil + end + + if (MW_ATTS[att.Base] == nil) then + mw_utils.ErrorPrint("checkBaseClassInAttachments: "..name.." is trying to inherit from missing attachment! ("..(att.Base || "missing class")..")") + MW_ATTS[name] = nil + end + end + end +end +checkBaseClassInAttachments() + +--inherit +local function inherit(current, base) + for k, v in pairs(base) do + if (!istable(v)) then + if (current[k] == nil) then + current[k] = v + end + else + if (current[k] == nil) then + current[k] = {} + end + inherit(current[k], v) + end + end +end + +function DoAttachmentInheritance(att) + local baseClass = MW_ATTS[att.Base] + while (baseClass != nil) do + inherit(att, baseClass) + baseClass = MW_ATTS[baseClass.Base] + end +end + +local function finishAttachments() + for name, att in pairs(MW_ATTS) do + DoAttachmentInheritance(att) + end +end +finishAttachments() \ No newline at end of file diff --git a/lua/autorun/mw_assets/favorites.lua b/lua/autorun/mw_assets/favorites.lua new file mode 100644 index 0000000..94f3805 --- /dev/null +++ b/lua/autorun/mw_assets/favorites.lua @@ -0,0 +1,10 @@ +AddCSLuaFile() + +if (CLIENT) then + MW_FAVORITES = {} + + --load favs + if (file.Exists("mwbase/favorites.json", "DATA")) then + MW_FAVORITES = util.JSONToTable(file.Read("mwbase/favorites.json", "DATA")) + end +end \ No newline at end of file diff --git a/lua/autorun/mw_assets/injectors.lua b/lua/autorun/mw_assets/injectors.lua new file mode 100644 index 0000000..f06c378 --- /dev/null +++ b/lua/autorun/mw_assets/injectors.lua @@ -0,0 +1,29 @@ +require("mw_utils") +AddCSLuaFile() + +MW_ATT_INJECTORS = {} + +local function loadInjectors(dir) + dir = dir .. "/" + local File, Directory = file.Find(dir.."*", "LUA") + for k, v in ipairs(File) do + if (string.EndsWith(v, ".lua")) then + INJECTOR = {} + + local name = string.Replace(v, ".lua", "") + if (mw_utils.CompileFile(dir..v)) then + + INJECTOR.ClassName = name + + if (!table.IsEmpty(INJECTOR)) then + MW_ATT_INJECTORS[name] = table.Copy(INJECTOR) + end + end + end + end + + for k, v in ipairs(Directory) do + loadInjectors(dir..v) + end +end +loadInjectors("weapons/mg_base/modules/injectors") \ No newline at end of file diff --git a/lua/autorun/mw_assets/presets.lua b/lua/autorun/mw_assets/presets.lua new file mode 100644 index 0000000..986a3a5 --- /dev/null +++ b/lua/autorun/mw_assets/presets.lua @@ -0,0 +1,68 @@ +require("mw_utils") +AddCSLuaFile() + +MW_PRESETS = {} + +local function loadPresets(dir) + dir = dir .. "/" + local File, Directory = file.Find(dir.."*", "LUA") + for k, v in ipairs(File) do + if (string.EndsWith(v, ".lua")) then + PRESET = {} + + local name = string.Replace(v, ".lua", "") + if (mw_utils.CompileFile(dir..v)) then + PRESET.ClassName = name + PRESET._bUserGenerated = false + + if (!table.IsEmpty(PRESET)) then + MW_PRESETS[name] = table.Copy(PRESET) + end + end + end + end + + for k, v in ipairs(Directory) do + loadPresets(dir..v) + end +end +loadPresets("weapons/mg_base/modules/presets") + +if (CLIENT) then + local function loadPresetsFromData(dir) + dir = dir .. "/" + local File, Directory = file.Find(dir.."*", "DATA") + for k, v in ipairs(File) do + if (string.EndsWith(v, ".json")) then + local name = string.Replace(v, ".json", "") + local preset = util.JSONToTable(file.Read(dir..v)) + + if (preset == nil || table.IsEmpty(preset)) then + continue + end + + if (preset.Name == nil || preset.SWEP == nil || preset.Attachments == nil) then + continue + end + + if (!isstring(preset.Name) || !isstring(preset.SWEP)) then + continue + end + + if (!istable(preset.Attachments)) then + continue + end + + preset.ClassName = name + preset._bUserGenerated = true + + MW_PRESETS[name] = table.Copy(preset) + end + end + + for k, v in ipairs(Directory) do + loadPresetsFromData(dir..v) + end + end + loadPresetsFromData("mwbase/presets") +end \ No newline at end of file diff --git a/lua/autorun/mw_assets/rigs.lua b/lua/autorun/mw_assets/rigs.lua new file mode 100644 index 0000000..08082d8 --- /dev/null +++ b/lua/autorun/mw_assets/rigs.lua @@ -0,0 +1,35 @@ +require("mw_utils") +AddCSLuaFile() + +MW_RIGS = {} +MW_GLOVES = {} + +local function loadRigs(dir) + dir = dir .. "/" + local File, Directory = file.Find(dir.."*", "LUA") + for k, v in ipairs(File) do + if (string.EndsWith(v, ".lua")) then + RIG = {} + GLOVE = {} + + local name = string.Replace(v, ".lua", "") + if (mw_utils.CompileFile(dir..v)) then + if (!table.IsEmpty(RIG)) then + MW_RIGS[name] = table.Copy(RIG) + end + + if (!table.IsEmpty(GLOVE)) then + MW_GLOVES[name] = table.Copy(GLOVE) + end + end + + RIG = nil + GLOVE = nil + end + end + + for k, v in ipairs(Directory) do + loadRigs(dir..v) + end +end +loadRigs("weapons/mg_base/modules/rigs") \ No newline at end of file diff --git a/lua/autorun/mw_loader.lua b/lua/autorun/mw_loader.lua new file mode 100644 index 0000000..717074f --- /dev/null +++ b/lua/autorun/mw_loader.lua @@ -0,0 +1,89 @@ +CreateConVar("mgbase_precacheatts", "0", FCVAR_ARCHIVE + FCVAR_REPLICATED, "Attachments limit.", 0, 1) +require("mw_utils") + +local function IncludeDir(dir) + dir = dir .. "/" + local File, Directory = file.Find(dir.."*", "LUA") + for k, v in ipairs(File) do + if string.EndsWith(v, ".lua") then + AddCSLuaFile(dir..v) + include(dir..v) + end + end + + for k, v in ipairs(Directory) do + IncludeDir(dir..v) + end +end + +CHAN_ATMO = 137 +CHAN_REFLECTION = 138 +CHAN_CASINGS = 139 +CHAN_TRIGGER = 140 +CHAN_MINIGUNFIRE = 141 +CHAN_MAGAZINEDROP = 142 +CHAN_WPNFOLEY = 143 + +IncludeDir("weapons/mg_base/modules/sounds") + +CUSTOMIZATION_COLOR_COMMON = Color(0, 220, 30, 255) +CUSTOMIZATION_COLOR_LEGENDARY = Color(255, 175, 0, 255) +CUSTOMIZATION_COLOR_EPIC = Color(255, 0, 150, 255) +CUSTOMIZATION_COLOR_RARE = Color(0, 175, 255, 255) + +SLOT_CONVERSIONS = -999 + +include("mw_assets/rigs.lua") +include("mw_assets/attachments.lua") +include("mw_assets/injectors.lua") +include("mw_assets/presets.lua") +include("mw_assets/favorites.lua") + +hook.Call("MW19_OnAssetsLoaded") + +hook.Add("PreRegisterSWEP", "MW19_PreRegisterSWEP", function(swep, class) + if (swep.Customization != nil) then + + --give our sweps their tracer names + if !swep.Bullet.TracerName then + if swep.SubCategory == "Shotguns" then + swep.Bullet.TracerName = "mgbase_tracer_slow" + elseif swep.SubCategory == "Sniper Rifles" then + swep.Bullet.TracerName = "mgbase_tracer_fast" + elseif swep.SubCategory == "Pistols" || swep.SubCategory == "Submachine Guns" then + swep.Bullet.TracerName = "mgbase_tracer_small" + else + swep.Bullet.TracerName = "mgbase_tracer" + end + end + + --check if we have missing attachments and if yes remove em + for slot, atts in pairs(swep.Customization) do + if (isstring(slot)) then --old sweps + mw_utils.ErrorPrint("PreRegisterSWEP: "..swep.Folder.." is using old base! SWEP will not show up in menu...") + return false --bye + end + + local newAtts = table.Copy(atts) + + for i, attClass in pairs(atts) do + if (!isstring(attClass)) then --old sweps + mw_utils.ErrorPrint("PreRegisterSWEP: "..swep.Folder.." is using old base! SWEP will not show up in menu...") + swep = {} + return false --bye + end + + if (MW_ATTS[attClass] == nil) then + mw_utils.ErrorPrint("PreRegisterSWEP: "..swep.Folder.." tried loading an attachment that doesn't exist ("..attClass..")!") + table.remove(newAtts, i) + end + end + + if (#newAtts <= 0) then + table.remove(swep.Customization, slot) + else + swep.Customization[slot] = newAtts + end + end + end +end) \ No newline at end of file diff --git a/lua/autorun/mw_ltl.lua b/lua/autorun/mw_ltl.lua new file mode 100644 index 0000000..2011c9f --- /dev/null +++ b/lua/autorun/mw_ltl.lua @@ -0,0 +1,52 @@ +-- Based on Zombie Survival Translation Library +-- https://github.com/JetBoom/zombiesurvival/blob/master/gamemodes/zombiesurvival/gamemode/sh_translate.lua + +MWBLTL = {} + +local Languages = {} +local Translations = {} +local AddingLanguage + +function MWBLTL.GetTranslations(short) + return Translations[short] || Translations["en"] +end + +function MWBLTL.AddLanguage(short, long) + Languages[short] = long + Translations[short] = Translations[short] or {} + AddingLanguage = short +end + +function MWBLTL.AddTranslation(id, text) + if (not AddingLanguage or not Translations[AddingLanguage]) then return end + + Translations[AddingLanguage][id] = text +end + +function MWBLTL.Get(id) + return MWBLTL.GetTranslations(GetConVar("gmod_language"):GetString())[id] +end + +function MWBLTL.LoadingServerFiles(path) + if (SERVER) then include(path) end +end + +function MWBLTL.LoadingClientFiles(path) + if (SERVER) then AddCSLuaFile(path) end + if (CLIENT) then include(path) end +end + +function MWBLTL.LoadingSharedFiles(path) + MWBLTL.LoadingServerFiles(path) + MWBLTL.LoadingClientFiles(path) +end + +local dir = "weapons/mg_base/modules" +for _, name in pairs(file.Find(dir.."/languages/*.lua", "LUA")) do + MWBLTL.LANGUAGE = {} + MWBLTL.LoadingSharedFiles(dir.."/languages/"..name) + for k, v in pairs(MWBLTL.LANGUAGE) do + MWBLTL.AddTranslation(k, v) + end + MWBLTL.LANGUAGE = nil +end \ No newline at end of file diff --git a/lua/autorun/mw_matproxy.lua b/lua/autorun/mw_matproxy.lua new file mode 100644 index 0000000..9fffc18 --- /dev/null +++ b/lua/autorun/mw_matproxy.lua @@ -0,0 +1,77 @@ +AddCSLuaFile() + +if SERVER then return end + +local lastPos = Vector() +local lastValue = 0 +local lerp = Lerp +matproxy.Add( { + name = "MwEnvMapTint", + + init = function(self, mat, values) + local color = {1, 1, 1} + + if (values.color != nil) then + color = string.Explode(" ", string.Replace(string.Replace(values.color, "[", ""), "]", "")) + end + + self.min = values.min || 0 + self.max = values.max || 1 + self.color = Vector(color[1], color[2], color[3]) + mat:SetTexture("$envmap", values.envmap || "viper/shared/envmaps/specularity_50") + end, + + bind = function(self, mat, ent) + if (!IsValid(ent)) then return end + + if (!lastPos:IsEqualTol(ent:GetPos(), 1)) then + local c = render.GetLightColor(ent:GetPos()) + lastValue = (c.x * 0.2126) + (c.y * 0.7152) + (c.z * 0.0722) + lastValue = math.min(lastValue * 2, 1) + lastPos = ent:GetPos() + end + + ent.m_MwEnvMapTint = lerp(10 * RealFrameTime(), ent.m_MwEnvMapTint || 0, lastValue) + mat:SetVector("$envmaptint", self.color * lerp(ent.m_MwEnvMapTint, self.min, self.max)) + end +}) + +matproxy.Add( { + name = "MwCamo", + + init = function(self, mat, values) + end, + + bind = function(self, mat, ent) + --[[if (!IsValid(ent)) then return end + + mat:SetInt("$detailblendmode", 0) + mat:SetFloat("$detailblendfactor", 0) + + if (ent.mw_Camo == nil || ent.mw_Camo == "") then return end + + mat:SetInt("$detailblendmode", 4) + mat:SetFloat("$detailblendfactor", 1) + mat:SetTexture("$detail", ent.mw_Camo)]] + end +}) + +matproxy.Add( { + name = "MwSight", + + init = function(self, mat, values) + end, + + bind = function(self, mat, ent) + if (!IsValid(ent)) then return end + + if (ent.mw_Aim == nil) then + mat:SetInt("$cloakpassenabled", 0) + mat:SetFloat("$cloakfactor", 0) + else + mat:SetInt("$cloakpassenabled", 1) + mat:SetFloat("$cloakfactor", math.Round(ent.mw_Aim)) + end + end +}) + diff --git a/lua/effects/mwb_shelleject.lua b/lua/effects/mwb_shelleject.lua new file mode 100644 index 0000000..3cf7660 --- /dev/null +++ b/lua/effects/mwb_shelleject.lua @@ -0,0 +1,89 @@ +AddCSLuaFile() + +MW19_FPSHELLS = {} + +function EFFECT:Init(data) + self:SetOwner(data:GetEntity()) + self:SetModel(self.Model) + self:SetAngles(data:GetAngles()) + + local pos = data:GetOrigin() + pos:Add(self:GetAngles():Forward() * (self.Offset.y + self:GetModelRadius())) + pos:Add(self:GetAngles():Right() * self.Offset.x) + pos:Add(self:GetAngles():Up() * self.Offset.z) + self:SetPos(pos) + + self:SetModelScale(self.Scale) + + self.m_Velocity = self:GetAngles():Forward() + self.m_Velocity:Mul(self.Force * math.Rand(0.9, 1.3)) + self.m_Velocity:Add(data:GetNormal() * data:GetMagnitude()) + + self.m_NextDeath = CurTime() + 1 + self.m_LastPos = self:GetPos() + self.m_NextPos = self:GetPos() + + if (data:GetFlags() == 1) then + self:SetNoDraw(true) + self:GetOwner().m_Shells[self] = true + end + + self.m_Timestep = self:GetDeltaTime() +end + +function EFFECT:EmitSurfaceSound(tr) + self:EmitSound(self.Sounds[tr.MatType] || self.Sounds.Default) +end + +function EFFECT:OnImpact(tr) + self:EmitSurfaceSound(tr) + self.m_Velocity:Add(tr.HitNormal * (self.m_Velocity:Length() * 1.15)) + + if (tr.MatType == "Water") then + local data = EffectData() + data:SetOrigin(self:GetPos()) + data:SetScale(1) + util.Effect("waterripple", data) + end +end + +function EFFECT:GetDeltaTime() + return 1 / 10 +end + +function EFFECT:Think() + --Collisions + while (self.m_Timestep >= self:GetDeltaTime()) do + self.m_Velocity:SetUnpacked(self.m_Velocity.x, self.m_Velocity.y, self.m_Velocity.z - (400 * self:GetDeltaTime())) + + local tr = util.TraceLine({ + start = self.m_LastPos, + endpos = self.m_NextPos + (self.m_Velocity * self:GetDeltaTime()), + mask = MASK_BLOCKLOS + }) + + if (bit.band(util.PointContents(tr.HitPos), CONTENTS_WATER) == CONTENTS_WATER) then + tr.MatType = "Water" + self:OnImpact(tr) + return false + end + + if (tr.Hit) then + self:OnImpact(tr) + end + + self.m_LastPos = self.m_NextPos * 1 + self.m_NextPos = tr.HitPos + + self.m_Timestep = self.m_Timestep - self:GetDeltaTime() + end + + self.m_Timestep = self.m_Timestep + FrameTime() + + --Interpolation + local delta = self.m_Timestep / self:GetDeltaTime() + self:SetAngles(AngleRand()) + self:SetPos(LerpVector(delta, self.m_LastPos, self.m_NextPos)) + + return CurTime() < self.m_NextDeath +end \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_127.lua b/lua/effects/mwb_shelleject_127.lua new file mode 100644 index 0000000..3e774f9 --- /dev/null +++ b/lua/effects/mwb_shelleject_127.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/vfx_rifle_shell_lod0.mdl") +EFFECT.Scale = 1 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.308.cement"), + Water = Sound("MW_Casings.308.water"), + [MAT_DIRT] = Sound("MW_Casings.308.dirt"), + [MAT_GLASS] = Sound("MW_Casings.308.glass"), + [MAT_TILE] = Sound("MW_Casings.308.glass"), + [MAT_GRASS] = Sound("MW_Casings.308.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.308.grass"), + [MAT_SLOSH] = Sound("MW_Casings.308.mud"), + [MAT_FLESH] = Sound("MW_Casings.308.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.308.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.308.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.308.mud"), + [MAT_METAL] = Sound("MW_Casings.308.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.308.metal"), + [MAT_GRATE] = Sound("MW_Casings.308.metal"), + [MAT_SAND] = Sound("MW_Casings.308.sand"), + [MAT_SNOW] = Sound("MW_Casings.308.sand"), + [MAT_VENT] = Sound("MW_Casings.308.metal"), + [MAT_WOOD] = Sound("MW_Casings.308.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_12g.lua b/lua/effects/mwb_shelleject_12g.lua new file mode 100644 index 0000000..d8fe1f0 --- /dev/null +++ b/lua/effects/mwb_shelleject_12g.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shared/casing/12g.mdl") +EFFECT.Scale = 1 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.shotgun.cement"), + Water = Sound("MW_Casings.50bmg.water"), + [MAT_DIRT] = Sound("MW_Casings.shotgun.dirt"), + [MAT_GLASS] = Sound("MW_Casings.shotgun.glass"), + [MAT_TILE] = Sound("MW_Casings.shotgun.glass"), + [MAT_GRASS] = Sound("MW_Casings.shotgun.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.shotgun.grass"), + [MAT_SLOSH] = Sound("MW_Casings.shotgun.mud"), + [MAT_FLESH] = Sound("MW_Casings.shotgun.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.shotgun.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.shotgun.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.shotgun.mud"), + [MAT_METAL] = Sound("MW_Casings.shotgun.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.shotgun.metal"), + [MAT_GRATE] = Sound("MW_Casings.shotgun.metal"), + [MAT_SAND] = Sound("MW_Casings.shotgun.sand"), + [MAT_SNOW] = Sound("MW_Casings.shotgun.sand"), + [MAT_VENT] = Sound("MW_Casings.shotgun.metal"), + [MAT_WOOD] = Sound("MW_Casings.shotgun.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_12g_black.lua b/lua/effects/mwb_shelleject_12g_black.lua new file mode 100644 index 0000000..567197c --- /dev/null +++ b/lua/effects/mwb_shelleject_12g_black.lua @@ -0,0 +1,5 @@ +AddCSLuaFile() + +include("mwb_shelleject_12g.lua") + +EFFECT.Model = Model("models/viper/mw/shared/casing/10g.mdl") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_12g_green.lua b/lua/effects/mwb_shelleject_12g_green.lua new file mode 100644 index 0000000..675de9e --- /dev/null +++ b/lua/effects/mwb_shelleject_12g_green.lua @@ -0,0 +1,5 @@ +AddCSLuaFile() + +include("mwb_shelleject_12g.lua") + +EFFECT.Model = Model("models/viper/mw/shared/casing/12gs.mdl") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_308.lua b/lua/effects/mwb_shelleject_308.lua new file mode 100644 index 0000000..1f6289a --- /dev/null +++ b/lua/effects/mwb_shelleject_308.lua @@ -0,0 +1,28 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/vfx_rifle_shell_lod0.mdl") +EFFECT.Scale = 1 +EFFECT.Force = 150 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.308.cement"), + Water = Sound("MW_Casings.308.water"), + [MAT_DIRT] = Sound("MW_Casings.308.dirt"), + [MAT_GLASS] = Sound("MW_Casings.308.glass"), + [MAT_TILE] = Sound("MW_Casings.308.glass"), + [MAT_GRASS] = Sound("MW_Casings.308.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.308.grass"), + [MAT_SLOSH] = Sound("MW_Casings.308.mud"), + [MAT_FLESH] = Sound("MW_Casings.308.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.308.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.308.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.308.mud"), + [MAT_METAL] = Sound("MW_Casings.308.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.308.metal"), + [MAT_GRATE] = Sound("MW_Casings.308.metal"), + [MAT_SAND] = Sound("MW_Casings.308.sand"), + [MAT_SNOW] = Sound("MW_Casings.308.sand"), + [MAT_VENT] = Sound("MW_Casings.308.metal"), + [MAT_WOOD] = Sound("MW_Casings.308.wood_hollow") +} +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_338.lua b/lua/effects/mwb_shelleject_338.lua new file mode 100644 index 0000000..bfc2885 --- /dev/null +++ b/lua/effects/mwb_shelleject_338.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/vfx_rifle_shell_lod0.mdl") +EFFECT.Scale = 1 +EFFECT.Force = 150 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.338.cement"), + Water = Sound("MW_Casings.338.water"), + [MAT_DIRT] = Sound("MW_Casings.338.dirt"), + [MAT_GLASS] = Sound("MW_Casings.338.glass"), + [MAT_TILE] = Sound("MW_Casings.338.glass"), + [MAT_GRASS] = Sound("MW_Casings.338.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.338.grass"), + [MAT_SLOSH] = Sound("MW_Casings.338.mud"), + [MAT_FLESH] = Sound("MW_Casings.338.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.338.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.338.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.338.mud"), + [MAT_METAL] = Sound("MW_Casings.338.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.338.metal"), + [MAT_GRATE] = Sound("MW_Casings.338.metal"), + [MAT_SAND] = Sound("MW_Casings.338.sand"), + [MAT_SNOW] = Sound("MW_Casings.338.sand"), + [MAT_VENT] = Sound("MW_Casings.338.metal"), + [MAT_WOOD] = Sound("MW_Casings.338.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_45.lua b/lua/effects/mwb_shelleject_45.lua new file mode 100644 index 0000000..782acd8 --- /dev/null +++ b/lua/effects/mwb_shelleject_45.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/fx_pistol_shell_lod0.mdl") +EFFECT.Scale = 0.95 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.9mm.cement"), + Water = Sound("MW_Casings.9mm.water"), + [MAT_DIRT] = Sound("MW_Casings.9mm.dirt"), + [MAT_GLASS] = Sound("MW_Casings.9mm.glass"), + [MAT_TILE] = Sound("MW_Casings.9mm.glass"), + [MAT_GRASS] = Sound("MW_Casings.9mm.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.9mm.grass"), + [MAT_SLOSH] = Sound("MW_Casings.9mm.mud"), + [MAT_FLESH] = Sound("MW_Casings.9mm.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.9mm.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.9mm.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.9mm.mud"), + [MAT_METAL] = Sound("MW_Casings.9mm.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.9mm.metal"), + [MAT_GRATE] = Sound("MW_Casings.9mm.metal"), + [MAT_SAND] = Sound("MW_Casings.9mm.sand"), + [MAT_SNOW] = Sound("MW_Casings.9mm.sand"), + [MAT_VENT] = Sound("MW_Casings.9mm.metal"), + [MAT_WOOD] = Sound("MW_Casings.9mm.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_458.lua b/lua/effects/mwb_shelleject_458.lua new file mode 100644 index 0000000..2543fc5 --- /dev/null +++ b/lua/effects/mwb_shelleject_458.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/vfx_9x39_shell.mdl") +EFFECT.Scale = 0.4 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.338.cement"), + Water = Sound("MW_Casings.338.water"), + [MAT_DIRT] = Sound("MW_Casings.338.dirt"), + [MAT_GLASS] = Sound("MW_Casings.338.glass"), + [MAT_TILE] = Sound("MW_Casings.338.glass"), + [MAT_GRASS] = Sound("MW_Casings.338.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.338.grass"), + [MAT_SLOSH] = Sound("MW_Casings.338.mud"), + [MAT_FLESH] = Sound("MW_Casings.338.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.338.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.338.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.338.mud"), + [MAT_METAL] = Sound("MW_Casings.338.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.338.metal"), + [MAT_GRATE] = Sound("MW_Casings.338.metal"), + [MAT_SAND] = Sound("MW_Casings.338.sand"), + [MAT_SNOW] = Sound("MW_Casings.338.sand"), + [MAT_VENT] = Sound("MW_Casings.338.metal"), + [MAT_WOOD] = Sound("MW_Casings.338.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_50bmg.lua b/lua/effects/mwb_shelleject_50bmg.lua new file mode 100644 index 0000000..a239b24 --- /dev/null +++ b/lua/effects/mwb_shelleject_50bmg.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/vfx_rifle_shell_lod0.mdl") +EFFECT.Scale = 2 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.50bmg.cement"), + Water = Sound("MW_Casings.50bmg.water"), + [MAT_DIRT] = Sound("MW_Casings.50bmg.dirt"), + [MAT_GLASS] = Sound("MW_Casings.50bmg.glass"), + [MAT_TILE] = Sound("MW_Casings.50bmg.glass"), + [MAT_GRASS] = Sound("MW_Casings.50bmg.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.50bmg.grass"), + [MAT_SLOSH] = Sound("MW_Casings.50bmg.mud"), + [MAT_FLESH] = Sound("MW_Casings.50bmg.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.50bmg.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.50bmg.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.50bmg.mud"), + [MAT_METAL] = Sound("MW_Casings.50bmg.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.50bmg.metal"), + [MAT_GRATE] = Sound("MW_Casings.50bmg.metal"), + [MAT_SAND] = Sound("MW_Casings.50bmg.sand"), + [MAT_SNOW] = Sound("MW_Casings.50bmg.sand"), + [MAT_VENT] = Sound("MW_Casings.50bmg.metal"), + [MAT_WOOD] = Sound("MW_Casings.50bmg.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_545.lua b/lua/effects/mwb_shelleject_545.lua new file mode 100644 index 0000000..a86dd22 --- /dev/null +++ b/lua/effects/mwb_shelleject_545.lua @@ -0,0 +1,28 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/vfx_shell_ar_lod0.mdl") +EFFECT.Scale = 0.7 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.556.cement"), + Water = Sound("MW_Casings.556.water"), + [MAT_DIRT] = Sound("MW_Casings.556.dirt"), + [MAT_GLASS] = Sound("MW_Casings.556.glass"), + [MAT_TILE] = Sound("MW_Casings.556.glass"), + [MAT_GRASS] = Sound("MW_Casings.556.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.556.grass"), + [MAT_SLOSH] = Sound("MW_Casings.556.mud"), + [MAT_FLESH] = Sound("MW_Casings.556.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.556.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.556.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.556.mud"), + [MAT_METAL] = Sound("MW_Casings.556.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.556.metal"), + [MAT_GRATE] = Sound("MW_Casings.556.metal"), + [MAT_SAND] = Sound("MW_Casings.556.sand"), + [MAT_SNOW] = Sound("MW_Casings.556.sand"), + [MAT_VENT] = Sound("MW_Casings.556.metal"), + [MAT_WOOD] = Sound("MW_Casings.556.wood_hollow") +} +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_556.lua b/lua/effects/mwb_shelleject_556.lua new file mode 100644 index 0000000..1b675c9 --- /dev/null +++ b/lua/effects/mwb_shelleject_556.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/vfx_shell_ar_lod0.mdl") +EFFECT.Scale = 0.7 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.556.cement"), + Water = Sound("MW_Casings.556.water"), + [MAT_DIRT] = Sound("MW_Casings.556.dirt"), + [MAT_GLASS] = Sound("MW_Casings.556.glass"), + [MAT_TILE] = Sound("MW_Casings.556.glass"), + [MAT_GRASS] = Sound("MW_Casings.556.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.556.grass"), + [MAT_SLOSH] = Sound("MW_Casings.556.mud"), + [MAT_FLESH] = Sound("MW_Casings.556.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.556.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.556.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.556.mud"), + [MAT_METAL] = Sound("MW_Casings.556.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.556.metal"), + [MAT_GRATE] = Sound("MW_Casings.556.metal"), + [MAT_SAND] = Sound("MW_Casings.556.sand"), + [MAT_SNOW] = Sound("MW_Casings.556.sand"), + [MAT_VENT] = Sound("MW_Casings.556.metal"), + [MAT_WOOD] = Sound("MW_Casings.556.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_57.lua b/lua/effects/mwb_shelleject_57.lua new file mode 100644 index 0000000..dd65332 --- /dev/null +++ b/lua/effects/mwb_shelleject_57.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/vfx_shell_ar_lod0.mdl") +EFFECT.Scale = 0.5 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.556.cement"), + Water = Sound("MW_Casings.556.water"), + [MAT_DIRT] = Sound("MW_Casings.556.dirt"), + [MAT_GLASS] = Sound("MW_Casings.556.glass"), + [MAT_TILE] = Sound("MW_Casings.556.glass"), + [MAT_GRASS] = Sound("MW_Casings.556.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.556.grass"), + [MAT_SLOSH] = Sound("MW_Casings.556.mud"), + [MAT_FLESH] = Sound("MW_Casings.556.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.556.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.556.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.556.mud"), + [MAT_METAL] = Sound("MW_Casings.556.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.556.metal"), + [MAT_GRATE] = Sound("MW_Casings.556.metal"), + [MAT_SAND] = Sound("MW_Casings.556.sand"), + [MAT_SNOW] = Sound("MW_Casings.556.sand"), + [MAT_VENT] = Sound("MW_Casings.556.metal"), + [MAT_WOOD] = Sound("MW_Casings.556.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_762.lua b/lua/effects/mwb_shelleject_762.lua new file mode 100644 index 0000000..1a5364f --- /dev/null +++ b/lua/effects/mwb_shelleject_762.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/vfx_shell_ar_lod0.mdl") +EFFECT.Scale = 1 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.556.cement"), + Water = Sound("MW_Casings.556.water"), + [MAT_DIRT] = Sound("MW_Casings.556.dirt"), + [MAT_GLASS] = Sound("MW_Casings.556.glass"), + [MAT_TILE] = Sound("MW_Casings.556.glass"), + [MAT_GRASS] = Sound("MW_Casings.556.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.556.grass"), + [MAT_SLOSH] = Sound("MW_Casings.556.mud"), + [MAT_FLESH] = Sound("MW_Casings.556.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.556.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.556.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.556.mud"), + [MAT_METAL] = Sound("MW_Casings.556.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.556.metal"), + [MAT_GRATE] = Sound("MW_Casings.556.metal"), + [MAT_SAND] = Sound("MW_Casings.556.sand"), + [MAT_SNOW] = Sound("MW_Casings.556.sand"), + [MAT_VENT] = Sound("MW_Casings.556.metal"), + [MAT_WOOD] = Sound("MW_Casings.556.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_7625x.lua b/lua/effects/mwb_shelleject_7625x.lua new file mode 100644 index 0000000..7bc819c --- /dev/null +++ b/lua/effects/mwb_shelleject_7625x.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/vfx_rifle_shell_lod0.mdl") +EFFECT.Scale = 0.75 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.308.cement"), + Water = Sound("MW_Casings.308.water"), + [MAT_DIRT] = Sound("MW_Casings.308.dirt"), + [MAT_GLASS] = Sound("MW_Casings.308.glass"), + [MAT_TILE] = Sound("MW_Casings.308.glass"), + [MAT_GRASS] = Sound("MW_Casings.308.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.308.grass"), + [MAT_SLOSH] = Sound("MW_Casings.308.mud"), + [MAT_FLESH] = Sound("MW_Casings.308.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.308.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.308.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.308.mud"), + [MAT_METAL] = Sound("MW_Casings.308.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.308.metal"), + [MAT_GRATE] = Sound("MW_Casings.308.metal"), + [MAT_SAND] = Sound("MW_Casings.308.sand"), + [MAT_SNOW] = Sound("MW_Casings.308.sand"), + [MAT_VENT] = Sound("MW_Casings.308.metal"), + [MAT_WOOD] = Sound("MW_Casings.308.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_939.lua b/lua/effects/mwb_shelleject_939.lua new file mode 100644 index 0000000..b8ef152 --- /dev/null +++ b/lua/effects/mwb_shelleject_939.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/vfx_9x39_shell.mdl") +EFFECT.Scale = 0.35 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.556.cement"), + Water = Sound("MW_Casings.556.water"), + [MAT_DIRT] = Sound("MW_Casings.556.dirt"), + [MAT_GLASS] = Sound("MW_Casings.556.glass"), + [MAT_TILE] = Sound("MW_Casings.556.glass"), + [MAT_GRASS] = Sound("MW_Casings.556.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.556.grass"), + [MAT_SLOSH] = Sound("MW_Casings.556.mud"), + [MAT_FLESH] = Sound("MW_Casings.556.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.556.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.556.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.556.mud"), + [MAT_METAL] = Sound("MW_Casings.556.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.556.metal"), + [MAT_GRATE] = Sound("MW_Casings.556.metal"), + [MAT_SAND] = Sound("MW_Casings.556.sand"), + [MAT_SNOW] = Sound("MW_Casings.556.sand"), + [MAT_VENT] = Sound("MW_Casings.556.metal"), + [MAT_WOOD] = Sound("MW_Casings.556.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_9mm.lua b/lua/effects/mwb_shelleject_9mm.lua new file mode 100644 index 0000000..48dc7a5 --- /dev/null +++ b/lua/effects/mwb_shelleject_9mm.lua @@ -0,0 +1,29 @@ +AddCSLuaFile() + +EFFECT.Model = Model("models/viper/mw/shells/fx_pistol_shell_lod0.mdl") +EFFECT.Scale = 0.75 +EFFECT.Force = 100 +EFFECT.Offset = Vector() +EFFECT.Sounds = { + Default = Sound("MW_Casings.9mm.cement"), + Water = Sound("MW_Casings.9mm.water"), + [MAT_DIRT] = Sound("MW_Casings.9mm.dirt"), + [MAT_GLASS] = Sound("MW_Casings.9mm.glass"), + [MAT_TILE] = Sound("MW_Casings.9mm.glass"), + [MAT_GRASS] = Sound("MW_Casings.9mm.grass"), + [MAT_FOLIAGE] = Sound("MW_Casings.9mm.grass"), + [MAT_SLOSH] = Sound("MW_Casings.9mm.mud"), + [MAT_FLESH] = Sound("MW_Casings.9mm.mud"), + [MAT_BLOODYFLESH] = Sound("MW_Casings.9mm.mud"), + [MAT_ALIENFLESH] = Sound("MW_Casings.9mm.mud"), + [MAT_EGGSHELL] = Sound("MW_Casings.9mm.mud"), + [MAT_METAL] = Sound("MW_Casings.9mm.metal"), + [MAT_COMPUTER] = Sound("MW_Casings.9mm.metal"), + [MAT_GRATE] = Sound("MW_Casings.9mm.metal"), + [MAT_SAND] = Sound("MW_Casings.9mm.sand"), + [MAT_SNOW] = Sound("MW_Casings.9mm.sand"), + [MAT_VENT] = Sound("MW_Casings.9mm.metal"), + [MAT_WOOD] = Sound("MW_Casings.9mm.wood_hollow") +} + +include("mwb_shelleject.lua") \ No newline at end of file diff --git a/lua/effects/mwb_shelleject_comp.lua b/lua/effects/mwb_shelleject_comp.lua new file mode 100644 index 0000000..4da4ae0 --- /dev/null +++ b/lua/effects/mwb_shelleject_comp.lua @@ -0,0 +1,20 @@ +--this was made to remain compatible with unofficial stuff, consider moving to new method! +AddCSLuaFile() +include("mwb_shelleject.lua") + +local oldInit = EFFECT.Init + +function EFFECT:Init(data) + local shellstr = data:GetEntity().Shell + self.Model = shellstr.Model + self.Force = shellstr.Force + self.Scale = shellstr.Scale + self.Offset = shellstr.Offset || Vector() + self.m_TouchSound = shellstr.Sound + + oldInit(self, data) +end + +function EFFECT:EmitSurfaceSound(tr) + self:EmitSound(self.m_TouchSound) +end \ No newline at end of file diff --git a/lua/entities/mg_40mm/cl_init.lua b/lua/entities/mg_40mm/cl_init.lua new file mode 100644 index 0000000..9d95011 --- /dev/null +++ b/lua/entities/mg_40mm/cl_init.lua @@ -0,0 +1,44 @@ +include("shared.lua") + +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT +ENT.bTracerOn = false + +ENT.OuterFlairColor = Color(236,153,17,255) +ENT.InnerFlairColor = Color(255,255,255,255) + +ENT.OuterFlairScale = 1 +ENT.InnerFlairScale = 0.3 + +local flair = Material("shadowdark/flairs/grenade_flair.vmt") + +function ENT:DrawTranslucent(flags) + if (self:GetVelocity():LengthSqr() > 0 || self:GetNailed()) then + self:DrawModel() + + local ang = LocalPlayer():EyeAngles() + local angle = Angle( 0, LocalPlayer():EyeAngles()[2], 0 ) + + angle = Angle(LocalPlayer():EyeAngles()[1], angle.y, 0 ) + + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + + + cam.Start3D2D( self:GetPos() - self:GetForward() * 5, angle, 0.2 ) + + local OuterScale = 512 * self.OuterFlairScale + local InnerScale = 512 * self.InnerFlairScale + + surface.SetMaterial(flair) + surface.SetDrawColor(self.OuterFlairColor) + surface.DrawTexturedRect(-OuterScale/2, -OuterScale/2, OuterScale, OuterScale) + + surface.SetDrawColor(self.InnerFlairColor) + surface.DrawTexturedRect(-InnerScale/2, -InnerScale/2, InnerScale, InnerScale) + cam.End3D2D() + + if (!self.bTracerOn) then + self.bTracerOn = true + end + end +end \ No newline at end of file diff --git a/lua/entities/mg_40mm/init.lua b/lua/entities/mg_40mm/init.lua new file mode 100644 index 0000000..54d56db --- /dev/null +++ b/lua/entities/mg_40mm/init.lua @@ -0,0 +1,134 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.bCollided = false +ENT.Projectile = { + Class = "mg_bullet", + Speed = 4000, + Gravity = 1 +} +ENT.Maxs = Vector(1, 1, 1) +ENT.Model = Model("models/items/ar2_grenade.mdl") +ENT.AoeEntity = nil + +function ENT:Initialize() + self:SetModel(self.Model) + self:PhysicsInitBox(Vector(-10, -1, -1), Vector(10, 1, 1)) + self:GetPhysicsObject():Wake() + self:GetPhysicsObject():SetMaterial("default_silent") + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_NO_PLAYER_PICKUP) + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_NO_IMPACT_DMG) + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_HEAVY_OBJECT) + self:GetPhysicsObject():EnableMotion(true) + self:GetPhysicsObject():EnableDrag(false) + self:GetPhysicsObject():SetMass(1000) + self:SetSolid(SOLID_VPHYSICS) + self:SetCollisionGroup(COLLISION_GROUP_IN_VEHICLE) --doesn't collide with anything, no traces + self:AddEFlags(EFL_NO_DAMAGE_FORCES) + self:AddEFlags(EFL_DONTWALKON) + self:AddEFlags(EFL_DONTBLOCKLOS) + self:AddEFlags(EFL_NO_PHYSCANNON_INTERACTION) + + self.Projectile = table.Copy(self.Weapon.Projectile) + self:GetPhysicsObject():SetVelocityInstantaneous(self:GetAngles():Forward() * self.Projectile.Speed) + self.LastPos = self:GetOwner():EyePos() + self.Bullet = self.Weapon.Bullet + self.ImpactDamage = self.Weapon.Explosive.ImpactBlastRatio + self.BlastRadius = self.Weapon.Explosive.BlastRadius +end + +ENT.m_gravity = 0 + +function ENT:PhysicsUpdate(phys) + if (!phys:IsMotionEnabled()) then + return + end + + self.m_gravity = math.Clamp(self.m_gravity + (self.Projectile.Gravity), -90, 90) + + phys:SetAngles(phys:GetAngles() + Angle(self.m_gravity, 0, 0) * FrameTime()) + phys:SetPos(self.LastPos + phys:GetAngles():Forward() * (self.Projectile.Speed * FrameTime())) + + --Aim assist + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Box(phys:GetPos(), -self.Maxs, self.Maxs, 0, Color(0, 200, 50, 10)) + end + + local trData = { + start = self.LastPos, + endpos = phys:GetPos(), + filter = {self:GetOwner(), self}, + mask = MASK_SHOT_PORTAL, + collisiongroup = COLLISION_GROUP_NONE, + mins = -self.Maxs, + maxs = self.Maxs + } + + local tr = util.TraceHull(trData) + + if (tr.Hit && (tr.Entity:IsPlayer() || tr.Entity:IsNPC())) then + self:Impact(tr, phys, true) + return + end + + --Normal hitscan + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Line(self.LastPos, phys:GetPos(), 1, Color(255, 0, 0, 1)) + end + + tr = util.TraceLine(trData) + + if (tr.Hit) then + self:Impact(tr, phys, false) + return + end + + self.LastPos = phys:GetPos() +end + +function ENT:Impact(tr1, phys, bHull) + phys:EnableMotion(false) + + self:SetPos(tr1.HitPos) + + self:FireBullets({ + Attacker = self:GetOwner(), + Num = 1, + Tracer = 0, + Src = self.LastPos, + Dir = (phys:GetPos() - self.LastPos):GetNormalized(), + HullSize = bHull && self.Maxs:Length() * 2 || 1, + IgnoreEntity = self, + Callback = function(attacker, tr, dmgInfo) + dmgInfo:SetInflictor(IsValid(self.Weapon) && self.Weapon || self) + dmgInfo:SetDamageType(dmgInfo:GetDamageType() + DMG_DIRECT + self:GetDamageType()) + + if (IsValid(self.Weapon)) then + self.Weapon:BulletCallback(attacker, tr, dmgInfo) + end + end + }) + + local dmg = DamageInfo() + + dmg:SetAttacker(self:GetOwner()) + dmg:SetInflictor(self) + dmg:SetDamage(self.Bullet.Damage[1]) + dmg:SetDamageType(DMG_BLAST + DMG_AIRBOAT) + dmg:SetReportedPosition(self:GetPos()) + + util.BlastDamageInfo(dmg, self:GetPos(), self.BlastRadius) + util.ScreenShake(self:GetPos(), 3500, 1111, 1, 124 * 4) + + ParticleEffect("Generic_explo_high", self:GetPos(), self:GetAngles()) + self:EmitSound("^viper/shared/frag_expl.ogg", 0, 100, 1, CHAN_WEAPON) + util.Decal("Scorch", self:GetPos(), self:GetPos() + self:GetUp() * -100, {self}) + + self:Remove() +end + +function ENT:GetDamageType() + return DMG_BLAST + DMG_DIRECT +end \ No newline at end of file diff --git a/lua/entities/mg_40mm/shared.lua b/lua/entities/mg_40mm/shared.lua new file mode 100644 index 0000000..6986186 --- /dev/null +++ b/lua/entities/mg_40mm/shared.lua @@ -0,0 +1,39 @@ +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.Spawnable = false +ENT.AdminOnly = false + +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("arrow_trail") + +sound.Add({ + name = "MW19_Crossbow.Hit", + channel = CHAN_BODY, + volume = 1, + level = 85, + pitch = {95, 105}, + sound = {"viper/shared/bullet_small_crossbow_bolt_swt_01.ogg", "viper/shared/bullet_small_crossbow_bolt_swt_02.ogg", "viper/shared/bullet_small_crossbow_bolt_swt_03.ogg"} +}) + +sound.Add({ + name = "MW19_Crossbow.HitBody", + channel = CHAN_BODY, + volume = 1, + level = 85, + pitch = {95, 105}, + sound = {"viper/shared/bullet_flesh_plr_head_01.ogg", "viper/shared/bullet_flesh_plr_head_02.ogg", "viper/shared/bullet_flesh_plr_head_03.ogg"} +}) + +sound.Add({ + name = "MW19_Crossbow.Skewer", + channel = CHAN_ITEM, + volume = 1, + level = 85, + pitch = {95, 105}, + sound = {"weapons/crossbow/bolt_skewer1.wav"} +}) + +function ENT:SetupDataTables() + self:NetworkVar("Bool", 0, "Nailed") +end \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_explosion/cl_init.lua b/lua/entities/mg_aoe_arrow_explosion/cl_init.lua new file mode 100644 index 0000000..896acc9 --- /dev/null +++ b/lua/entities/mg_aoe_arrow_explosion/cl_init.lua @@ -0,0 +1,52 @@ +include("shared.lua") + +killicon.Add("mg_aoe_arrow_explosion", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) + +local BaseClass = baseclass.Get(ENT.Base) + +function ENT:Beep() + local dlight = DynamicLight(self:EntIndex()) + dlight.pos = self:GetPos() + dlight.r = 15 + dlight.g = 255 + dlight.b = 15 + dlight.brightness = -1 + dlight.Decay = 1000 + dlight.Size = 256 + dlight.DieTime = CurTime() + 0.1 + + sound.Play("MW19_Crossbow.ExploBeep", self:GetPos()) + ParticleEffectAttach("arrow_beep_flare", PATTACH_ABSORIGIN_FOLLOW, self, 0) +end + +function ENT:Draw(flags) + self:DrawShadow(false) +end + +function ENT:OnRemove() + ParticleEffect("Generic_explo_high", self:GetPos(), self:GetAngles()) + self:EmitSound("^viper/shared/frag_expl.ogg", 0, 100, 1, CHAN_BODY) --snd scripts dont work lol! + + local dlight = DynamicLight(self:EntIndex()) + if (dlight) then + dlight.pos = self:GetPos() + dlight.r = 255 + dlight.g = 75 + dlight.b = 0 + dlight.brightness = 5 + dlight.Decay = 500 + dlight.Size = 512 + dlight.DieTime = CurTime() + 6 + end + + util.Decal("Scorch", self:GetPos(), self:GetPos() + self:GetUp() * -100, {self, self.arrow}) + + local ed = EffectData() + ed:SetScale(5000) + ed:SetOrigin(self:GetPos()) + ed:SetRadius(512) + ed:SetMagnitude(1000) + ed:SetScale(1000) + ed:SetEntity(self) + util.Effect("ShakeRopes", ed) +end \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_explosion/init.lua b/lua/entities/mg_aoe_arrow_explosion/init.lua new file mode 100644 index 0000000..1ca125e --- /dev/null +++ b/lua/entities/mg_aoe_arrow_explosion/init.lua @@ -0,0 +1,59 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.ExplosionRadius = 256 + +function ENT:Initialize() + self:SetModel("models/dav0r/hoverball.mdl") + --[[self:PhysicsInit(SOLID_VPHYSICS) + self:GetPhysicsObject():EnableMotion(false) + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS)]] + self:SetLifeTime(1.5) + self:AddFlags(FL_GRENADE) + self:AddFlags(FL_ONFIRE) + self.nextBeep = self:GetLifeTime() +end + +function ENT:Think() + if (IsValid(self:GetParent()) && self:GetParent():Health() <= 0 && self:GetParent():GetMaxHealth() > 1) then + self:Explode() + self:Remove() + return + end + + self:SetLifeTime(self:GetLifeTime() - FrameTime()) + + if (self:GetLifeTime() > 0.1 && self:GetLifeTime() <= self.nextBeep) then + sound.EmitHint(SOUND_DANGER, self:GetPos(), self.ExplosionRadius * 2, 1, nil) --make shit run away (nil owner so even rebels run) + self.nextBeep = self:GetLifeTime() * 0.75 + BroadcastLua("Entity("..self:EntIndex().."):Beep()") + end + + if (self:GetLifeTime() <= 0) then + self:Explode() + self:Remove() + end + + self:NextThink(CurTime()) + return true +end + +function ENT:Explode() + local dmgInfo = DamageInfo() + dmgInfo:SetAttacker(self:GetOwner()) + dmgInfo:SetDamage(150) + dmgInfo:SetDamageType(DMG_BLAST + DMG_AIRBOAT) + dmgInfo:SetInflictor(self) + util.BlastDamageInfo(dmgInfo, self:GetPos(), self.ExplosionRadius) + util.ScreenShake(self:GetPos(), 3500, 1111, 1, self.ExplosionRadius * 4) + + if (IsValid(self.arrow)) then + self.arrow:Remove() + end +end + +function ENT:OnRemove() + self:Explode() +end \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_explosion/shared.lua b/lua/entities/mg_aoe_arrow_explosion/shared.lua new file mode 100644 index 0000000..00d027e --- /dev/null +++ b/lua/entities/mg_aoe_arrow_explosion/shared.lua @@ -0,0 +1,23 @@ +ENT.Base = "base_entity" +ENT.Type = "anim" + +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("arrow_beep_flare") + +game.AddParticles("particles/generic_explosions_pak.pcf") +PrecacheParticleSystem("Generic_explo_high") +PrecacheParticleSystem("Generic_explo_mid") +PrecacheParticleSystem("Generic_explo_tiny") + +function ENT:SetupDataTables() + self:NetworkVar("Float", 0, "LifeTime") +end + +sound.Add({ + name = "MW19_Crossbow.ExploBeep", + channel = CHAN_ITEM, + volume = 1, + level = 85, + pitch = 100, + sound = "viper/shared/weap_semtex_beep.ogg" +}) \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_gas/cl_init.lua b/lua/entities/mg_aoe_arrow_gas/cl_init.lua new file mode 100644 index 0000000..0fe344d --- /dev/null +++ b/lua/entities/mg_aoe_arrow_gas/cl_init.lua @@ -0,0 +1,44 @@ +include("shared.lua") +killicon.Add("mg_aoe_arrow_gas", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) + +local gasEntities = {} + +function ENT:Initialize() + table.insert(gasEntities, self) +end + +function ENT:OnRemove() + table.RemoveByValue(gasEntities, self) +end + +function ENT:Draw(flags) + self:DrawShadow(false) +end + +function ENT:DrawPukeVision() + if (!IsValid(GetViewEntity())) then + return + end + + local dist = GetViewEntity():NearestPoint(self:GetPos()):DistToSqr(self:GetPos()) - (64 * 64) + + if (dist > self.GasRadius * self.GasRadius) then + return + end + + local delta = 1 - (dist / (self.GasRadius * self.GasRadius)) + local time = self:GetCreationTime() + self.LifeTime + local fadeout = math.Clamp(time - CurTime(), 0, 0.5) * 2 + local fadein = math.Clamp(math.abs(CurTime() - self:GetCreationTime()), 0, 1) + + delta = delta * fadein + delta = delta * fadeout + + surface.SetDrawColor(117, 143, 53, 200 * delta) + surface.DrawRect(0, 0, ScrW(), ScrH()) +end +hook.Add("HUDPaintBackground", "HUDPaint_MW19_GasVision", function() + for _, e in pairs(gasEntities) do + e:DrawPukeVision() + end +end) \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_gas/init.lua b/lua/entities/mg_aoe_arrow_gas/init.lua new file mode 100644 index 0000000..8b39172 --- /dev/null +++ b/lua/entities/mg_aoe_arrow_gas/init.lua @@ -0,0 +1,83 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.smokeSound = nil + +function ENT:Initialize() + self:SetModel("models/dav0r/hoverball.mdl") + --[[self:PhysicsInit(SOLID_VPHYSICS) + self:GetPhysicsObject():EnableMotion(false) + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS)]] + self:AddFlags(FL_GRENADE) + self:AddFlags(FL_ONFIRE) + + local repFil = RecipientFilter() + repFil:AddAllPlayers() + + self.smokeSound = CreateSound(self, "MW19_Crossbow.GasOn", repFil) + self.smokeSound:Play() + + self:EmitSound("MW19_Crossbow.GasExplode") + + ParticleEffectAttach("arrow_gas_dust", PATTACH_ABSORIGIN_FOLLOW, self, 0) + ParticleEffect("arrow_gas_explode", self:GetPos(), self:GetAngles(), self, 0) + + self:SetParent(NULL) --detaching from whatever we nailed on + sound.EmitHint(SOUND_DANGER, self:GetPos(), self.GasRadius * 2, self.LifeTime, nil) --make shit run away (nil owner so even rebels run) +end + +local function doesEntityBreathe(ent) + return ent:GetBloodColor() != BLOOD_COLOR_MECH && ent:GetBloodColor() != DONT_BLEED +end + +function ENT:Think() + if (CurTime() > self:GetCreationTime() + (self.LifeTime - 2)) then + self:StopGas() + end + + if (CurTime() - self:GetCreationTime() > self.LifeTime) then + self:Remove() + return + end + + for _, e in pairs(ents.FindInSphere(self:GetPos(), self.GasRadius)) do + if (e:IsPlayer() || e:IsNPC() || e:IsNextBot()) then + if (!doesEntityBreathe(e) || !e:IsLineOfSightClear(self:GetPos())) then + continue + end + + local dmgInfo = DamageInfo() + dmgInfo:SetAttacker(self:GetOwner()) + dmgInfo:SetDamage(8) + dmgInfo:SetDamageType(DMG_NERVEGAS) + dmgInfo:SetInflictor(self) + e:TakeDamageInfo(dmgInfo) + end + end + + self:NextThink(CurTime() + 0.25) + return true +end + +function ENT:OnRemove() + self:StopGas() +end + +ENT.bStoppedGas = false + +function ENT:StopGas() + if (self.bStoppedGas) then + return + end + + self.bStoppedGas = true + + if (self.smokeSound != nil) then + self.smokeSound:Stop() + end + + self:StopParticles() + sound.Play("MW19_Crossbow.GasOff", self:GetPos()) +end \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_gas/shared.lua b/lua/entities/mg_aoe_arrow_gas/shared.lua new file mode 100644 index 0000000..9775f8d --- /dev/null +++ b/lua/entities/mg_aoe_arrow_gas/shared.lua @@ -0,0 +1,36 @@ +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.GasRadius = 164 +ENT.LifeTime = 8 + +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("arrow_gas_dust") +PrecacheParticleSystem("arrow_gas_explode") + +sound.Add({ + name = "MW19_Crossbow.GasOn", + channel = CHAN_BODY, + volume = 0.25, + level = 75, + pitch = {95, 105}, + sound = {"viper/shared/smoke_grenade_smoke_loop.ogg"} +}) + +sound.Add({ + name = "MW19_Crossbow.GasOff", + channel = CHAN_BODY, + volume = 0.25, + level = 75, + pitch = {95, 105}, + sound = {"viper/shared/smoke_grenade_smoke_loop_end.ogg"} +}) + +sound.Add({ + name = "MW19_Crossbow.GasExplode", + channel = CHAN_ITEM, + volume = 1, + level = 100, + pitch = {95, 105}, + sound = {"viper/shared/smoke_expl_body_01.ogg"} +}) \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_smoke/cl_init.lua b/lua/entities/mg_aoe_arrow_smoke/cl_init.lua new file mode 100644 index 0000000..9bad590 --- /dev/null +++ b/lua/entities/mg_aoe_arrow_smoke/cl_init.lua @@ -0,0 +1,45 @@ +include("shared.lua") +killicon.Add("mg_aoe_arrow_gas", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) + +local smokeEntities = {} + +function ENT:Initialize() + table.insert(smokeEntities, self) + self:SetCollisionGroup(self.CollisionGroup) +end + +function ENT:OnRemove() + table.RemoveByValue(smokeEntities, self) +end + +function ENT:Draw(flags) + self:DrawShadow(false) +end + +function ENT:DrawSmokeVision() + if (!IsValid(GetViewEntity())) then + return + end + + local dist = GetViewEntity():NearestPoint(self:GetPos()):DistToSqr(self:GetPos()) - (64 * 64) + + if (dist > self.SmokeRadius * self.SmokeRadius) then + return + end + + local delta = 1 - (dist / (self.SmokeRadius * self.SmokeRadius)) + local time = self:GetCreationTime() + self.LifeTime + local fadeout = math.Clamp(time - CurTime(), 0, 0.5) * 2 + local fadein = math.Clamp(math.abs(CurTime() - self:GetCreationTime()), 0, 1) + + delta = delta * fadein + delta = delta * fadeout + + surface.SetDrawColor(150, 150, 150, 255 * delta) + surface.DrawRect(0, 0, ScrW(), ScrH()) +end +hook.Add("HUDPaintBackground", "HUDPaint_MW19_SmokeVision", function() + for _, e in pairs(smokeEntities) do + e:DrawSmokeVision() + end +end) \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_smoke/init.lua b/lua/entities/mg_aoe_arrow_smoke/init.lua new file mode 100644 index 0000000..6716937 --- /dev/null +++ b/lua/entities/mg_aoe_arrow_smoke/init.lua @@ -0,0 +1,69 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.smokeSound = nil + +function ENT:Initialize() + self:SetParent(NULL) --detaching from whatever we nailed on + + self:SetModel("models/dav0r/hoverball.mdl") + self:SetOwner(NULL) + self:EnableCustomCollisions(true) + + local p = self:GetPos() --+ self:GetAngles():Up() * -self.SmokeRadius + local b = Vector(0.66, 0.66, 0.66) * self.SmokeRadius + self:PhysicsInitBox(-b, b) + self:SetCollisionBoundsWS(p - b, p + b) + self:GetPhysicsObject():EnableMotion(false) + self:SetCollisionGroup(self.CollisionGroup) + + local repFil = RecipientFilter() + repFil:AddAllPlayers() + + self.smokeSound = CreateSound(self, "MW19_Crossbow.SmokeOn", repFil) + self.smokeSound:Play() + self.smokeSound:ChangePitch(75) + + self:EmitSound("MW19_Crossbow.SmokeExplode") + + ParticleEffectAttach("arrow_smoke", PATTACH_ABSORIGIN_FOLLOW, self, 0) + ParticleEffect("arrow_smoke_explode", self:GetPos(), self:GetAngles(), self, 0) +end + +function ENT:GetRelationship(e) + return self:GetOwner() +end + +function ENT:Think() + if (CurTime() > self:GetCreationTime() + (self.LifeTime - 2)) then + self:StopSmoke() + end + + if (CurTime() - self:GetCreationTime() > self.LifeTime) then + self:Remove() + return + end +end + +function ENT:OnRemove() + self:StopSmoke() +end + +ENT.bStoppedSmoke = false + +function ENT:StopSmoke() + if (self.bStoppedSmoke) then + return + end + + self.bStoppedSmoke = true + + if (self.smokeSound != nil) then + self.smokeSound:Stop() + end + + self:StopParticles() + sound.Play("MW19_Crossbow.SmokeOff", self:GetPos()) +end \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_smoke/shared.lua b/lua/entities/mg_aoe_arrow_smoke/shared.lua new file mode 100644 index 0000000..b8b9cfc --- /dev/null +++ b/lua/entities/mg_aoe_arrow_smoke/shared.lua @@ -0,0 +1,57 @@ +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.SmokeRadius = 256 +ENT.LifeTime = 11 +ENT.CollisionGroup = COLLISION_GROUP_DEBRIS_TRIGGER + +function ENT:TestCollision(startpos, delta, isbox, extents, mask) + --[[if (bit.band(mask, MASK_SHOT) == MASK_SHOT && SERVER) then + --workaround for strider + local tr = util.TraceLine({ + start = self:GetPos(), + endpos = startpos, + filter = self, + mask = MASK_SHOT + }) + + if (IsValid(tr.Entity)) then + tr.Entity:Fire("SetCannonTarget", "") --strider + tr.Entity:Fire("SetMinigunTarget", "") --strider + --can't do shit to helicopter _shrug_ + end + end]] --causes an infinite loop when shooting more arrows into the smoke + + return bit.band(mask, MASK_BLOCKLOS) == MASK_BLOCKLOS +end + +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("arrow_smoke") +PrecacheParticleSystem("arrow_smoke_explode") + +sound.Add({ + name = "MW19_Crossbow.SmokeOn", + channel = CHAN_BODY, + volume = 0.25, + level = 75, + pitch = {75, 85}, + sound = {"viper/shared/smoke_grenade_smoke_loop.ogg"} +}) + +sound.Add({ + name = "MW19_Crossbow.SmokeOff", + channel = CHAN_BODY, + volume = 0.25, + level = 75, + pitch = {75, 85}, + sound = {"viper/shared/smoke_grenade_smoke_loop_end.ogg"} +}) + +sound.Add({ + name = "MW19_Crossbow.SmokeExplode", + channel = CHAN_ITEM, + volume = 1, + level = 100, + pitch = {95, 105}, + sound = {"viper/shared/smoke_expl_body_01.ogg"} +}) \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_thermite/cl_init.lua b/lua/entities/mg_aoe_arrow_thermite/cl_init.lua new file mode 100644 index 0000000..e2a6da5 --- /dev/null +++ b/lua/entities/mg_aoe_arrow_thermite/cl_init.lua @@ -0,0 +1,27 @@ +include("shared.lua") +killicon.Add("mg_aoe_arrow_thermite", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) + +function ENT:Initialize() + self:EmitSound("MW19_Crossbow.FireOn") +end + +function ENT:OnRemove() + self:StopSound("MW19_Crossbow.FireOn") + sound.Play("MW19_Crossbow.FireOff", self:GetPos()) +end + +function ENT:Draw(flags) + self:DrawShadow(false) + + local dlight = DynamicLight(self:EntIndex()) + if (dlight) then + dlight.pos = self:GetPos() + dlight.r = 255 + dlight.g = 75 + dlight.b = 0 + dlight.brightness = 5 + dlight.Decay = 500 + dlight.Size = math.random(50, 64) + dlight.DieTime = CurTime() + 0.25 + end +end \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_thermite/init.lua b/lua/entities/mg_aoe_arrow_thermite/init.lua new file mode 100644 index 0000000..ec96110 --- /dev/null +++ b/lua/entities/mg_aoe_arrow_thermite/init.lua @@ -0,0 +1,105 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.smokeSound = nil + +function ENT:Initialize() + self:SetModel("models/dav0r/hoverball.mdl") + --[[self:PhysicsInit(SOLID_VPHYSICS) + self:GetPhysicsObject():EnableMotion(false) + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS)]] + self:AddFlags(FL_GRENADE) + self:AddFlags(FL_ONFIRE) + + self:EmitSound("MW19_Crossbow.FireExplode") + + ParticleEffectAttach("arrow_thermite", PATTACH_ABSORIGIN_FOLLOW, self, 0) + util.Decal("Dark", self:GetPos(), self:GetPos() + self:GetUp() * -100, {self, self.arrow}) + sound.EmitHint(SOUND_DANGER, self:GetPos(), self.FireRadius * 2, self.LifeTime, nil) --make shit run away (nil owner so even rebels run) + + if (IsValid(self:GetParent())) then + self:GetParent():CallOnRemove("mw19_dontremovemyarrowffs", function(ent) + if (!IsValid(ent)) then + return + end + + for _, c in pairs(ent:GetChildren()) do + if (IsValid(c) && c:GetClass() == self:GetClass()) then + c:SetParent(NULL) + c:TeleportOnGround() + end + end + end) + end +end + +function ENT:TeleportOnGround() + local tr = util.TraceLine({ + start = self:GetPos(), + endpos = self:GetPos() - Vector(0, 0, 32000), + filter = {self, self.arrow} + }) + + self:SetPos(tr.HitPos) + + local angle = tr.HitNormal:Angle() + angle:RotateAroundAxis(angle:Right(), 270) + self:SetAngles(angle) + + if (!tr.Entity:IsWorld()) then + self:SetParent(tr.Entity) + end +end + +function ENT:Think() + if (IsValid(self:GetParent()) && self:GetParent():Health() <= 0 && self:GetParent():GetMaxHealth() > 1) then + self:SetParent(NULL) + self:TeleportOnGround() + end + + if (CurTime() - self:GetCreationTime() > self.LifeTime) then + self:Remove() + return + end + + for _, e in pairs(ents.FindInSphere(self:GetPos(), self.FireRadius)) do + if (e == self.arrow || e == self) then + continue + end + + if ((e:IsPlayer() || e:IsNPC() || e:IsNextBot()) && !e:IsLineOfSightClear(self:GetPos())) then + continue + end + + if (e:Health() <= 0 && e:GetMaxHealth() > 1) then + continue + end + + e:Ignite(0.25) + + local dmgInfo = DamageInfo() + dmgInfo:SetAttacker(self:GetOwner()) + dmgInfo:SetDamage(10) + dmgInfo:SetDamageType(DMG_BURN) + dmgInfo:SetInflictor(self) + e:TakeDamageInfo(dmgInfo) + end + + self:NextThink(CurTime() + 0.25) + return true +end + +function ENT:OnRemove() + self:StopFire() +end + +function ENT:StopFire() + self:StopParticles() + sound.Play("MW19_Crossbow.FireOff", self:GetPos()) + + if (IsValid(self.arrow)) then + ParticleEffectAttach("arrow_thermite_smokeleft", PATTACH_ABSORIGIN_FOLLOW, self.arrow, 0) + end +end \ No newline at end of file diff --git a/lua/entities/mg_aoe_arrow_thermite/shared.lua b/lua/entities/mg_aoe_arrow_thermite/shared.lua new file mode 100644 index 0000000..e2d83dc --- /dev/null +++ b/lua/entities/mg_aoe_arrow_thermite/shared.lua @@ -0,0 +1,36 @@ +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.FireRadius = 42 +ENT.LifeTime = 6 + +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("arrow_thermite") +PrecacheParticleSystem("arrow_thermite_smokeleft") + +sound.Add({ + name = "MW19_Crossbow.FireOn", + channel = CHAN_BODY, + volume = 0.75, + level = 75, + pitch = {95, 105}, + sound = {"viper/shared/weap_thermite_loop.ogg"} +}) + +sound.Add({ + name = "MW19_Crossbow.FireOff", + channel = CHAN_BODY, + volume = 0.75, + level = 75, + pitch = {95, 105}, + sound = {"viper/shared/weap_thermite_loop_end_01.ogg"} +}) + +sound.Add({ + name = "MW19_Crossbow.FireExplode", + channel = CHAN_ITEM, + volume = 1, + level = 100, + pitch = {95, 105}, + sound = {"viper/shared/weap_thermite_impact_01.ogg", "viper/shared/weap_thermite_impact_02.ogg", "viper/shared/weap_thermite_impact_03.ogg"} +}) \ No newline at end of file diff --git a/lua/entities/mg_arrow/cl_init.lua b/lua/entities/mg_arrow/cl_init.lua new file mode 100644 index 0000000..1e3a2d0 --- /dev/null +++ b/lua/entities/mg_arrow/cl_init.lua @@ -0,0 +1,17 @@ +include("shared.lua") + +killicon.Add("mg_arrow", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) + +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT +ENT.bTracerOn = false + +function ENT:DrawTranslucent(flags) + if (self:GetVelocity():LengthSqr() > 0 || self:GetNailed()) then + self:DrawModel() + + if (!self.bTracerOn) then + ParticleEffectAttach("arrow_trail", PATTACH_ABSORIGIN_FOLLOW, self, 0) + self.bTracerOn = true + end + end +end \ No newline at end of file diff --git a/lua/entities/mg_arrow/init.lua b/lua/entities/mg_arrow/init.lua new file mode 100644 index 0000000..593dd54 --- /dev/null +++ b/lua/entities/mg_arrow/init.lua @@ -0,0 +1,229 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.bCollided = false +ENT.Projectile = { + Class = "mg_bullet", + Speed = 4000, + Gravity = 1 +} +ENT.Maxs = Vector(1, 1, 1) +ENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag.mdl") +ENT.AoeEntity = nil + +function ENT:Initialize() + self:SetModel(self.Model) + self:PhysicsInitBox(Vector(-10, -1, -1), Vector(10, 1, 1)) + self:GetPhysicsObject():Wake() + self:GetPhysicsObject():SetMaterial("default_silent") + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_NO_PLAYER_PICKUP) + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_NO_IMPACT_DMG) + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_HEAVY_OBJECT) + self:GetPhysicsObject():EnableMotion(true) + self:GetPhysicsObject():EnableDrag(false) + self:GetPhysicsObject():SetMass(1000) + self:SetSolid(SOLID_VPHYSICS) + self:SetCollisionGroup(COLLISION_GROUP_IN_VEHICLE) --doesn't collide with anything, no traces + self:AddEFlags(EFL_NO_DAMAGE_FORCES) + self:AddEFlags(EFL_DONTWALKON) + self:AddEFlags(EFL_DONTBLOCKLOS) + self:AddEFlags(EFL_NO_PHYSCANNON_INTERACTION) + + self.Projectile = table.Copy(self.Weapon.Projectile) + self:GetPhysicsObject():SetVelocityInstantaneous(self:GetAngles():Forward() * self.Projectile.Speed) + self.LastPos = self:GetOwner():EyePos() +end + +function ENT:Think() + --[[if (IsValid(self:GetParent()) && self:GetParent():Health() <= 0 && self:GetParent():GetMaxHealth() > 1) then + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetCollisionGroup(COLLISION_GROUP_DEBRIS) + self:GetPhysicsObject():EnableMotion(true) + self:GetPhysicsObject():Wake() + self:SetParent(NULL) + end]] +end + +ENT.m_gravity = 0 + +function ENT:PhysicsUpdate(phys) + if (!phys:IsMotionEnabled()) then + return + end + + self.m_gravity = math.Clamp(self.m_gravity + (self.Projectile.Gravity), -90, 90) + + phys:SetAngles(phys:GetAngles() + Angle(self.m_gravity, 0, 0) * FrameTime()) + phys:SetPos(self.LastPos + phys:GetAngles():Forward() * (self.Projectile.Speed * FrameTime())) + + --Aim assist + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Box(phys:GetPos(), -self.Maxs, self.Maxs, 0, Color(0, 200, 50, 10)) + end + + local trData = { + start = self.LastPos, + endpos = phys:GetPos(), + filter = {self:GetOwner(), self}, + mask = MASK_SHOT_PORTAL, + collisiongroup = COLLISION_GROUP_PROJECTILE, + mins = -self.Maxs, + maxs = self.Maxs + } + + local tr = util.TraceHull(trData) + + if (tr.Hit && (tr.Entity:IsPlayer() || tr.Entity:IsNPC())) then + self:Impact(tr, phys, true) + return + end + + --Normal hitscan + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Line(self.LastPos, phys:GetPos(), 1, Color(255, 0, 0, 1)) + end + + tr = util.TraceLine(trData) + + if (tr.Hit) then + self:Impact(tr, phys, false) + return + end + + self.LastPos = phys:GetPos() +end + +local function parentEntity(tr, ent) + local arrowHitAng = tr.Normal:Angle() + local arrowHitPos = tr.HitPos + arrowHitAng:Forward() * -3 + arrowHitAng:Up() * -1.5 + local boneId = tr.Entity:GetHitboxBone(tr.HitBox, 0) + + if (boneId != nil) then + if (tr.Entity:IsRagdoll()) then + boneId = tr.Entity:TranslatePhysBoneToBone(tr.PhysicsBone) + end + + ent:FollowBone(tr.Entity, boneId) + debugoverlay.Text(tr.HitPos, tr.Entity:GetBoneName(boneId), 1) + else + if (!tr.Entity:IsWorld()) then + ent:SetParent(tr.Entity) + end + end + + ent:SetAngles(arrowHitAng) + ent:SetPos(arrowHitPos) +end + +function ENT:Think() + if (!self:GetNailed()) then + return + end + + if (self.Projectile.PickUp) then + local dist = self:GetOwner():NearestPoint(self:GetPos()):DistToSqr(self:GetPos()) + + if (dist < 32 * 32) then + self:GetOwner():EmitSound("viper/shared/iw8_mp_scavenger_pack_pickup.wav") + self:GetOwner():SetAmmo(self:GetOwner():GetAmmoCount("XBowBolt") + 1, "XBowBolt") + self:Remove() + end + end +end + +function ENT:Impact(tr1, phys, bHull) + SafeRemoveEntityDelayed(self, 20) + + phys:EnableMotion(false) + + if (self.Projectile.PickUp) then + self:AddEffects(EF_ITEM_BLINK) + end + + self:SetMoveType(MOVETYPE_NONE) + self:SetNailed(true) + + self:StopParticles() + + self:FireBullets({ + Attacker = self:GetOwner(), + Num = 1, + Tracer = 0, + Src = self.LastPos, + Dir = (phys:GetPos() - self.LastPos):GetNormalized(), + HullSize = bHull && self.Maxs:Length() * 2 || 1, + IgnoreEntity = self, + Callback = function(attacker, tr, dmgInfo) + dmgInfo:SetInflictor(IsValid(self.Weapon) && self.Weapon || self) + dmgInfo:SetDamageType(dmgInfo:GetDamageType() + DMG_DIRECT + self:GetDamageType()) + + if (IsValid(self.Weapon)) then + self.Weapon:BulletCallback(attacker, tr, dmgInfo) + end + + if (tr.HitSky) then + self:Remove() + return + end + + if (self.AoeEntity != nil) then + local aoe = ents.Create(self.AoeEntity) + aoe:SetOwner(self:GetOwner()) + parentEntity(tr, aoe) + aoe:SetPos(tr.HitPos + tr.HitNormal * 3) + + local angle = tr.HitNormal:Angle() + angle:RotateAroundAxis(angle:Right(), 270) + + aoe:SetAngles(angle) + aoe:Spawn() + aoe.arrow = self + self.aoe = aoe + end + + if (tr.Entity:IsPlayer() || tr.Entity:IsNPC() || tr.Entity:IsNextBot() || tr.Entity:IsRagdoll()) then + sound.Play("MW19_Crossbow.HitBody", tr.HitPos + tr.HitNormal * 5) + self:Remove() + return + end + + sound.Play("MW19_Crossbow.Hit", tr.HitPos) + + parentEntity(tr, self) + + self:FireBullets({ + Attacker = self:GetOwner(), + Num = 1, + Tracer = 0, + Src = tr.HitPos + self:GetAngles():Forward() * 11, + Dir = tr.Normal * -1, + IgnoreEntity = self.aoe, + Damage = 0, + Callback = function(attacker, trBack, dmgInfo) + if (trBack.Entity != tr.Entity) then + --constraint.Weld(tr.Entity, trBack.Entity, tr.PhysicsBone, trBack.PhysicsBone, 0, false) + local lPos1 = LocalToWorld(tr.HitPos, tr.HitNormal:Angle(), tr.Entity:GetPos(), tr.Entity:GetAngles()) + lPos1 = tr.Entity:GetPhysicsObject():WorldToLocal(tr.HitPos + tr.HitNormal) + + local lPos2 = LocalToWorld(tr.HitPos, tr.HitNormal:Angle(), trBack.Entity:GetPos(), trBack.Entity:GetAngles()) + + self.constraint = constraint.Axis(tr.Entity, trBack.Entity, tr.PhysicsBone, trBack.PhysicsBone, lPos1, lPos2, 0, 0, 0, false) + self:EmitSound("MW19_Crossbow.Skewer") + end + end + }) + end + }) +end + +function ENT:GetDamageType() + return DMG_SNIPER + DMG_SLASH +end + +function ENT:OnRemove() + if (IsValid(self.constraint)) then + self.constraint:Remove() + end +end \ No newline at end of file diff --git a/lua/entities/mg_arrow/shared.lua b/lua/entities/mg_arrow/shared.lua new file mode 100644 index 0000000..6986186 --- /dev/null +++ b/lua/entities/mg_arrow/shared.lua @@ -0,0 +1,39 @@ +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.Spawnable = false +ENT.AdminOnly = false + +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("arrow_trail") + +sound.Add({ + name = "MW19_Crossbow.Hit", + channel = CHAN_BODY, + volume = 1, + level = 85, + pitch = {95, 105}, + sound = {"viper/shared/bullet_small_crossbow_bolt_swt_01.ogg", "viper/shared/bullet_small_crossbow_bolt_swt_02.ogg", "viper/shared/bullet_small_crossbow_bolt_swt_03.ogg"} +}) + +sound.Add({ + name = "MW19_Crossbow.HitBody", + channel = CHAN_BODY, + volume = 1, + level = 85, + pitch = {95, 105}, + sound = {"viper/shared/bullet_flesh_plr_head_01.ogg", "viper/shared/bullet_flesh_plr_head_02.ogg", "viper/shared/bullet_flesh_plr_head_03.ogg"} +}) + +sound.Add({ + name = "MW19_Crossbow.Skewer", + channel = CHAN_ITEM, + volume = 1, + level = 85, + pitch = {95, 105}, + sound = {"weapons/crossbow/bolt_skewer1.wav"} +}) + +function ENT:SetupDataTables() + self:NetworkVar("Bool", 0, "Nailed") +end \ No newline at end of file diff --git a/lua/entities/mg_arrow_bone/cl_init.lua b/lua/entities/mg_arrow_bone/cl_init.lua new file mode 100644 index 0000000..cdb9de0 --- /dev/null +++ b/lua/entities/mg_arrow_bone/cl_init.lua @@ -0,0 +1,10 @@ +include("shared.lua") + +killicon.Add("mg_arrow_bone", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) + +local BaseClass = baseclass.Get(ENT.Base) + +function ENT:Initialize() + BaseClass.Initialize(self) + self:EmitSound("MW19_Crossbow.Bone") +end \ No newline at end of file diff --git a/lua/entities/mg_arrow_bone/init.lua b/lua/entities/mg_arrow_bone/init.lua new file mode 100644 index 0000000..0aa64b3 --- /dev/null +++ b/lua/entities/mg_arrow_bone/init.lua @@ -0,0 +1,6 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_magskull.mdl") \ No newline at end of file diff --git a/lua/entities/mg_arrow_bone/shared.lua b/lua/entities/mg_arrow_bone/shared.lua new file mode 100644 index 0000000..1097fc1 --- /dev/null +++ b/lua/entities/mg_arrow_bone/shared.lua @@ -0,0 +1,16 @@ +ENT.Base = "mg_arrow" +ENT.Type = "anim" + +ENT.EMPRadius = 600 + +game.AddParticles("particles/generic_explosions_pak.pcf") +PrecacheParticleSystem("Generic_explo_emp") + +sound.Add({ + name = "MW19_Crossbow.Bone", + channel = CHAN_BODY, + volume = 1, + level = 80, + pitch = {95, 105}, + sound = {"@viper/shared/bone.wav"} +}) \ No newline at end of file diff --git a/lua/entities/mg_arrow_emp/cl_init.lua b/lua/entities/mg_arrow_emp/cl_init.lua new file mode 100644 index 0000000..db71722 --- /dev/null +++ b/lua/entities/mg_arrow_emp/cl_init.lua @@ -0,0 +1,11 @@ +include("shared.lua") + +killicon.Add("mg_arrow_emp", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) + +hook.Add("HUDShouldDraw", "MW19_HUDShouldDraw_EMP", function(name) + if (IsValid(GetViewEntity())) then + if (CurTime() < GetViewEntity():GetNWFloat("MW19_EMPEffect", CurTime())) then + return name != "CHudAmmo" && name != "CHudBattery" && name != "CHudHealth" && name != "CHudSecondaryAmmo" + end + end +end) \ No newline at end of file diff --git a/lua/entities/mg_arrow_emp/init.lua b/lua/entities/mg_arrow_emp/init.lua new file mode 100644 index 0000000..9f29743 --- /dev/null +++ b/lua/entities/mg_arrow_emp/init.lua @@ -0,0 +1,81 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_empbolt.mdl") +ENT.AoeEntity = nil + +local BaseClass = baseclass.Get(ENT.Base) + +local customInputs = { + ["npc_turret_floor"] = function(npc) npc:Fire("SelfDestruct") end, + ["npc_rollermine"] = function(npc) npc:Fire("PowerDown") end, + ["npc_cscanner"] = function(npc) npc:SetHealth(0) npc:ClearSchedule() end,--SCHED_SCANNER_ATTACK_DIVEBOMB, + ["npc_clawscanner"] = function(npc) npc:SetHealth(0) npc:ClearSchedule() end,--SCHED_SCANNER_ATTACK_DIVEBOMB, + ["npc_manhack"] = function(npc) npc:MoveStop() npc:SetHealth(0) npc:MoveStart() end, + ["npc_turret_ceiling"] = function(npc) npc:SetHealth(0) npc:TakeDamage(1000, npc, npc) end, + ["npc_combine_camera"] = function(npc) npc:SetHealth(0) npc:TakeDamage(1000, npc, npc) end, + ["npc_dog"] = function(npc) npc:TakeDamage(10000, npc, npc) end, + ["npc_hunter"] = function(npc) npc:Fire("Dodge") end, + ["combine_mine"] = function(npc) npc:SetSaveValue("m_iMineState", "3") npc:Fire("Disarm") npc:EmitSound("npc/roller/mine/rmine_tossed1.wav", 75, math.random(95, 105), 1, CHAN_BODY) end, + ["item_healthcharger"] = function(npc) npc:SetSaveValue("m_iJuice", "0") npc:Use(Entity(1)) npc:EmitSound("items/medshotno1.wav", 75, math.random(95, 105), 1, CHAN_BODY) end, + ["item_suitcharger"] = function(npc) npc:SetSaveValue("m_iJuice", "0") npc:Use(Entity(1)) npc:EmitSound("items/suitchargeno1.wav", 75, math.random(95, 105), 1, CHAN_BODY) end, + ["prop_thumper"] = function(npc) npc:Fire("Disable") end, + ["grenade_helicopter"] = function(npc) npc:SetSaveValue("m_flLifeTime", "10000000") Entity(1):SimulateGravGunPickup(npc) + --npc:SetSaveValue("spawnflags", ""..bit.bor(npc:GetSpawnFlags(), 16)) end --dud, doesn't get read runtime? + end, + ["item_battery"] = function(npc) npc:AddFlags(FL_DONTTOUCH) end, + ["weapon_striderbuster"] = function(npc) npc:Fire("Break") end, --the amount of effort required to make this thing detonate... nah + ["npc_grenade_frag"] = function(npc) + for _, c in pairs(npc:GetChildren()) do + c:Fire("Disable") + end + npc:Fire("SetTimer", "9999") + npc:SetSaveValue("m_flNextBlipTime", "9999") end --aware that if you pick it up it's gonna restart + --wanted to give player satisfaction of disabling it and then using it to fuck em up +} + +function ENT:Impact(tr, phys, bHull) + BaseClass.Impact(self, tr, phys, bHull) + + if (tr.HitSky) then + return + end + + sound.Play("^viper/shared/emp_expl.ogg", tr.HitPos, 0, 150, 1, CHAN_BODY) --snd scripts dont work lol! + + local angle = tr.HitNormal:Angle() + angle:RotateAroundAxis(angle:Right(), 270) + ParticleEffect("Generic_explo_emp", tr.HitPos, angle, nil, 0) + util.ScreenShake(self:GetPos(), 3500, 1111, 1, self.EMPRadius * 2) + util.Decal("Scorch", tr.HitPos, tr.HitPos - tr.HitNormal * 10, self) + + for _, e in pairs(ents.FindInSphere(tr.HitPos, self.EMPRadius)) do + if (e:IsPlayer()) then + e:SetNWFloat("MW19_EMPEffect", CurTime() + 4) + e:SetArmor(0) + continue + end + + if (customInputs[e:GetClass()] != nil) then + timer.Simple(math.Rand(0, 0.2), function() + if (!IsValid(e)) then + return + end + customInputs[e:GetClass()](e) + end) + + local ef = EffectData() + ef:SetEntity(e) + ef:SetMagnitude(30) + ef:SetScale(20) + util.Effect("TeslaHitboxes", ef) + else + --if someone wants to latch onto this functionality + if (e.OnModernWarfareEMP != nil) then + e.OnModernWarfareEMP(self, tr) + end + end + end +end \ No newline at end of file diff --git a/lua/entities/mg_arrow_emp/shared.lua b/lua/entities/mg_arrow_emp/shared.lua new file mode 100644 index 0000000..346ed01 --- /dev/null +++ b/lua/entities/mg_arrow_emp/shared.lua @@ -0,0 +1,16 @@ +ENT.Base = "mg_arrow" +ENT.Type = "anim" + +ENT.EMPRadius = 600 + +game.AddParticles("particles/generic_explosions_pak.pcf") +PrecacheParticleSystem("Generic_explo_emp") + +sound.Add({ + name = "MW19_Crossbow.EMP", + channel = CHAN_BODY, + volume = 1, + level = 150, + pitch = {95, 105}, + sound = {"^viper/shared/emp_expl.ogg"} +}) \ No newline at end of file diff --git a/lua/entities/mg_arrow_explosive/cl_init.lua b/lua/entities/mg_arrow_explosive/cl_init.lua new file mode 100644 index 0000000..b1bc9d4 --- /dev/null +++ b/lua/entities/mg_arrow_explosive/cl_init.lua @@ -0,0 +1,3 @@ +include("shared.lua") + +killicon.Add("mg_arrow_explosive", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) \ No newline at end of file diff --git a/lua/entities/mg_arrow_explosive/init.lua b/lua/entities/mg_arrow_explosive/init.lua new file mode 100644 index 0000000..8300a2b --- /dev/null +++ b/lua/entities/mg_arrow_explosive/init.lua @@ -0,0 +1,7 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_expbolt.mdl") +ENT.AoeEntity = "mg_aoe_arrow_explosion" \ No newline at end of file diff --git a/lua/entities/mg_arrow_explosive/shared.lua b/lua/entities/mg_arrow_explosive/shared.lua new file mode 100644 index 0000000..82d8dd2 --- /dev/null +++ b/lua/entities/mg_arrow_explosive/shared.lua @@ -0,0 +1,2 @@ +ENT.Base = "mg_arrow" +ENT.Type = "anim" \ No newline at end of file diff --git a/lua/entities/mg_arrow_flashbang/cl_init.lua b/lua/entities/mg_arrow_flashbang/cl_init.lua new file mode 100644 index 0000000..e45c860 --- /dev/null +++ b/lua/entities/mg_arrow_flashbang/cl_init.lua @@ -0,0 +1,3 @@ +include("shared.lua") + +killicon.Add("mg_arrow_flashbang", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) \ No newline at end of file diff --git a/lua/entities/mg_arrow_flashbang/init.lua b/lua/entities/mg_arrow_flashbang/init.lua new file mode 100644 index 0000000..252eb1e --- /dev/null +++ b/lua/entities/mg_arrow_flashbang/init.lua @@ -0,0 +1,83 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_flashbolt.mdl") +ENT.AoeEntity = nil + +local BaseClass = baseclass.Get(ENT.Base) + +local function isCowerSupportedForNPC(npc) + for _, a in pairs(npc:GetSequenceList()) do + if (npc:GetSequenceActivity(npc:LookupSequence(a)) == ACT_COWER) then + return true + end + end + + return false +end + +--[[local supportedNpcs = { + ["npc_antlion"] = "Flip1", + ["npc_antlionguard"] = "Stunned01", + ["npc_antlionguardian"] = "Stunned01", + ["npc_hunter"] = "Shakeoff", + ["npc_antlion_worker"] = "Flip1" +}]] --couldn't make these work + +local lethalToNpcs = {"npc_barnacle", "npc_crow", "npc_pigeon", "npc_seagull"} + +function ENT:Impact(tr, phys, bHull) + BaseClass.Impact(self, tr, phys, bHull) + + if (tr.HitSky) then + return + end + + self:EmitSound("MW19_Crossbow.Flashbang") + + local radius = self.FlashRadius + local owner = self:GetOwner() + ParticleEffect("arrow_flashbang", tr.HitPos, Angle(), nil, 0) + util.Decal("Scorch", tr.HitPos, tr.HitPos - tr.HitNormal * 10, self) + + timer.Simple(0.3, function() --ohshit moment + for _, e in pairs(ents.FindInSphere(tr.HitPos, radius)) do + if ((e:IsPlayer() || e:IsNPC()) && !e:IsLineOfSightClear(tr.HitPos + tr.HitNormal * 10)) then + continue + end + + if (e:IsPlayer()) then + local dist = e:GetPos():DistToSqr(tr.HitPos) + local distDelta = 1 - math.Clamp(dist / (radius * radius), 0, 1) + local strength = Lerp(distDelta, 0, 2) + + e:SendLua("LocalPlayer():EmitSound('MW19_Crossbow.Flashbang')") + local dot = e:EyeAngles():Forward():Dot((e:GetPos() - tr.HitPos):GetNormalized()) + strength = strength * math.max(-dot, 0.1) + + e:ScreenFade(SCREENFADE.IN, color_white, strength, strength * 0.5) + e:SetDSP(35) + + continue + end + + if (e:IsNPC()) then + e:StartEngineTask(89, 0) --task_sound_pain + + if (isCowerSupportedForNPC(e)) then + e:SetSchedule(SCHED_COWER) + else + if (table.HasValue(lethalToNpcs, e:GetClass())) then + e:TakeDamage(e:Health(), self:GetOwner(), self || nil) + end + end + + continue + end + end + end) + + sound.EmitHint(SOUND_DANGER, self:GetPos(), self.FlashRadius, 6, nil) --needed for task (make them blinded for a little longer) +end \ No newline at end of file diff --git a/lua/entities/mg_arrow_flashbang/shared.lua b/lua/entities/mg_arrow_flashbang/shared.lua new file mode 100644 index 0000000..5aa0ffb --- /dev/null +++ b/lua/entities/mg_arrow_flashbang/shared.lua @@ -0,0 +1,16 @@ +ENT.Base = "mg_arrow" +ENT.Type = "anim" + +ENT.FlashRadius = 1200 + +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("arrow_flashbang") + +sound.Add({ + name = "MW19_Crossbow.Flashbang", + channel = CHAN_BODY, + volume = 1, + level = 100, + pitch = {95, 105}, + sound = {"@viper/shared/smoke_expl_body_01.ogg"} +}) \ No newline at end of file diff --git a/lua/entities/mg_arrow_gas/cl_init.lua b/lua/entities/mg_arrow_gas/cl_init.lua new file mode 100644 index 0000000..9a2f2e2 --- /dev/null +++ b/lua/entities/mg_arrow_gas/cl_init.lua @@ -0,0 +1,3 @@ +include("shared.lua") + +killicon.Add("mg_arrow_gas", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) \ No newline at end of file diff --git a/lua/entities/mg_arrow_gas/init.lua b/lua/entities/mg_arrow_gas/init.lua new file mode 100644 index 0000000..c384f79 --- /dev/null +++ b/lua/entities/mg_arrow_gas/init.lua @@ -0,0 +1,14 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_stunbolt.mdl") +ENT.AoeEntity = "mg_aoe_arrow_gas" + +local BaseClass = baseclass.Get(ENT.Base) + +function ENT:Impact(tr, phys, bHull) + BaseClass.Impact(self, tr, phys, bHull) + ParticleEffectAttach("arrow_gas_ejection", PATTACH_ABSORIGIN_FOLLOW, self, 0) +end \ No newline at end of file diff --git a/lua/entities/mg_arrow_gas/shared.lua b/lua/entities/mg_arrow_gas/shared.lua new file mode 100644 index 0000000..21cace8 --- /dev/null +++ b/lua/entities/mg_arrow_gas/shared.lua @@ -0,0 +1,5 @@ +ENT.Base = "mg_arrow" +ENT.Type = "anim" + +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("arrow_gas_ejection") \ No newline at end of file diff --git a/lua/entities/mg_arrow_knockback/cl_init.lua b/lua/entities/mg_arrow_knockback/cl_init.lua new file mode 100644 index 0000000..ad6cf69 --- /dev/null +++ b/lua/entities/mg_arrow_knockback/cl_init.lua @@ -0,0 +1,3 @@ +include("shared.lua") + +killicon.Add("mg_arrow_knockback", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) \ No newline at end of file diff --git a/lua/entities/mg_arrow_knockback/init.lua b/lua/entities/mg_arrow_knockback/init.lua new file mode 100644 index 0000000..ed8f985 --- /dev/null +++ b/lua/entities/mg_arrow_knockback/init.lua @@ -0,0 +1,33 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_firebolt.mdl") +ENT.AoeEntity = nil + +local BaseClass = baseclass.Get(ENT.Base) + +function ENT:Impact(tr, phys, bHull) + BaseClass.Impact(self, tr, phys, bHull) + + if (tr.HitSky) then + return + end + + self:EmitSound("MW19_Crossbow.Knockback") + + local radius = self.KnockbackRadius + + for _, e in pairs(ents.FindInSphere(tr.HitPos, radius)) do + if ((e:IsPlayer() || e:IsNPC()) && !e:IsLineOfSightClear(tr.HitPos + tr.HitNormal * 10)) then + continue + end + + local force = self.KnockbackForce * (e:IsNPC() && 1.5 || 1) + + local dir = (e:WorldSpaceCenter() - tr.HitPos):GetNormalized() + local curVel = e:GetVelocity() + e:SetVelocity(Vector(curVel.x, curVel.y, 200) + dir * force) + end +end \ No newline at end of file diff --git a/lua/entities/mg_arrow_knockback/shared.lua b/lua/entities/mg_arrow_knockback/shared.lua new file mode 100644 index 0000000..46d5dbf --- /dev/null +++ b/lua/entities/mg_arrow_knockback/shared.lua @@ -0,0 +1,14 @@ +ENT.Base = "mg_arrow" +ENT.Type = "anim" + +ENT.KnockbackRadius = 320 +ENT.KnockbackForce = 300 + +sound.Add({ + name = "MW19_Crossbow.Knockback", + channel = CHAN_BODY, + volume = 1, + level = 100, + pitch = {95, 105}, + sound = {"@viper/shared/smoke_expl_body_01.ogg"} +}) \ No newline at end of file diff --git a/lua/entities/mg_arrow_smoke/cl_init.lua b/lua/entities/mg_arrow_smoke/cl_init.lua new file mode 100644 index 0000000..9a2f2e2 --- /dev/null +++ b/lua/entities/mg_arrow_smoke/cl_init.lua @@ -0,0 +1,3 @@ +include("shared.lua") + +killicon.Add("mg_arrow_gas", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) \ No newline at end of file diff --git a/lua/entities/mg_arrow_smoke/init.lua b/lua/entities/mg_arrow_smoke/init.lua new file mode 100644 index 0000000..a4573eb --- /dev/null +++ b/lua/entities/mg_arrow_smoke/init.lua @@ -0,0 +1,7 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_smokebolt.mdl") +ENT.AoeEntity = "mg_aoe_arrow_smoke" \ No newline at end of file diff --git a/lua/entities/mg_arrow_smoke/shared.lua b/lua/entities/mg_arrow_smoke/shared.lua new file mode 100644 index 0000000..21cace8 --- /dev/null +++ b/lua/entities/mg_arrow_smoke/shared.lua @@ -0,0 +1,5 @@ +ENT.Base = "mg_arrow" +ENT.Type = "anim" + +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("arrow_gas_ejection") \ No newline at end of file diff --git a/lua/entities/mg_arrow_stim/cl_init.lua b/lua/entities/mg_arrow_stim/cl_init.lua new file mode 100644 index 0000000..3c45dff --- /dev/null +++ b/lua/entities/mg_arrow_stim/cl_init.lua @@ -0,0 +1,3 @@ +include("shared.lua") + +killicon.Add("mg_arrow_stim", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) \ No newline at end of file diff --git a/lua/entities/mg_arrow_stim/init.lua b/lua/entities/mg_arrow_stim/init.lua new file mode 100644 index 0000000..53ae131 --- /dev/null +++ b/lua/entities/mg_arrow_stim/init.lua @@ -0,0 +1,49 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_stimbolt.mdl") +ENT.AoeEntity = nil + +local BaseClass = baseclass.Get(ENT.Base) + +local function isCowerSupportedForNPC(npc) + for _, a in pairs(npc:GetSequenceList()) do + if (npc:GetSequenceActivity(npc:LookupSequence(a)) == ACT_COWER) then + return true + end + end + + return false +end + +local function determineHealRelationship(ent, owner) + if (ent:IsNPC()) then + return ent:Disposition(owner) == D_LI + end + + if (ent:IsPlayer()) then + return ent:Team() == owner:Team() + end + + return false +end + +function ENT:Impact(tr, phys, bHull) + BaseClass.Impact(self, tr, phys, bHull) + + if (tr.HitSky) then + return + end + + if (!IsValid(tr.Entity)) then + return + end + + if (determineHealRelationship(tr.Entity, self:GetOwner())) then + tr.Entity:SetHealth(math.Clamp(tr.Entity:Health() + self.HealAmount, 0, tr.Entity:GetMaxHealth())) + tr.Entity:EmitSound("MW19_Crossbow.Heal") + ParticleEffect("arrow_heal", tr.HitPos, Angle(), nil, 0) + end +end \ No newline at end of file diff --git a/lua/entities/mg_arrow_stim/shared.lua b/lua/entities/mg_arrow_stim/shared.lua new file mode 100644 index 0000000..3f69e0c --- /dev/null +++ b/lua/entities/mg_arrow_stim/shared.lua @@ -0,0 +1,16 @@ +ENT.Base = "mg_arrow" +ENT.Type = "anim" + +ENT.HealAmount = 40 + +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("arrow_heal") + +sound.Add({ + name = "MW19_Crossbow.Heal", + channel = CHAN_BODY, + volume = 1, + level = 100, + pitch = {95, 105}, + sound = {"@viper/shared/heal.wav"} +}) \ No newline at end of file diff --git a/lua/entities/mg_arrow_thermite/cl_init.lua b/lua/entities/mg_arrow_thermite/cl_init.lua new file mode 100644 index 0000000..ccc6591 --- /dev/null +++ b/lua/entities/mg_arrow_thermite/cl_init.lua @@ -0,0 +1,3 @@ +include("shared.lua") + +killicon.Add("mg_arrow_thermite", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) \ No newline at end of file diff --git a/lua/entities/mg_arrow_thermite/init.lua b/lua/entities/mg_arrow_thermite/init.lua new file mode 100644 index 0000000..02e741c --- /dev/null +++ b/lua/entities/mg_arrow_thermite/init.lua @@ -0,0 +1,7 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_firebolt.mdl") +ENT.AoeEntity = "mg_aoe_arrow_thermite" \ No newline at end of file diff --git a/lua/entities/mg_arrow_thermite/shared.lua b/lua/entities/mg_arrow_thermite/shared.lua new file mode 100644 index 0000000..8665e8a --- /dev/null +++ b/lua/entities/mg_arrow_thermite/shared.lua @@ -0,0 +1,4 @@ +ENT.Base = "mg_arrow" +ENT.Type = "anim" + +game.AddParticles("particles/mw19_attachments.pcf") \ No newline at end of file diff --git a/lua/entities/mg_attachment.lua b/lua/entities/mg_attachment.lua new file mode 100644 index 0000000..bce4712 --- /dev/null +++ b/lua/entities/mg_attachment.lua @@ -0,0 +1,74 @@ +AddCSLuaFile() + +ENT.Type = "anim" +ENT.RenderGroup = RENDERGROUP_OTHER + +function ENT:SetupDataTables() + self:NetworkVar("Int", 0, "Slot") + self:NetworkVar("Int", 1, "Index") +end + +function ENT:Initialize() + if (!IsValid(self:GetOwner())) then + error("Invalid weapon for attachment!") + end + + self:AddEFlags(EFL_KEEP_ON_RECREATE_ENTITIES) + self:AddEFlags(EFL_FORCE_CHECK_TRANSMIT) + self:AddEFlags(EFL_NO_THINK_FUNCTION) + self:AddEFlags(EFL_NO_GAME_PHYSICS_SIMULATION) + self:AddEFlags(EFL_DONTBLOCKLOS) + self:AddEFlags(EFL_DONTWALKON) + self:AddEFlags(EFL_NO_DISSOLVE) + self:AddEFlags(EFL_NO_PHYSCANNON_INTERACTION) + self:AddEFlags(EFL_NO_DAMAGE_FORCES) + + self:AddFlags(FL_NOTARGET) + self:AddFlags(FL_DONTTOUCH) + self:AddFlags(FL_STEPMOVEMENT) + self:SetNoDraw(true) + + self:SetMoveType(MOVETYPE_NONE) + self:SetSolid(SOLID_NONE) + + self:Attach() +end + +function ENT:Attach() + local weapon = self:GetOwner() + + if (SERVER) then + for _, child in pairs(weapon:GetChildren()) do + if (child:GetClass() == "mg_attachment" && child:GetSlot() == self:GetSlot() && child != self) then + child:Remove() + end + end + + weapon:Attach(self:GetSlot(), self:GetIndex()) + return + end + + --on client we do this gibberish + local identifier = "mg_attachment_fixup"..self:EntIndex() + + timer.Create(identifier, 0, 0, function() + if (!IsValid(weapon)) then + timer.Destroy(identifier) + return + end + + if (weapon.Attach != nil && self.GetSlot != nil) then + weapon:Attach(self:GetSlot(), self:GetIndex()) + timer.Destroy(identifier) + end + end) +end + +--sorryyyyy garrysmod-issues/issues/5344 +local oldCleanup = game.CleanUpMap +function game.CleanUpMap(dontSendToClients, ExtraFilters) + dontSendToClients = dontSendToClients || false + ExtraFilters = ExtraFilters || {} + table.insert(ExtraFilters, "mg_attachment") + oldCleanup(dontSendToClients, ExtraFilters) +end \ No newline at end of file diff --git a/lua/entities/mg_bullet/cl_init.lua b/lua/entities/mg_bullet/cl_init.lua new file mode 100644 index 0000000..6aceeb3 --- /dev/null +++ b/lua/entities/mg_bullet/cl_init.lua @@ -0,0 +1,69 @@ +include("shared.lua") + +ENT.RenderGroup = RENDERGROUP_TRANSLUCENT +ENT.bWhizz = false + +local flareMaterial = Material("sprites/orangecore1_gmod") + +function ENT:DrawTranslucent(flags) + self:DestroyShadow() + + if (self:GetVelocity():Length() <= 1) then + return + end + + self:DrawLight() + self:DrawTracer() + self:DrawBullet() +end + +function ENT:DrawLight() + local dlight = DynamicLight(self:EntIndex()) + if (dlight) then + dlight.pos = self:GetPos() + dlight.r = 255 + dlight.g = 155 + dlight.b = 0 + dlight.brightness = 2 + dlight.Decay = 500 + dlight.Size = 128 + dlight.DieTime = CurTime() + 0.1 + end +end + +function ENT:DrawBullet() + local angle = (self:GetPos() - EyePos()):Angle() + angle:RotateAroundAxis(EyeAngles():Right(), 90) + + local dist = math.min(self:GetPos():Distance(EyePos()), 300) + + cam.Start3D2D(self:GetPos(), angle, dist * 0.0004) + surface.SetDrawColor(255, 255, 255, 255) + surface.SetMaterial(flareMaterial) + surface.DrawTexturedRectRotated(0, 0, 32, 32, 0) + cam.End3D2D() +end + +function ENT:DrawTracer() + local angle = self:GetAngles() + angle:RotateAroundAxis(self:GetAngles():Forward(), 90) + + cam.Start3D2D(self:GetPos(), angle, 0.15) + surface.SetDrawColor(255, 255, 255, 255) + surface.SetMaterial(flareMaterial) + surface.DrawTexturedRectUV(-512, -3, 512, 6, 0, 0, 0.5, 1) + cam.End3D2D() +end + +function ENT:Think() + if (!IsValid(GetViewEntity())) then + return + end + + local bInRadius = EyePos():DistToSqr(self:GetPos()) < 128 * 128 + + if (bInRadius && !self.bWhizz && self:GetOwner() != GetViewEntity()) then + GetViewEntity():EmitSound("Bullets.DefaultNearmiss") + self.bWhizz = true + end +end \ No newline at end of file diff --git a/lua/entities/mg_bullet/init.lua b/lua/entities/mg_bullet/init.lua new file mode 100644 index 0000000..a291d3d --- /dev/null +++ b/lua/entities/mg_bullet/init.lua @@ -0,0 +1,112 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +ENT.bCollided = false +ENT.Projectile = { + Class = "mg_bullet", + Speed = 4000, + Gravity = 1 +} +ENT.Maxs = Vector(6, 6, 6) + +function ENT:Initialize() + self:SetModel("models/weapons/ar2_grenade.mdl") + self:PhysicsInitBox(Vector(-1, -1, -1), Vector(1, 1, 1)) + self:GetPhysicsObject():Wake() + self:GetPhysicsObject():SetMaterial("default_silent") + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_NO_PLAYER_PICKUP) + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_NO_IMPACT_DMG) + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_HEAVY_OBJECT) + self:GetPhysicsObject():EnableMotion(true) + self:GetPhysicsObject():EnableDrag(false) + self:GetPhysicsObject():SetMass(1000) + self:SetSolid(SOLID_VPHYSICS) + self:SetCollisionGroup(COLLISION_GROUP_IN_VEHICLE) --doesn't collide with anything, no traces + self:AddEFlags(EFL_NO_DAMAGE_FORCES) + self:AddEFlags(EFL_DONTWALKON) + self:AddEFlags(EFL_DONTBLOCKLOS) + self:AddEFlags(EFL_NO_PHYSCANNON_INTERACTION) + + self.Projectile = table.Copy(self.Weapon.Projectile) + self:GetPhysicsObject():SetVelocityInstantaneous(self:GetAngles():Forward() * self.Projectile.Speed) + self.LastPos = self:GetOwner():EyePos() +end + +function ENT:Think() + if (self.bCollided && IsValid(self)) then + self:Remove() + end +end + +function ENT:PhysicsUpdate(phys) + phys:AddVelocity(Vector(0, 0, self.Projectile.Gravity)) + + if (!self.bCollided) then + --Aim assist + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Box(phys:GetPos(), -self.Maxs, self.Maxs, 0, Color(0, 200, 50, 10)) + end + + local trData = { + start = self.LastPos, + endpos = phys:GetPos(), + filter = {self:GetOwner(), self}, + mask = MASK_SHOT_PORTAL, + collisiongroup = COLLISION_GROUP_PROJECTILE, + mins = -self.Maxs, + maxs = self.Maxs + } + + local tr = util.TraceHull(trData) + if (tr.Hit && (tr.Entity:IsPlayer() || tr.Entity:IsNPC())) then + self:Impact(tr, phys, true) + return + end + + --Normal hitscan + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Line(self.LastPos, phys:GetPos(), 1, Color(255, 0, 0, 1)) + end + + tr = util.TraceLine(trData) + if (tr.Hit) then + self:Impact(tr, phys, false) + return + end + end + + self.LastPos = phys:GetPos() +end + +function ENT:Impact(tr, phys, bHull) + if (IsValid(self.Weapon)) then + self:FireBullets({ + Attacker = self:GetOwner(), + Num = 1, + Tracer = 0, + Src = self.LastPos, + Dir = (phys:GetPos() - self.LastPos):GetNormalized(), + HullSize = bHull && self.Maxs:Length() * 2 || 1, + IgnoreEntity = self, + Callback = function(attacker, tr, dmgInfo) + dmgInfo:SetInflictor(self.Weapon) + dmgInfo:SetDamageType(DMG_DIRECT + self:GetDamageType()) + self.Weapon:BulletCallback(attacker, tr, dmgInfo) + end + }) + end + + self:Kill() +end + +function ENT:Kill() + self.bCollided = true + self:SetNoDraw(true) + self:GetPhysicsObject():EnableMotion(false) +end + +function ENT:GetDamageType() + return DMG_BULLET +end \ No newline at end of file diff --git a/lua/entities/mg_bullet/shared.lua b/lua/entities/mg_bullet/shared.lua new file mode 100644 index 0000000..46db647 --- /dev/null +++ b/lua/entities/mg_bullet/shared.lua @@ -0,0 +1,5 @@ +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.Spawnable = false +ENT.AdminOnly = false \ No newline at end of file diff --git a/lua/entities/mg_frag_grenade/cl_init.lua b/lua/entities/mg_frag_grenade/cl_init.lua new file mode 100644 index 0000000..2128ded --- /dev/null +++ b/lua/entities/mg_frag_grenade/cl_init.lua @@ -0,0 +1,7 @@ +include("shared.lua") + +function ENT:Draw() + + self:DrawModel() + +end \ No newline at end of file diff --git a/lua/entities/mg_frag_grenade/init.lua b/lua/entities/mg_frag_grenade/init.lua new file mode 100644 index 0000000..04d5b14 --- /dev/null +++ b/lua/entities/mg_frag_grenade/init.lua @@ -0,0 +1,55 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +function ENT:Initialize() + self:SetModel("models/items/grenadeammo.mdl") + self:PhysicsInit(SOLID_VPHYSICS) + self:SetMoveType(MOVETYPE_VPHYSICS) + self:SetSolid(SOLID_VPHYSICS) + self:SetColor(Color(0,0,0)) + + local phys = self:GetPhysicsObject() + + if phys:IsValid() then + + phys:Wake() + + end + + self.DetonationTime = self.FuseTime + CurTime() + + self:Throw() + +end + + +function ENT:PhysicsCollide( data, phys ) + if data.Speed > 40 then + self:EmitSound("equipment/mike67/phy_frag_bounce_concrete_med_0"..math.random(1,8).."_ext.ogg",75, 100, math.Remap(data.Speed, 40, 80, 0, 1), CHAN_AUTO) + end +end + +function ENT:Think() + + if self.DetonationTime <= CurTime() then + self:Explode() + end + +end + +function ENT:Explode() + ParticleEffect( "Generic_explo_high", self:GetPos(), Angle(0,0,0)) + util.BlastDamage(self, self:GetOwner(), self:GetPos(), 475, 640) + util.ScreenShake(self:GetPos(), 8, 3, 1, 700) + self:EmitSound("^viper/shared/frag_expl.ogg", 0, 100, 1, CHAN_WEAPON) + util.Decal( "Scorch", self:GetPos(), self:GetPos() + Vector(0, 0, -10), {self}) + self:Remove() +end + +function ENT:Throw() + local phys = self:GetPhysicsObject() + phys:SetVelocity(self:GetOwner():GetAimVector() * 3000) + phys:ApplyTorqueCenter( VectorRand( -3, 3) ) +end \ No newline at end of file diff --git a/lua/entities/mg_frag_grenade/shared.lua b/lua/entities/mg_frag_grenade/shared.lua new file mode 100644 index 0000000..c1f77cf --- /dev/null +++ b/lua/entities/mg_frag_grenade/shared.lua @@ -0,0 +1,6 @@ +ENT.Type = "anim" +ENT.Base = "base_gmodentity" + +ENT.PrintName = "Frag Grenade" +ENT.Spawnable = false +ENT.FuseTime = 5 \ No newline at end of file diff --git a/lua/entities/mg_javelin_airstrike_warhead/cl_init.lua b/lua/entities/mg_javelin_airstrike_warhead/cl_init.lua new file mode 100644 index 0000000..7eca5a6 --- /dev/null +++ b/lua/entities/mg_javelin_airstrike_warhead/cl_init.lua @@ -0,0 +1,84 @@ +include("shared.lua") + +ENT.AutomaticFrameAdvance = true + + +local flair = Material("shadowdark/flairs/grenade_flair.vmt") +ENT.OuterFlairColor = Color(236,153,17,255) +ENT.InnerFlairColor = Color(255,255,255,255) + +ENT.OuterFlairScale = 1 +ENT.InnerFlairScale = 0.3 + +function ENT:Draw(flags) + self:DrawModel(flags) + + if (self.m_SpawnPos != nil && self:GetPos():Distance(self.m_SpawnPos) > 64) then + ParticleEffectAttach("rockettrail", PATTACH_ABSORIGIN_FOLLOW, self, 0) + self.m_SpawnPos = nil + end + + local ang = LocalPlayer():EyeAngles() + local angle = Angle( 0, LocalPlayer():EyeAngles()[2], 0 ) + + angle = Angle(LocalPlayer():EyeAngles()[1], angle.y, 0 ) + + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + + cam.Start3D2D( self:GetPos() - self:GetForward() * 20, angle, 0.2 ) + + local OuterScale = 512 * self.OuterFlairScale + local InnerScale = 512 * self.InnerFlairScale + + surface.SetMaterial(flair) + surface.SetDrawColor(self.OuterFlairColor) + surface.DrawTexturedRect(-OuterScale/2, -OuterScale/2, OuterScale, OuterScale) + + surface.SetDrawColor(self.InnerFlairColor) + surface.DrawTexturedRect(-InnerScale/2, -InnerScale/2, InnerScale, InnerScale) +cam.End3D2D() + +end + +function ENT:DrawTranslucent(flags) + self:Draw(flags) +end + +function ENT:OnRemove() + if (self:WaterLevel() <= 0) then + self:EmitSound("^viper/shared/rocket_expl_body_01.wav", 0, 100, 1, CHAN_WEAPON) --snd scripts dont work lol! + + local dlight = DynamicLight(self:EntIndex()) + if (dlight) then + dlight.pos = self:GetPos() + dlight.r = 255 + dlight.g = 75 + dlight.b = 0 + dlight.brightness = 5 + dlight.Decay = 2000 + dlight.Size = 1024 + dlight.DieTime = CurTime() + 5 + end + end + + self:StopParticles() +end + +--[[--------------------------------------------------------- + Name: Think + Desc: Client Think - called every frame +-----------------------------------------------------------]] +function ENT:Think() + if (self:WaterLevel() > 0) then + self:EmitSound("viper/shared/melee/melee_world_fist_soft_plr_01.ogg", 75, 100, 0.001, CHAN_WEAPON) + self:StopParticles() + end +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: Called immediately after a "load" +-----------------------------------------------------------]] +function ENT:OnRestore() +end diff --git a/lua/entities/mg_javelin_airstrike_warhead/init.lua b/lua/entities/mg_javelin_airstrike_warhead/init.lua new file mode 100644 index 0000000..143c8d1 --- /dev/null +++ b/lua/entities/mg_javelin_airstrike_warhead/init.lua @@ -0,0 +1,239 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + + + +--[[--------------------------------------------------------- + Name: KeyValue + Desc: Called when a keyvalue is added to us +-----------------------------------------------------------]] +function ENT:KeyValue( key, value ) +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: The game has just been reloaded. This is usually the right place + to call the GetNW* functions to restore the script's values. +-----------------------------------------------------------]] +function ENT:OnRestore() +end + +--[[--------------------------------------------------------- + Name: AcceptInput + Desc: Accepts input, return true to override/accept input +-----------------------------------------------------------]] +function ENT:AcceptInput( name, activator, caller, data ) + return false +end + +--[[--------------------------------------------------------- + Name: UpdateTransmitState + Desc: Set the transmit state +-----------------------------------------------------------]] +function ENT:UpdateTransmitState() + return TRANSMIT_ALWAYS +end + +--[[--------------------------------------------------------- + Name: Think + Desc: Entity's think function. +-----------------------------------------------------------]] +function ENT:Think() +end + +function ENT:PhysicsCollide(colData, collider) + if (self.m_Water && self:GetVelocity():Length() < 250) then + timer.Simple(0, function() + self:Remove() + end) + + return + end + + local bHasExploded = false + + for i, e in pairs(ents.FindInSphere(self:GetPos(), 16)) do + if (e:IsNPC()) then + self:Explode({ + HitEntity = e, + HitNormal = (e:NearestPoint(self:GetPos()) - self:GetPos()):GetNormalized(), + HitPos = e:NearestPoint(self:GetPos()) + }) + + if (e:GetClass() == "npc_strider") then + e:Fire("Explode") + end + + bHasExploded = true + end + end + + if (!bHasExploded) then + self:Explode(colData) + end +end + +local function WithinRange(num,min,max) + return num < max && num > min +end + +function ENT:PhysicsUpdate(phys) + + self.Target:SetPos(phys:GetPos()) + + debugoverlay.Cross( self.TrackedPosition, 30, 1, Color( 255, 255, 255 ), true ) + + self.m_Fuel = self.m_Fuel - 100 * FrameTime() + + if (self.m_Propel && self.m_Fuel <= 0) then + self.m_Propel = false + phys:EnableDrag(true) + phys:EnableGravity(true) + phys:AddVelocity(phys:GetAngles():Forward() * self.Projectile.Speed) + end + + if (self.m_Propel) then + + if self.TrackedEntity && self.TrackedEntity:IsValid() then + self.TargetPos = self.TrackedEntity:GetPos() + else + --self.TrackedPosition = self.WeaponData.TrackedPosition + end + + phys:SetPos(self.LastPos + phys:GetAngles():Forward() * (self.Projectile.Speed * FrameTime()) - (Vector(0, 0, self.m_gravity) * FrameTime())) + + if (self.m_State == "Ascent") then + local angle = phys:GetAngles() + angle.p = math.Clamp(angle.p - 6, -89, 89) + phys:SetAngles(angle) + if self:GetPos().z >= self.CruiseHeight then + self.m_State = "Cruise" + end + elseif (self.m_State == "Cruise") then + local range = 1100 + local angle = phys:GetAngles() + angle.p = math.Clamp(angle.p + 2, -90,-0) + phys:SetAngles(angle) + if WithinRange(phys:GetPos().x,self.TrackedPosition.x - range,self.TrackedPosition.x + range) && WithinRange(phys:GetPos().y,self.TrackedPosition.y - range,self.TrackedPosition.y + range) then + self:Explode() + end + end + + else + local vel = phys:GetVelocity() + phys:SetAngles(vel:Angle() + Angle(self.Projectile.Gravity,math.Rand(self.m_Stability / -self.Projectile.Stability, self.m_Stability / self.Projectile.Stability),self.m_gravity)) + phys:SetVelocity(vel) + end + + if (!self.bCollided) then + --Aim assist + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Box(phys:GetPos(), -self.Maxs, self.Maxs, 0, Color(0, 200, 50, 10)) + end + + local trData = { + start = self.LastPos, + endpos = phys:GetPos(), + filter = {self:GetOwner(), self}, + mask = MASK_SHOT_PORTAL, + collisiongroup = COLLISION_GROUP_NONE, + mins = -self:OBBMaxs(), + maxs = self:OBBMins() + } + + local tr = util.TraceHull(trData) + + if (tr.Hit && (tr.Entity:IsPlayer() || tr.Entity:IsNPC())) then + self:SetPos(tr.HitPos) + self:Explode(tr) + + if (tr.Entity:GetClass() == "npc_strider") then + tr.Entity:Fire("Explode") + elseif tr.Entity:GetClass() != self:GetClass() && tr.Entity:GetClass() != "mg_javelin_airstrike_warhead" then + local dmg = DamageInfo() + dmg:SetDamage(1) + dmg:SetAttacker(self:GetOwner()) + dmg:SetInflictor(self) + tr.Entity:TakeDamageInfo(dmg) + end + + return + end + + --Normal hitscan + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Line(self.LastPos, phys:GetPos(), 1, Color(255, 0, 0, 1)) + end + + tr = util.TraceLine(trData) + + if (tr.Hit) then + self:SetPos(tr.HitPos) + self:Explode(tr) + return + end + end + + self.LastPos = phys:GetPos() +end + +function ENT:Explode() + + local phys = self:GetPhysicsObject() + if (self:WaterLevel() <= 0) then + ParticleEffect("Generic_explo_high", phys:GetPos(),Angle(0,0,0)) + else + local effectdata = EffectData() + effectdata:SetOrigin(phys:GetPos()) + util.Effect("WaterSurfaceExplosion", effectdata) + end + + local dmgInfo = DamageInfo() + dmgInfo:SetDamage(50) + dmgInfo:SetAttacker(IsValid(self:GetOwner()) && self:GetOwner() || self) + dmgInfo:SetInflictor(self) + dmgInfo:SetDamageType(self:GetDamageType()) + util.BlastDamageInfo(dmgInfo, phys:GetPos(), self.WeaponData.Explosive.BlastRadius) + + util.ScreenShake(phys:GetPos(), 3500, 1111, 1, self.WeaponData.Explosive.BlastRadius * 4) + + + --release submunitions + + for i = 1,12,1 do + local ent = ents.Create("mg_submunition") + ent:SetPos(self:GetPos()) + ent:SetAngles(AngleRand()) + ent.LastPos = self:GetPos() + ent:SetOwner(self:GetOwner()) + ent.Damage = self.Weapon.Bullet.Damage[1] / 12 + + if self.TrackedEntity then + ent.TrackedEntity = self.TrackedEntity + else + local ents = ents.FindInSphere(self.TrackedPosition, 1000) + local targets = {} + for k,v in pairs(ents) do + if v:IsNPC() || v:IsPlayer() || v:IsVehicle() then + table.insert(targets, v) + end + end + PrintTable(targets) + if targets[1] then + ent.TrackedEntity = targets[math.random(1, #targets)] + end + end + + timer.Simple(i/50, function() + ent:Spawn() + end) + end + + self:Remove() +end + +function ENT:GetDamageType() + return DMG_BLAST + DMG_AIRBOAT +end \ No newline at end of file diff --git a/lua/entities/mg_javelin_airstrike_warhead/shared.lua b/lua/entities/mg_javelin_airstrike_warhead/shared.lua new file mode 100644 index 0000000..625d64d --- /dev/null +++ b/lua/entities/mg_javelin_airstrike_warhead/shared.lua @@ -0,0 +1,79 @@ + +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.Spawnable = false +ENT.AdminOnly = false + +ENT.ExplosionRadius = 430 +ENT.ExplosionDamage = 700 + +game.AddParticles("particles/explosion_fx_ins.pcf") +game.AddParticles("particles/ins_rockettrail.pcf") +PrecacheParticleSystem("ins_C4_explosion") +PrecacheParticleSystem("ins_grenade_explosion") +PrecacheParticleSystem("ins_m203_explosion") +PrecacheParticleSystem("ins_rpg_explosion") +PrecacheParticleSystem("rockettrail") + +function ENT:SetupDataTables() +end + +--[[--------------------------------------------------------- + Name: Initialize + Desc: First function called. Use to set up your entity +-----------------------------------------------------------]] + +function ENT:Initialize() + self:SetModel("models/viper/mw/weapons/w_juliet_rocket.mdl") + self:AddEFlags(EFL_FORCE_CHECK_TRANSMIT) + self:SetCustomCollisionCheck(true) + + if (SERVER) then + self:PhysicsInit(SOLID_VPHYSICS) + self:GetPhysicsObject():SetMaterial("metal") + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_NO_PLAYER_PICKUP) + self:GetPhysicsObject():EnableDrag(false) + self:GetPhysicsObject():EnableGravity(false) + self:GetPhysicsObject():Wake() + + self.Projectile = table.Copy(self.Weapon.Projectile) + self.WeaponData = self.Weapon:GetTable() + + self.m_Propel = true + self.m_Fuel = self.Projectile.Fuel + self.m_Stability = 0 + self.m_Water = false + self.m_State = "Ascent" + self.LastPos = self:GetOwner():EyePos() + self.Target = ents.Create("info_target") + self.Target:Spawn() + + local up = self:GetPos() + up.z = up.z + 2000 + + local tr = util.TraceLine( { + start = self:GetPos(), + endpos = up, + filter = {self,self:GetOwner()} + } ) + + self.CruiseHeight = tr.HitPos.z - 900 + + if self.WeaponData.TrackedEntity then + self.m_Tracking = self.Projectile.Tracking + self.TrackedEntity = self.WeaponData.TrackedEntity + self.TrackedPosition = self.WeaponData.TrackedEntity:GetPos() + else + local tr = self.Weapon:GetOwner():GetEyeTrace() + self.TrackedPosition = tr.HitPos + self.TargetPos = tr.HitPos + end + + end + + if (CLIENT) then + self.m_SpawnPos = self:GetPos() + self:EmitSound("^weapons/juliet/weap_juliet_proj_lp_01.wav", SNDLVL_180db, 100, 1, CHAN_WEAPON) + end +end \ No newline at end of file diff --git a/lua/entities/mg_javelin_warhead/cl_init.lua b/lua/entities/mg_javelin_warhead/cl_init.lua new file mode 100644 index 0000000..830556e --- /dev/null +++ b/lua/entities/mg_javelin_warhead/cl_init.lua @@ -0,0 +1,84 @@ +include("shared.lua") + +ENT.AutomaticFrameAdvance = true + + +local flair = Material("shadowdark/flairs/grenade_flair.vmt") +ENT.OuterFlairColor = Color(236,153,17,255) +ENT.InnerFlairColor = Color(255,255,255,255) + +ENT.OuterFlairScale = 1 +ENT.InnerFlairScale = 0.3 + +function ENT:Draw(flags) + self:DrawModel(flags) + + if (self.m_SpawnPos != nil && self:GetPos():Distance(self.m_SpawnPos) > 64) then + ParticleEffectAttach("rockettrail", PATTACH_ABSORIGIN_FOLLOW, self, 0) + self.m_SpawnPos = nil + end + + local ang = LocalPlayer():EyeAngles() + local angle = Angle( 0, LocalPlayer():EyeAngles()[2], 0 ) + + angle = Angle(LocalPlayer():EyeAngles()[1], angle.y, 0 ) + + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + + cam.Start3D2D( self:GetPos() - self:GetForward() * 20, angle, 0.2 ) + + local OuterScale = 512 * self.OuterFlairScale + local InnerScale = 512 * self.InnerFlairScale + + surface.SetMaterial(flair) + surface.SetDrawColor(self.OuterFlairColor) + surface.DrawTexturedRect(-OuterScale/2, -OuterScale/2, OuterScale, OuterScale) + + surface.SetDrawColor(self.InnerFlairColor) + surface.DrawTexturedRect(-InnerScale/2, -InnerScale/2, InnerScale, InnerScale) +cam.End3D2D() + +end + +function ENT:DrawTranslucent(flags) + self:Draw(flags) +end + +function ENT:OnRemove() + if (self:WaterLevel() <= 0) then + self:EmitSound("^viper/shared/rocket_expl_env_0"..math.random(1, 3)..".wav", 150, 100, 1, CHAN_WEAPON) --snd scripts dont work lol! + + local dlight = DynamicLight(self:EntIndex()) + if (dlight) then + dlight.pos = self:GetPos() + dlight.r = 255 + dlight.g = 75 + dlight.b = 0 + dlight.brightness = 5 + dlight.Decay = 2000 + dlight.Size = 1024 + dlight.DieTime = CurTime() + 5 + end + end + + self:StopParticles() +end + +--[[--------------------------------------------------------- + Name: Think + Desc: Client Think - called every frame +-----------------------------------------------------------]] +function ENT:Think() + if (self:WaterLevel() > 0) then + self:EmitSound("viper/shared/melee/melee_world_fist_soft_plr_01.ogg", 75, 100, 0.001, CHAN_WEAPON) + self:StopParticles() + end +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: Called immediately after a "load" +-----------------------------------------------------------]] +function ENT:OnRestore() +end diff --git a/lua/entities/mg_javelin_warhead/init.lua b/lua/entities/mg_javelin_warhead/init.lua new file mode 100644 index 0000000..301fa37 --- /dev/null +++ b/lua/entities/mg_javelin_warhead/init.lua @@ -0,0 +1,224 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + + + +--[[--------------------------------------------------------- + Name: KeyValue + Desc: Called when a keyvalue is added to us +-----------------------------------------------------------]] +function ENT:KeyValue( key, value ) +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: The game has just been reloaded. This is usually the right place + to call the GetNW* functions to restore the script's values. +-----------------------------------------------------------]] +function ENT:OnRestore() +end + +--[[--------------------------------------------------------- + Name: AcceptInput + Desc: Accepts input, return true to override/accept input +-----------------------------------------------------------]] +function ENT:AcceptInput( name, activator, caller, data ) + return false +end + +--[[--------------------------------------------------------- + Name: UpdateTransmitState + Desc: Set the transmit state +-----------------------------------------------------------]] +function ENT:UpdateTransmitState() + return TRANSMIT_ALWAYS +end + +--[[--------------------------------------------------------- + Name: Think + Desc: Entity's think function. +-----------------------------------------------------------]] +function ENT:Think() +end + +function ENT:PhysicsCollide(colData, collider) + if (self.m_Water && self:GetVelocity():Length() < 250) then + timer.Simple(0, function() + self:Remove() + end) + + return + end + + local bHasExploded = false + + for i, e in pairs(ents.FindInSphere(self:GetPos(), 16)) do + if (e:IsNPC()) then + self:Explode({ + HitEntity = e, + HitNormal = (e:NearestPoint(self:GetPos()) - self:GetPos()):GetNormalized(), + HitPos = e:NearestPoint(self:GetPos()) + }) + + if (e:GetClass() == "npc_strider") then + e:Fire("Explode") + end + + bHasExploded = true + end + end + + if (!bHasExploded) then + self:Explode(colData) + end +end + +local function WithinRange(num,min,max) + return num < max && num > min +end + +function ENT:PhysicsUpdate(phys) + + self.Target:SetPos(phys:GetPos()) + + debugoverlay.Cross( self.TrackedPosition, 30, 1, Color( 255, 255, 255 ), true ) + + self.m_Fuel = self.m_Fuel - 100 * FrameTime() + + if (self.m_Propel && self.m_Fuel <= 0) then + self.m_Propel = false + phys:EnableDrag(true) + phys:EnableGravity(true) + phys:AddVelocity(phys:GetAngles():Forward() * self.Projectile.Speed) + end + + if (self.m_Propel) then + + if self.TrackedEntity && self.TrackedEntity:IsValid() then + self.TargetPos = self.TrackedEntity:GetPos() + else + --self.TrackedPosition = self.WeaponData.TrackedPosition + end + + phys:SetPos(self.LastPos + phys:GetAngles():Forward() * (self.Projectile.Speed * FrameTime()) - (Vector(0, 0, self.m_gravity) * FrameTime())) + + if (self.m_State == "Ascent") then + local angle = phys:GetAngles() + angle.p = math.Clamp(angle.p - 6, -89, 89) + phys:SetAngles(angle) + if self:GetPos().z >= self.CruiseHeight then + self.m_State = "Cruise" + end + elseif (self.m_State == "Cruise") then + local range = 1100 + local angle = phys:GetAngles() + angle.p = math.Clamp(angle.p + 2, -90,-0) + phys:SetAngles(angle) + if WithinRange(phys:GetPos().x,self.TrackedPosition.x - range,self.TrackedPosition.x + range) && WithinRange(phys:GetPos().y,self.TrackedPosition.y - range,self.TrackedPosition.y + range) then + self.m_State = "Seek" + end + elseif (self.m_State == "Seek") then + local dir = self.TargetPos - phys:GetPos() + phys:SetAngles(LerpAngle(0.09, phys:GetAngles(), dir:Angle())) + end + + else + local vel = phys:GetVelocity() + phys:SetAngles(vel:Angle() + Angle(self.Projectile.Gravity,math.Rand(self.m_Stability / -self.Projectile.Stability, self.m_Stability / self.Projectile.Stability),self.m_gravity)) + phys:SetVelocity(vel) + end + + if (!self.bCollided) then + --Aim assist + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Box(phys:GetPos(), -self.Maxs, self.Maxs, 0, Color(0, 200, 50, 10)) + end + + local trData = { + start = self.LastPos, + endpos = phys:GetPos(), + filter = {self:GetOwner(), self}, + mask = MASK_SHOT_PORTAL, + collisiongroup = COLLISION_GROUP_NONE, + mins = -self:OBBMaxs(), + maxs = self:OBBMins() + } + + local tr = util.TraceHull(trData) + + if (tr.Hit && (tr.Entity:IsPlayer() || tr.Entity:IsNPC())) then + self:SetPos(tr.HitPos) + self:ImpactDamage(tr.Entity) + self:Explode(tr) + + if (tr.Entity:GetClass() == "npc_strider") then + tr.Entity:Fire("Explode") + elseif (tr.Entity:GetClass() == "npc_combinegunship") then + local dmg = DamageInfo() + dmg:SetDamage(1) + dmg:SetAttacker(self:GetOwner()) + dmg:SetInflictor(self) + tr.Entity:TakeDamageInfo(dmg) + end + + return + end + + --Normal hitscan + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Line(self.LastPos, phys:GetPos(), 1, Color(255, 0, 0, 1)) + end + + tr = util.TraceLine(trData) + + if (tr.Hit) then + self:SetPos(tr.HitPos) + self:ImpactDamage(tr.Entity) + self:Explode(tr) + return + end + end + + self.LastPos = phys:GetPos() +end + +function ENT:Explode(trData) + + local phys = self:GetPhysicsObject() + if (self:WaterLevel() <= 0) then + ParticleEffect("Generic_explo_vhigh", phys:GetPos() + trData.HitNormal,Angle(0,0,0)) + else + local effectdata = EffectData() + effectdata:SetOrigin(phys:GetPos()) + util.Effect("WaterSurfaceExplosion", effectdata) + end + + local dmgInfo = DamageInfo() + dmgInfo:SetDamage(self.WeaponData.Bullet.Damage[1]) + dmgInfo:SetAttacker(IsValid(self:GetOwner()) && self:GetOwner() || self) + dmgInfo:SetInflictor(self) + dmgInfo:SetDamageType(self:GetDamageType()) + util.BlastDamageInfo(dmgInfo, phys:GetPos(), self.WeaponData.Explosive.BlastRadius) + + util.ScreenShake(phys:GetPos(), 3500, 1111, 1, self.WeaponData.Explosive.BlastRadius * 4) + + util.Decal("Scorch", trData.HitPos - trData.HitNormal, trData.HitPos + trData.HitNormal, self) + + self:Remove() +end + +function ENT:ImpactDamage(ent) + local dmgInfo = DamageInfo() + dmgInfo:SetDamage(self.WeaponData.Bullet.Damage[1] / self.WeaponData.Explosive.ImpactBlastRatio) + dmgInfo:SetAttacker(IsValid(self:GetOwner()) && self:GetOwner() || self) + dmgInfo:SetInflictor(self) + dmgInfo:SetDamageType(self:GetDamageType()) + dmgInfo:SetDamagePosition(self:GetPos()) + ent:TakeDamageInfo(dmgInfo) +end + +function ENT:GetDamageType() + return DMG_BLAST + DMG_AIRBOAT +end \ No newline at end of file diff --git a/lua/entities/mg_javelin_warhead/shared.lua b/lua/entities/mg_javelin_warhead/shared.lua new file mode 100644 index 0000000..625d64d --- /dev/null +++ b/lua/entities/mg_javelin_warhead/shared.lua @@ -0,0 +1,79 @@ + +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.Spawnable = false +ENT.AdminOnly = false + +ENT.ExplosionRadius = 430 +ENT.ExplosionDamage = 700 + +game.AddParticles("particles/explosion_fx_ins.pcf") +game.AddParticles("particles/ins_rockettrail.pcf") +PrecacheParticleSystem("ins_C4_explosion") +PrecacheParticleSystem("ins_grenade_explosion") +PrecacheParticleSystem("ins_m203_explosion") +PrecacheParticleSystem("ins_rpg_explosion") +PrecacheParticleSystem("rockettrail") + +function ENT:SetupDataTables() +end + +--[[--------------------------------------------------------- + Name: Initialize + Desc: First function called. Use to set up your entity +-----------------------------------------------------------]] + +function ENT:Initialize() + self:SetModel("models/viper/mw/weapons/w_juliet_rocket.mdl") + self:AddEFlags(EFL_FORCE_CHECK_TRANSMIT) + self:SetCustomCollisionCheck(true) + + if (SERVER) then + self:PhysicsInit(SOLID_VPHYSICS) + self:GetPhysicsObject():SetMaterial("metal") + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_NO_PLAYER_PICKUP) + self:GetPhysicsObject():EnableDrag(false) + self:GetPhysicsObject():EnableGravity(false) + self:GetPhysicsObject():Wake() + + self.Projectile = table.Copy(self.Weapon.Projectile) + self.WeaponData = self.Weapon:GetTable() + + self.m_Propel = true + self.m_Fuel = self.Projectile.Fuel + self.m_Stability = 0 + self.m_Water = false + self.m_State = "Ascent" + self.LastPos = self:GetOwner():EyePos() + self.Target = ents.Create("info_target") + self.Target:Spawn() + + local up = self:GetPos() + up.z = up.z + 2000 + + local tr = util.TraceLine( { + start = self:GetPos(), + endpos = up, + filter = {self,self:GetOwner()} + } ) + + self.CruiseHeight = tr.HitPos.z - 900 + + if self.WeaponData.TrackedEntity then + self.m_Tracking = self.Projectile.Tracking + self.TrackedEntity = self.WeaponData.TrackedEntity + self.TrackedPosition = self.WeaponData.TrackedEntity:GetPos() + else + local tr = self.Weapon:GetOwner():GetEyeTrace() + self.TrackedPosition = tr.HitPos + self.TargetPos = tr.HitPos + end + + end + + if (CLIENT) then + self.m_SpawnPos = self:GetPos() + self:EmitSound("^weapons/juliet/weap_juliet_proj_lp_01.wav", SNDLVL_180db, 100, 1, CHAN_WEAPON) + end +end \ No newline at end of file diff --git a/lua/entities/mg_slug/cl_init.lua b/lua/entities/mg_slug/cl_init.lua new file mode 100644 index 0000000..280e3fd --- /dev/null +++ b/lua/entities/mg_slug/cl_init.lua @@ -0,0 +1,9 @@ +include("shared.lua") + +local base = baseclass.Get(ENT.Base) + +function ENT:DrawTracer() + if (GetViewEntity() == self:GetOwner()) then + base.DrawTracer(self) + end +end \ No newline at end of file diff --git a/lua/entities/mg_slug/init.lua b/lua/entities/mg_slug/init.lua new file mode 100644 index 0000000..5a99f35 --- /dev/null +++ b/lua/entities/mg_slug/init.lua @@ -0,0 +1,8 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +function ENT:GetDamageType() + return DMG_BUCKSHOT +end \ No newline at end of file diff --git a/lua/entities/mg_slug/shared.lua b/lua/entities/mg_slug/shared.lua new file mode 100644 index 0000000..14ceb17 --- /dev/null +++ b/lua/entities/mg_slug/shared.lua @@ -0,0 +1 @@ +ENT.Base = "mg_bullet" \ No newline at end of file diff --git a/lua/entities/mg_sniper_bullet/cl_init.lua b/lua/entities/mg_sniper_bullet/cl_init.lua new file mode 100644 index 0000000..85de8c9 --- /dev/null +++ b/lua/entities/mg_sniper_bullet/cl_init.lua @@ -0,0 +1,29 @@ +include("shared.lua") + +local BaseClass = baseclass.Get(ENT.Base) +local flareMaterial = Material("sprites/orangecore1_gmod") + +ENT.bTracerOn = false + +function ENT:DrawTracer() +end + +function ENT:DrawBullet() + if (!self.bTracerOn) then + ParticleEffectAttach("bullet_sniper_smoke", PATTACH_ABSORIGIN_FOLLOW, self, 0) + self.bTracerOn = true + end + + if (GetViewEntity() == self:GetOwner()) then + local angle = (self:GetPos() - EyePos()):Angle() + angle:RotateAroundAxis(EyeAngles():Right(), 90) + + local dist = math.min(self:GetPos():Distance(EyePos()), 2300) + + cam.Start3D2D(self:GetPos(), angle, dist * 0.0001) + surface.SetDrawColor(255, 255, 255, 255) + surface.SetMaterial(flareMaterial) + surface.DrawTexturedRectRotated(0, 0, 32, 32, 0) + cam.End3D2D() + end +end \ No newline at end of file diff --git a/lua/entities/mg_sniper_bullet/init.lua b/lua/entities/mg_sniper_bullet/init.lua new file mode 100644 index 0000000..40ad436 --- /dev/null +++ b/lua/entities/mg_sniper_bullet/init.lua @@ -0,0 +1,55 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + +function ENT:GetDamageType() + return DMG_SNIPER +end + +ENT.m_gravity = 0 +ENT.Maxs = Vector(3, 3, 3) + +function ENT:PhysicsUpdate(phys) + self.m_gravity = self.m_gravity + (self.Projectile.Gravity) + + phys:SetPos(self.LastPos + phys:GetAngles():Forward() * (self.Projectile.Speed * FrameTime()) - (Vector(0, 0, self.m_gravity) * FrameTime())) + + if (!self.bCollided) then + --Aim assist + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Box(phys:GetPos(), -self.Maxs, self.Maxs, 0, Color(0, 200, 50, 10)) + end + + local trData = { + start = self.LastPos, + endpos = phys:GetPos(), + filter = {self:GetOwner(), self}, + mask = MASK_SHOT_PORTAL, + collisiongroup = COLLISION_GROUP_PROJECTILE, + mins = -self.Maxs, + maxs = self.Maxs + } + + local tr = util.TraceHull(trData) + + if (tr.Hit && (tr.Entity:IsPlayer() || tr.Entity:IsNPC())) then + self:Impact(tr, phys, true) + return + end + + --Normal hitscan + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Line(self.LastPos, phys:GetPos(), 1, Color(255, 0, 0, 1)) + end + + tr = util.TraceLine(trData) + + if (tr.Hit) then + self:Impact(tr, phys, false) + return + end + end + + self.LastPos = phys:GetPos() +end \ No newline at end of file diff --git a/lua/entities/mg_sniper_bullet/shared.lua b/lua/entities/mg_sniper_bullet/shared.lua new file mode 100644 index 0000000..b178c61 --- /dev/null +++ b/lua/entities/mg_sniper_bullet/shared.lua @@ -0,0 +1,5 @@ +ENT.Base = "mg_bullet" + +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("bullet_sniper_smoke") +PrecacheParticleSystem("bullet_sniper_tracer") \ No newline at end of file diff --git a/lua/entities/mg_submunition/cl_init.lua b/lua/entities/mg_submunition/cl_init.lua new file mode 100644 index 0000000..f8c4520 --- /dev/null +++ b/lua/entities/mg_submunition/cl_init.lua @@ -0,0 +1,84 @@ +include("shared.lua") + +ENT.AutomaticFrameAdvance = true + + +local flair = Material("shadowdark/flairs/grenade_flair.vmt") +ENT.OuterFlairColor = Color(236,153,17,255) +ENT.InnerFlairColor = Color(255,255,255,255) + +ENT.OuterFlairScale = 1 +ENT.InnerFlairScale = 0.3 + +function ENT:Draw(flags) + self:DrawModel(flags) + + if (self.m_SpawnPos != nil && self:GetPos():Distance(self.m_SpawnPos) > 64) then + ParticleEffectAttach("rockettrail", PATTACH_ABSORIGIN_FOLLOW, self, 0) + self.m_SpawnPos = nil + end + + local ang = LocalPlayer():EyeAngles() + local angle = Angle( 0, LocalPlayer():EyeAngles()[2], 0 ) + + angle = Angle(LocalPlayer():EyeAngles()[1], angle.y, 0 ) + + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + + cam.Start3D2D( self:GetPos() - self:GetForward() * -5, angle, 0.2 ) + + local OuterScale = 512 * self.OuterFlairScale + local InnerScale = 512 * self.InnerFlairScale + + surface.SetMaterial(flair) + surface.SetDrawColor(self.OuterFlairColor) + surface.DrawTexturedRect(-OuterScale/2, -OuterScale/2, OuterScale, OuterScale) + + surface.SetDrawColor(self.InnerFlairColor) + surface.DrawTexturedRect(-InnerScale/2, -InnerScale/2, InnerScale, InnerScale) +cam.End3D2D() + +end + +function ENT:DrawTranslucent(flags) + self:Draw(flags) +end + +function ENT:OnRemove() + if (self:WaterLevel() <= 0) then + self:EmitSound("^viper/shared/rocket_expl_body_01.wav", 150, 100, 1, CHAN_WEAPON) --snd scripts dont work lol! + + local dlight = DynamicLight(self:EntIndex()) + if (dlight) then + dlight.pos = self:GetPos() + dlight.r = 255 + dlight.g = 75 + dlight.b = 0 + dlight.brightness = 5 + dlight.Decay = 2000 + dlight.Size = 1024 + dlight.DieTime = CurTime() + 5 + end + end + + self:StopParticles() +end + +--[[--------------------------------------------------------- + Name: Think + Desc: Client Think - called every frame +-----------------------------------------------------------]] +function ENT:Think() + if (self:WaterLevel() > 0) then + self:EmitSound("viper/shared/melee/melee_world_fist_soft_plr_01.ogg", 75, 100, 0.001, CHAN_WEAPON) + self:StopParticles() + end +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: Called immediately after a "load" +-----------------------------------------------------------]] +function ENT:OnRestore() +end diff --git a/lua/entities/mg_submunition/init.lua b/lua/entities/mg_submunition/init.lua new file mode 100644 index 0000000..6c02a47 --- /dev/null +++ b/lua/entities/mg_submunition/init.lua @@ -0,0 +1,175 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + + + +--[[--------------------------------------------------------- + Name: KeyValue + Desc: Called when a keyvalue is added to us +-----------------------------------------------------------]] +function ENT:KeyValue( key, value ) +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: The game has just been reloaded. This is usually the right place + to call the GetNW* functions to restore the script's values. +-----------------------------------------------------------]] +function ENT:OnRestore() +end + +--[[--------------------------------------------------------- + Name: AcceptInput + Desc: Accepts input, return true to override/accept input +-----------------------------------------------------------]] +function ENT:AcceptInput( name, activator, caller, data ) + return false +end + +--[[--------------------------------------------------------- + Name: UpdateTransmitState + Desc: Set the transmit state +-----------------------------------------------------------]] +function ENT:UpdateTransmitState() + return TRANSMIT_ALWAYS +end + +function ENT:PhysicsCollide(colData, collider) + if (self.m_Water && self:GetVelocity():Length() < 250) then + timer.Simple(0, function() + self:Remove() + end) + + return + end + + local bHasExploded = false + + for i, e in pairs(ents.FindInSphere(self:GetPos(), 16)) do + if (e:IsNPC()) then + self:Explode({ + HitEntity = e, + HitNormal = (e:NearestPoint(self:GetPos()) - self:GetPos()):GetNormalized(), + HitPos = e:NearestPoint(self:GetPos()) + }) + + bHasExploded = true + end + end + + if (!bHasExploded) then + self:Explode(colData) + end +end + +function ENT:PhysicsUpdate(phys) + + self.m_Fuel = self.m_Fuel - 100 * FrameTime() + self.m_Stability = self.m_Stability + 700 * FrameTime() + + if (self.m_Propel && self.m_Fuel <= 0) then + self.m_Propel = false + phys:EnableDrag(true) + phys:EnableGravity(true) + phys:AddVelocity(phys:GetAngles():Forward() * self.Speed) + end + + if (self.m_Propel) then + + phys:SetPos(self.LastPos + phys:GetAngles():Forward() * (self.Speed * FrameTime())) + + if self.TrackedEntity && self.TrackedEntity:IsValid() then + local dir = self.TrackedEntity:WorldSpaceCenter() - phys:GetPos() + phys:SetAngles(LerpAngle(0.1, phys:GetAngles(), dir:Angle())) + else + self.m_Fuel = 0 + end + + end + + if (!self.bCollided) then + --Aim assist + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Box(phys:GetPos(), -self.Maxs, self.Maxs, 0, Color(0, 200, 50, 10)) + end + + local trData = { + start = self.LastPos, + endpos = phys:GetPos(), + filter = {self:GetOwner(), self}, + mask = MASK_SHOT_PORTAL, + collisiongroup = COLLISION_GROUP_NONE, + mins = -self:OBBMaxs(), + maxs = self:OBBMins() + } + + local tr = util.TraceHull(trData) + + if (tr.Hit && (tr.Entity:IsPlayer() || tr.Entity:IsNPC())) then + self:SetPos(tr.HitPos) + self:Explode(tr) + return + end + + --Normal hitscan + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Line(self.LastPos, phys:GetPos(), 1, Color(255, 0, 0, 1)) + end + + tr = util.TraceLine(trData) + + if (tr.Hit) then + if tr.Entity:GetClass() == "func_breakable_surf" then + --shatter glass windows and other weak surfaces + util.BlastDamage(self, self, tr.HitPos, 1, 1) + elseif tr.Entity:GetClass() != self:GetClass() && tr.Entity:GetClass() != "mg_javelin_airstrike_warhead" then + self:SetPos(tr.HitPos) + self:Explode(tr) + return + end + end + end + + self.LastPos = phys:GetPos() +end + +function ENT:Explode(trData) + + local phys = self:GetPhysicsObject() + if (self:WaterLevel() <= 0) then + ParticleEffect("Generic_explo_mid", phys:GetPos() + trData.HitNormal,Angle(0,0,0)) + else + local effectdata = EffectData() + effectdata:SetOrigin(phys:GetPos()) + util.Effect("WaterSurfaceExplosion", effectdata) + end + + local dmgInfo = DamageInfo() + dmgInfo:SetDamage(self.Damage) + dmgInfo:SetAttacker(IsValid(self:GetOwner()) && self:GetOwner() || self) + dmgInfo:SetInflictor(self) + dmgInfo:SetDamageType(self:GetDamageType()) + util.BlastDamageInfo(dmgInfo, phys:GetPos(), 190) + + util.ScreenShake(phys:GetPos(), 3500, 1111, 1, 300) + + util.Decal("Scorch", trData.HitPos - trData.HitNormal, trData.HitPos + trData.HitNormal, self) + + for i, e in pairs(ents.FindInSphere(self:GetPos(), 32)) do + if (e:GetClass() == "npc_strider") then + e:Fire("Explode") + end + end + + self:Remove() +end + +function ENT:ImpactDamage(ent) + +end + +function ENT:GetDamageType() + return DMG_BLAST + DMG_AIRBOAT +end \ No newline at end of file diff --git a/lua/entities/mg_submunition/shared.lua b/lua/entities/mg_submunition/shared.lua new file mode 100644 index 0000000..073d162 --- /dev/null +++ b/lua/entities/mg_submunition/shared.lua @@ -0,0 +1,56 @@ + +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.Spawnable = false +ENT.AdminOnly = false + +ENT.ExplosionRadius = 430 +ENT.ExplosionDamage = 700 + +game.AddParticles("particles/explosion_fx_ins.pcf") +game.AddParticles("particles/ins_rockettrail.pcf") +PrecacheParticleSystem("ins_C4_explosion") +PrecacheParticleSystem("ins_grenade_explosion") +PrecacheParticleSystem("ins_m203_explosion") +PrecacheParticleSystem("ins_rpg_explosion") +PrecacheParticleSystem("rockettrail") + +function ENT:SetupDataTables() +end + +--[[--------------------------------------------------------- + Name: Initialize + Desc: First function called. Use to set up your entity +-----------------------------------------------------------]] + +function ENT:Initialize() + self:SetModel("models/items/ar2_grenade.mdl") + self:AddEFlags(EFL_FORCE_CHECK_TRANSMIT) + self:SetCustomCollisionCheck(true) + + if (SERVER) then + self:PhysicsInit(SOLID_VPHYSICS) + self:GetPhysicsObject():SetMaterial("metal") + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_NO_PLAYER_PICKUP) + self:GetPhysicsObject():EnableDrag(false) + self:GetPhysicsObject():EnableGravity(false) + self:GetPhysicsObject():Wake() + + self.m_Propel = true + self.m_Fuel = 300 + self.m_Stability = 0 + self.m_Water = false + self.Target = ents.Create("info_target") + self.Target:Spawn() + + self.m_Tracking = true + + self.Speed = math.random(1000, 1700) + end + + if (CLIENT) then + self.m_SpawnPos = self:GetPos() + self:EmitSound("^viper/shared/move_rpapa7_proj_flame_cls.wav", SNDLVL_180db, 100, 1, CHAN_WEAPON) + end +end \ No newline at end of file diff --git a/lua/entities/mg_viewmodel/cl_init.lua b/lua/entities/mg_viewmodel/cl_init.lua new file mode 100644 index 0000000..b85f57b --- /dev/null +++ b/lua/entities/mg_viewmodel/cl_init.lua @@ -0,0 +1,216 @@ +include("client/cl_animation.lua") +include("client/cl_calcview.lua") +include("client/cl_render.lua") +include("client/cl_events.lua") +include("shared.lua") +require("mw_utils") + +ENT.m_Particles = {} +ENT.m_Shells = {} + +function ENT:CreateRig() + if (table.IsEmpty(MW_RIGS)) then + return + end + + local k, v = next(MW_RIGS) + + if (v == nil) then + return + end + + self.m_Rig = ClientsideModel(v.Model, self.RenderGroup) + self.m_Rig:SetRenderMode(self.RenderMode) + self.m_Rig:AddEffects(EF_BONEMERGE) + self.m_Rig:AddEffects(EF_BONEMERGE_FASTCULL) + self.m_Rig:AddEffects(EF_PARENT_ANIMATES) + self.m_Rig:SetParent(self) + + function self.m_Rig:CanDraw() + if (self:GetNoDraw()) then + return false + end + + if (gmod.GetGamemode().ForcePlayerHands) then + return false + end + + local rig = MW_RIGS[GetConVar("mgbase_rig"):GetString()] + + if (rig == nil) then + return false + end + + return true + end + + function self.m_Rig:RenderOverride(flags) + if (!self:CanDraw()) then + return + end + + self:SetModel(MW_RIGS[GetConVar("mgbase_rig"):GetString()].Model) + self:SetSkin(GetConVar("mgbase_rig_skin"):GetInt()) + --self:DrawModel(flags) + --gloves draw the arms as well + end + + mw_utils.DealWithFullUpdate(self.m_Rig) +end + +function ENT:CreateGloves() + if (table.IsEmpty(MW_GLOVES)) then + return + end + + local k, v = next(MW_GLOVES) + + if (v == nil) then + return + end + + self.m_Gloves = ClientsideModel(v.Model, self.RenderGroup) + self.m_Gloves:SetRenderMode(self.RenderMode) + self.m_Gloves:AddEffects(EF_BONEMERGE) + self.m_Gloves:AddEffects(EF_BONEMERGE_FASTCULL) + self.m_Gloves:AddEffects(EF_PARENT_ANIMATES) + self.m_Gloves:SetParent(self.m_Rig) + + function self.m_Gloves:CanDraw() + if (self:GetNoDraw()) then + return false + end + + if (gmod.GetGamemode().ForcePlayerHands) then + return false + end + + local rig = MW_RIGS[GetConVar("mgbase_rig"):GetString()] + local gloves = MW_GLOVES[GetConVar("mgbase_gloves"):GetString()] + + if (gloves == nil || rig == nil) then + --checks rig as well since it draws it + return false + end + + return true + end + + function self.m_Gloves:RenderOverride(flags) + if (!self:CanDraw()) then + return + end + + self:SetModel(MW_GLOVES[GetConVar("mgbase_gloves"):GetString()].Model) + self:SetSkin(GetConVar("mgbase_gloves_skin"):GetInt()) + self:DrawModel(flags) + end + + mw_utils.DealWithFullUpdate(self.m_Gloves) +end + +function ENT:CreateCHands() + self.m_CHands = ClientsideModel(Model("models/weapons/c_arms_hev.mdl"), self.RenderGroup) + self.m_CHands:SetRenderMode(self.RenderMode) + self.m_CHands:AddEffects(EF_BONEMERGE) + self.m_CHands:AddEffects(EF_BONEMERGE_FASTCULL) + self.m_CHands:AddEffects(EF_PARENT_ANIMATES) + self.m_CHands:SetParent(self) + + function self.m_CHands:CanDraw() + if (self:GetNoDraw()) then + return false + end + + local rig = GetConVar("mgbase_rig"):GetString() + + if (rig != "chands" && !gmod.GetGamemode().ForcePlayerHands) then + return false + end + + return IsValid(LocalPlayer():GetHands()) + end + + function self.m_CHands:GetPlayerColor() + return LocalPlayer():GetPlayerColor() + end + + function self.m_CHands:RenderOverride(flags) + if (!self:CanDraw()) then + return + end + + local p = LocalPlayer() + + if (VManip != nil) then + p:GetHands():SetParent(self:GetParent()) + p:GetHands():DrawModel(flags) --for thermals + --its a useless call outside of thermals but i dont care + + return + end + + self:SetModel(p:GetHands():GetModel()) + self:SetSkin(p:GetHands():GetSkin()) + + for b = 0, p:GetHands():GetNumBodyGroups() do + self:SetBodygroup(b, p:GetHands():GetBodygroup(b)) + end + + self:DrawModel(flags) + end + + mw_utils.DealWithFullUpdate(self.m_CHands) +end + +ENT.m_LastAnim = -1 + +function ENT:PlaySequence(anim, rate, cycle) + rate = rate || 1 + cycle = cycle || 0 + + if (self.m_LastAnim != anim) then + self.m_RightHandGripTarget = 1 + self.m_LeftHandGripTarget = 1 + end + + self.m_LastAnim = anim + self:ResetSequence(anim) + self:SetPlaybackRate(rate) + self:SetCycle(cycle) +end + +---------------------------------------------------- + +net.Receive("mgbase_viewmodelanim", function(len) + local ent = net.ReadEntity() + local rate = net.ReadFloat() + local animId = net.ReadUInt(16) + local tick = net.ReadUInt(16) + + if (!IsValid(ent)) then + return + end + + ent.m_AnimFromServer = { + Rate = rate, + Tick = tick, + AnimID = animId, + TimeDifference = ent:GetOwner():IsCarriedByLocalPlayer() && LocalPlayer():Ping() / 1000 || 0 + } +end) + +hook.Add("VManipPrePlayAnim", "MW19_VManipStopActions", function() + local ply = LocalPlayer() + local w = ply:GetActiveWeapon() + + if (IsValid(w) && weapons.IsBasedOn(w:GetClass(), "mg_base")) then + return !w:HasFlag("Reloading") + && !w:HasFlag("Drawing") + && w:HasFlag("Rechambered") + && CurTime() >= w:GetNextMeleeTime() + && CurTime() >= w:GetNextAimModeTime() + && !w:HasFlag("Holstering") + && w:GetViewModel().m_LastSequenceIndex != "Inspect" && w:GetViewModel().m_LastSequenceIndex != "Inspect_Empty" + end +end) \ No newline at end of file diff --git a/lua/entities/mg_viewmodel/client/cl_animation.lua b/lua/entities/mg_viewmodel/client/cl_animation.lua new file mode 100644 index 0000000..8dc7c97 --- /dev/null +++ b/lua/entities/mg_viewmodel/client/cl_animation.lua @@ -0,0 +1,275 @@ +require("mw_math") + +ENT.m_AimDeltaLerp = 0 +ENT.m_LocomotionDeltaLerp = 0 +ENT.m_CustomizationRateLerp = 0 +ENT.m_bMoveStopped = true +ENT.m_bMoveStarted = false +ENT.m_bOnGround = true +ENT.m_LeftHandGripPoseParameter = nil +ENT.m_LeftHandGripTarget = 0 +ENT.m_LeftHandGripLerp = 0 +ENT.m_RightHandGripPoseParameter = nil +ENT.m_RightHandGripTarget = 0 +ENT.m_RightHandGripLerp = 0 +ENT.m_LastSprayRounds = 0 + +local idleIndices = { + ["Idle"] = true, + ["Jump"] = true, + ["Jog_Out"] = true, + ["Land"] = true +} +local uncancellableIndices = { + ["Sprint_In"] = true, + ["Holster"] = true +} +local allowAim = { + ["Ads_In"] = true, + ["Fire_Last"] = true, + ["Fire"] = true +} + +local function playIdleAnimation(vm, seqIndex) + local ind = vm.m_LastSequenceIndex + + if ((idleIndices[ind] || (!uncancellableIndices[ind] && vm:GetCycle() >= 0.98)) && (allowAim[ind] != nil || vm:GetOwner():GetAimDelta() <= 0)) then + vm:PlayAnimation(seqIndex, true) + end +end + +local function locomotion(vm) + local w = vm:GetOwner() + local p = w:GetOwner() + + if (!IsValid(p) || !p:IsPlayer()) then + return + end + + local vel = p:GetVelocity() + vel = Vector(vel.x, vel.y, 0) + + local len = math.max(vel:Length(), 0.01) + + if (!p:IsOnGround() || (p.GetSliding != nil && p:GetSliding())) then + vm.m_LocomotionDeltaLerp = mw_math.SafeLerp(6 * RealFrameTime(), vm.m_LocomotionDeltaLerp, 0) + else + vm.m_LocomotionDeltaLerp = mw_math.SafeLerp(4 * RealFrameTime(), vm.m_LocomotionDeltaLerp, len / p:GetWalkSpeed()) + end + + --jogging and walking + local slowWalkPoint = p:GetSlowWalkSpeed() / p:GetWalkSpeed() + local slowWalkDelta = 1 - math.abs(slowWalkPoint - vm.m_LocomotionDeltaLerp) / slowWalkPoint + local jogDelta = vm.m_LocomotionDeltaLerp - slowWalkDelta + + --when we stop jogging + if (jogDelta <= 0.5 && !vm.m_bMoveStopped) then + if (p:IsOnGround()) then + playIdleAnimation(vm, "Jog_Out") + end + + vm.m_bMoveStopped = true + elseif (jogDelta > 0.5) then + vm.m_bMoveStopped = false + end + + --when we start moving + if (vm.m_LocomotionDeltaLerp > 0.1 && !vm.m_bMoveStarted) then + if (p:IsOnGround()) then + playIdleAnimation(vm, "Land") + end + + vm.m_bMoveStarted = true + elseif (vm.m_LocomotionDeltaLerp <= 0.1) then + vm.m_bMoveStarted = false + end + + vm:SetPoseParameter("jog_loop", jogDelta * Lerp(vm.m_AimDeltaLerp, 1, 0.1 * (w.Zoom.MovementMultiplier || 1))) + vm:SetPoseParameter("walk_loop", slowWalkDelta * Lerp(vm.m_AimDeltaLerp, 1, 0.2 * (w.Zoom.PoseParameterMultiplier || 1))) + + --freefall loop + local z = math.min(p:GetVelocity().z, 0) + local delta = math.min(math.min(z + 500, 0) / -1100, 1) + vm:SetPoseParameter("freefall_loop", delta * Lerp(vm.m_AimDeltaLerp, 1, 0.1)) + + --jumping and landing + if (vm.m_bOnGround != p:IsOnGround()) then + if (!p:IsOnGround()) then + playIdleAnimation(vm, "Jump") + else + playIdleAnimation(vm, "Land") + end + + vm.m_bOnGround = p:IsOnGround() + end + + --sprint + local sprintPoint = p:GetRunSpeed() / p:GetWalkSpeed() + local sprintDelta = (vm.m_LocomotionDeltaLerp - 1) / (sprintPoint - 1) + vm:SetPoseParameter("sprint_loop", math.min(sprintDelta, math.Clamp((CurTime() - w:GetNextReloadTime()) * 10, 0, 1)) * Lerp(vm.m_AimDeltaLerp, 1, 0.1)) + -- not so efficient but very effective sprinting reload bodge + + --the offset when moving in general + local offsetDelta = mw_math.CosineInterp(vm.m_LocomotionDeltaLerp * math.Clamp(1 - sprintDelta, 0, 1), 0, 1) + offsetDelta = offsetDelta * (1 - math.Clamp(vm.m_AimDeltaLerp * 2, 0, 1)) + vm:SetPoseParameter("jog_offset", offsetDelta) + + --after fire reshoulder + if (vm.m_LastSprayRounds != w:GetSprayRounds() && !w:HasFlag("BipodDeployed")) then + if (w:GetSprayRounds() == 0 && vm.m_LastSprayRounds >= 5) then + if (!string.find(string.lower(vm.m_LastSequenceIndex), "fire")) then + local anim = math.random(1, 2) == 1 && "Land" || "Jog_Out" + + if (w.Animations.SprayEnd != nil) then + anim = "SprayEnd" + end + + playIdleAnimation(vm, anim) + vm.m_LastSprayRounds = w:GetSprayRounds() + end + else + vm.m_LastSprayRounds = w:GetSprayRounds() + end + end +end + +ENT.m_InspectSpeed = 1 + +local function inspection(vm) + local w = vm:GetOwner() + + local randomness = math.sin(CurTime() * 2) * 0.05 + math.sin(CurTime() * 3) * 0.05 + local inspectDelta = w.FreezeInspectDelta || 0.15 + + if (w:Clip1() <= 0 && w.EmptyFreezeInspectDelta) then + inspectDelta = w.EmptyFreezeInspectDelta + end + + local bStop = w:HasFlag("StoppedInspectAnimation") || (w:HasFlag("Customizing") && vm:GetCycle() > inspectDelta) + vm.m_InspectSpeed = mw_math.SafeLerp(5 * RealFrameTime(), vm.m_InspectSpeed, Lerp(mw_math.btn(bStop), 1, randomness)) + + if (string.find(string.lower(vm.m_LastSequenceIndex), "inspect")) then + vm:SetPlaybackRate(vm.m_InspectSpeed) + end +end + +local function grips(vm) + local w = vm:GetOwner() + + if (w.GripPoseParameters != nil) then + for i, pp in pairs(w.GripPoseParameters) do + vm:SetPoseParameter(pp, 0) + end + + vm.m_LeftHandGripLerp = math.Approach(vm.m_LeftHandGripLerp, vm.m_LeftHandGripTarget, 10 * RealFrameTime()) + + if (vm.m_LeftHandGripPoseParameter != nil) then + vm:SetPoseParameter(vm.m_LeftHandGripPoseParameter, vm.m_LeftHandGripLerp) + end + end + + if (w.GripPoseParameters2 != nil) then + for i, pp in pairs(w.GripPoseParameters2) do + vm:SetPoseParameter(pp, 0) + end + + vm.m_RightHandGripLerp = math.Approach(vm.m_RightHandGripLerp, vm.m_RightHandGripTarget, 10 * RealFrameTime()) + + if (vm.m_RightHandGripPoseParameter != nil) then + vm:SetPoseParameter(vm.m_RightHandGripPoseParameter, vm.m_RightHandGripLerp) + end + end +end + +function ENT:SetPoseParameters() + local w = self:GetOwner() + + self:SetPoseParameter("aim_offset", self.m_AimDeltaLerp) + self:SetPoseParameter("hybrid_offset", w:GetAimMode()) + self:SetPoseParameter("firemode_offset", w:GetFiremode() - 1) + self:SetPoseParameter("empty_offset", mw_math.btn(w:Clip1() <= 0 || !w:HasFlag("Rechambered"))) + self:SetPoseParameter("bipod", mw_math.btn(w:HasFlag("BipodDeployed"))) +end + +ENT.m_UpdateDelta = 0 + +function ENT:Think() + local w = self:GetOwner() + + if (!IsValid(w)) then + return + end + + self:ReconcileServerAnims() + + if (!w:IsCarriedByLocalPlayer() || !IsValid(w:GetOwner()) || w != w:GetOwner():GetActiveWeapon()) then + return + end + + if (self.m_UpdateDelta <= 0.2) then + self:UpdateAnimation(self.m_LastSequenceIndex) + self.m_UpdateDelta = self.m_UpdateDelta + FrameTime() + --WAKE UP GODDAMN IT + end + + if (self.m_LastSequenceIndex != "INIT") then + self.m_AimDeltaLerp = mw_math.SafeLerp(30 * RealFrameTime(), self.m_AimDeltaLerp, w:GetAimDelta()) + + self:SetPoseParameters() + + --we play idle a bit earlier if ads in + local targetCycle = self.m_LastSequenceIndex == "Ads_In" && 0.5 || 0.98 + + if (self:GetCycle() >= targetCycle) then + playIdleAnimation(self, "Idle") + end + + --states + locomotion(self) + inspection(self) + grips(self) + end +end + +function ENT:ReconcileServerAnims() + if (self.m_AnimFromServer == nil) then + return + end + + local tick = self.m_AnimFromServer.Tick + local animId = self.m_AnimFromServer.AnimID + local rate = self.m_AnimFromServer.Rate + local timeDifference = self.m_AnimFromServer.TimeDifference + self.m_AnimFromServer = nil + + local seqIndex = self:GetSequenceIndexByID(animId) + + if (tick < self.m_Tick || (tick == self.m_Tick && self.m_LastSequenceIndex == seqIndex)) then + return + end + + local sequences = self:GetOwner().Animations[seqIndex].Sequences + + local seqId = self:LookupSequence(sequences[1]) + local length = self:SequenceDuration(seqId) + + local cycle = timeDifference / length + cycle = cycle * rate + + self:PlaySequence(sequences[math.random(1, #sequences)], rate, cycle) + + self.m_LastSequenceIndex = seqIndex + self.m_Tick = tick +end + +function ENT:VManipPostPlayAnim(name) + playIdleAnimation(self, "Jog_Out") +end + +function ENT:VManipHoldQuit() + playIdleAnimation(self, "Land") +end + +function ENT:VManipRemove() + playIdleAnimation(self, "Jog_Out") +end \ No newline at end of file diff --git a/lua/entities/mg_viewmodel/client/cl_calcview.lua b/lua/entities/mg_viewmodel/client/cl_calcview.lua new file mode 100644 index 0000000..deec29e --- /dev/null +++ b/lua/entities/mg_viewmodel/client/cl_calcview.lua @@ -0,0 +1,461 @@ +require("mw_math") +require("mw_utils") + +ENT.m_AimDelta = 0 +ENT.m_AimModeDelta = 0 +ENT.m_CameraAttachment = nil +function ENT:CalcView(origin, angles) + if (self:GetRenderOrigin() == nil) then + return + end + + --local camera = self:GetAttachment(mw_utils.LookupAttachmentCached(self, "camera")) + + if (self.m_CameraAttachment == nil) then + return + end + + local camera = self.m_CameraAttachment + local cameraPos, cameraAng = camera:GetTranslation(), camera:GetAngles() + + angles:RotateAroundAxis(angles:Forward(), cameraAng.r) + angles:RotateAroundAxis(angles:Up(), -cameraAng.y) + angles:RotateAroundAxis(angles:Right(), cameraAng.p) + + mw_math.VectorAddAndMul(origin, angles:Forward(), -cameraPos.x) + mw_math.VectorAddAndMul(origin, angles:Up(), -cameraPos.z) + mw_math.VectorAddAndMul(origin, angles:Right(), cameraPos.y) +end + +ENT.m_Movement = { + p = mw_math.CreateSpring(150, 0.75), + x = mw_math.CreateSpring(80, 1), + y = mw_math.CreateSpring(100, 1) +} + +ENT.m_LastZVel = 0 +ENT.m_LandTarget = 0 + +local function movementInertia(vm, pos, ang) + local w = vm:GetWeaponOwner() + local p = vm:GetPlayerOwner() + + if (!IsValid(vm:GetPlayerOwner())) then + return + end + + local vel = p:GetVelocity() + + --vertical + if (!p:IsOnGround()) then + vm.m_LastZVel = vel.z + vm.m_LandTarget = 0 + else + if (vm.m_LastZVel != 0) then + vm.m_LandTarget = -math.Clamp(vm.m_LastZVel, -1000, 1000) * 0.02 + vm.m_LastZVel = 0 + end + + vm.m_LandTarget = mw_math.SafeLerp(5 * FrameTime(), vm.m_LandTarget, 0) + end + + vm.m_Movement.p:SetTarget(math.Clamp(math.Clamp(vel.z, -200, 200) * 0.025, -10, 10) + vm.m_LandTarget) + vm.m_Movement.p:Decay() + + local pi = vm.m_Movement.p:GetValue() * mw_math.SafeLerp(vm.m_AimDelta, 1, 0.1) + + ang:SetUnpacked(ang.p - pi, ang.y, ang.r) + + --horizontal + vel:Div(p:GetWalkSpeed()) + + local dotY = 0 + local dotX = 0 + + if (!w:HasFlag("Sprinting")) then + local movementAngles = Angle(0, p:EyeAngles().y, 0) + dotY = movementAngles:Forward():Dot(vel) + dotY = dotY * -1 + dotY = math.Clamp(dotY, -2, 2) + + dotX = movementAngles:Right():Dot(vel) + dotX = dotX * -1 + dotX = math.Clamp(dotX, -1.25, 1.25) + end + + vm.m_Movement.y:SetTarget(dotY) + vm.m_Movement.y:Decay() + + vm.m_Movement.x:SetTarget(dotX) + vm.m_Movement.x:Decay() + + local y = vm.m_Movement.y:GetValue() * mw_math.SafeLerp(vm.m_AimDelta, 1, 0.3) + local x = vm.m_Movement.x:GetValue() * mw_math.SafeLerp(vm.m_AimDelta, 1, 0.075) + + pos:SetUnpacked(pos.x + x, pos.y + y, pos.z) +end + +ENT.m_SwayAngle = nil +ENT.m_Sway = { + p = mw_math.CreateSpring(150, 0.75), + ya = mw_math.CreateSpring(120, 1), + r = mw_math.CreateSpring(60, 0.85), + x = mw_math.CreateSpring(145, 1), + y = mw_math.CreateSpring(100, 1), + z = mw_math.CreateSpring(150, 0.75) +} + +local function sway(vm, pos, ang, originalAng) + if (vm.m_SwayAngle == nil) then + vm.m_SwayAngle = Angle(originalAng) + end + + local diffY = math.AngleDifference(vm.m_SwayAngle.y, originalAng.y) + diffY = diffY / RealFrameTime() + diffY = diffY * 0.015 + + local diffP = math.AngleDifference(vm.m_SwayAngle.p, originalAng.p) + diffP = diffP / RealFrameTime() + diffP = diffP * 0.01 + + vm.m_Sway.p:SetTarget(diffP + diffY * mw_math.SafeLerp(vm.m_AimDelta, 0.1, 0)) + vm.m_Sway.ya:SetTarget(diffY) + vm.m_Sway.r:SetTarget(diffY * 0.75) + + vm.m_Sway.z:SetTarget(diffP * 0.125 + diffY * mw_math.SafeLerp(vm.m_AimDelta, 0.01, 0)) + vm.m_Sway.x:SetTarget(diffY * 0.15) + vm.m_Sway.y:SetTarget(diffY * 0.1) + + vm.m_Sway.p:Decay() + vm.m_Sway.ya:Decay() + vm.m_Sway.r:Decay() + vm.m_Sway.x:Decay() + vm.m_Sway.y:Decay() + vm.m_Sway.z:Decay() + + vm.m_SwayAngle:Set(originalAng) + + -- + + local p = vm.m_Sway.p:GetValue() * mw_math.SafeLerp(vm.m_AimDelta, 1, -0.1) + local y = vm.m_Sway.ya:GetValue() * mw_math.SafeLerp(vm.m_AimDelta, 1, -0.1) + local r = vm.m_Sway.r:GetValue() * mw_math.SafeLerp(vm.m_AimDelta, 1, -0.1) + + ang:SetUnpacked(ang.p - p, ang.y + y, ang.r - r) + + local x = vm.m_Sway.x:GetValue() * mw_math.SafeLerp(vm.m_AimDelta, 1, -0.1) + x = x - mw_math.SafeLerp(vm.m_AimDelta, r * 0.05, 0) + + local y = vm.m_Sway.y:GetValue() * mw_math.SafeLerp(vm.m_AimDelta, 1, -0.1) + local z = vm.m_Sway.z:GetValue() * mw_math.SafeLerp(vm.m_AimDelta, 1, -0.1) + z = z - mw_math.SafeLerp(vm.m_AimDelta, r * 0.035, 0) + + pos:SetUnpacked(pos.x + x, pos.y + y, pos.z + z) +end + +local defaultSprintAngle = Angle(0, 0, 25) +local defaultSprintPos = Vector(1, 0, -1) +local defaultVManipAngle = Angle(0, 2, -10) +local defaultVManipPos = Vector(1.5, 3, -1.5) +local defaultCrouchAngle = Angle(0, 0, -5) +local defaultCrouchPos = Vector(-1, -0.5, -1) +local defaultBipodAngle = Angle() +local defaultBipodPos = Vector(-1.5, 0, -1.5) + +ENT.m_OffsetAng = { + p = mw_math.CreateSpring(150, 0.75), + ya = mw_math.CreateSpring(120, 1), + r = mw_math.CreateSpring(100, 1.5) +} + +ENT.m_OffsetPos = mw_math.CreateVectorSpring(150, 1.5) + +local offsetsPos = Vector() +local offsetsAng = Angle() +local sprintAng = Angle() +local sprintPos = Vector() +local alternateAimPos = Vector() +local alternateAimAng = Angle() +local aimPos = Vector() +local aimAng = Angle() +local vManipAng = Angle() +local vManipPos = Vector() +local bipodAng = Angle() +local bipodPos = Vector() +local crouchAng = Angle() +local crouchPos = Vector() + +local function offsets(vm, pos, ang) + local w = vm:GetOwner() + local p = w:GetOwner() + + offsetsPos:SetUnpacked(0, 0, 0) + offsetsAng:SetUnpacked(0, 0, 0) + + --aim offsets + aimPos:Set(w.ViewModelOffsets.Aim.Pos) + aimAng:Set(w.ViewModelOffsets.Aim.Angles) + + if (w:GetSight() != nil) then + aimPos:Add(w:GetSight().AimPos || mw_math.ZeroVector) + aimAng:Add(w:GetSight().AimAng || mw_math.ZeroAngle) + end + + aimPos:Mul(mw_math.btn(w:HasFlag("Aiming") && w:GetAimMode() == 0)) + aimAng:Mul(mw_math.btn(w:HasFlag("Aiming") && w:GetAimMode() == 0)) + + offsetsPos:Add(aimPos) + offsetsAng:Add(aimAng) + + --canted aim offsets + alternateAimPos:Set(w.ViewModelOffsets.Aim.Pos) + alternateAimAng:Set(w.ViewModelOffsets.Aim.Angles) + + if (w:GetSight() != nil && w:GetSight().ReticleHybrid != nil) then + alternateAimPos:Add(w:GetSight().HybridAimPos || w.HybridAimPos || mw_math.ZeroVector) + alternateAimAng:Add(w:GetSight().HybridAimAng || w.HybridAimAngles || mw_math.ZeroAngle) + else + if (w.LaserAimPos != nil && w.LaserAimAngles != nil && w:GetLaser() != nil) then + alternateAimPos:Set(w.LaserAimPos) + alternateAimAng:Set(w.LaserAimAngles) + + local reloadDelta = Lerp(mw_math.btn(CurTime() >= Lerp(0.5, w:GetNextMagTime(), w:GetNextReloadTime())), 0.5, 1) + alternateAimAng:Mul(reloadDelta) + alternateAimPos:Mul(reloadDelta) + end + end + + --alternateAimPos:Mul(vm.m_AimModeDelta) + alternateAimPos:Mul(mw_math.btn(!(w.DisableCantedReload && w:HasFlag("Reloading")) && w:HasFlag("Aiming") && w:GetAimMode() > 0)) + + --alternateAimAng:Mul(vm.m_AimModeDelta) + alternateAimAng:Mul(mw_math.btn(!(w.DisableCantedReload && w:HasFlag("Reloading")) && w:HasFlag("Aiming") && w:GetAimMode() > 0)) + + offsetsPos:Add(alternateAimPos) + offsetsAng:Add(alternateAimAng) + + --sprinting + sprintAng:Set(defaultSprintAngle) + sprintPos:Set(defaultSprintPos) + + if (w.ViewModelOffsets.Sprint != nil) then + sprintAng:Set(w.ViewModelOffsets.Sprint.Angles || sprintAng) + sprintPos:Set(w.ViewModelOffsets.Sprint.Pos || sprintPos) + end + + sprintPos:Mul(mw_math.btn(w:HasFlag("Sprinting"))) + sprintAng:Mul(mw_math.btn(w:HasFlag("Sprinting"))) + + offsetsAng:Add(sprintAng) + offsetsPos:Add(sprintPos) + + --idle + local eyePitch = Lerp(mw_math.btn(w:HasFlag("Aiming")), p:EyeAngles().p / 90, 0) + offsetsAng:Add(w.ViewModelOffsets.Idle.Angles * mw_math.btn(!w:HasFlag("Aiming"))) + offsetsAng.r = offsetsAng.r + (eyePitch * 5) + + offsetsPos:Add(w.ViewModelOffsets.Idle.Pos * mw_math.btn(!w:HasFlag("Aiming"))) + offsetsPos.y = offsetsPos.y + eyePitch + offsetsPos.z = offsetsPos.z + (math.min(eyePitch, 0.5) * 5 * mw_math.btn(w:HasFlag("BipodDeployed"))) + + --vmanip + vManipAng:Set(defaultVManipAngle) + vManipPos:Set(defaultVManipPos) + + if (w.ViewModelOffsets.VManip != nil) then + vManipAng:Set(w.ViewModelOffsets.VManip.Angles || vManipAng) + vManipPos:Set(w.ViewModelOffsets.VManip.Pos || vManipPos) + end + + vManipPos:Mul(mw_math.btn(VManip != nil && !w:HasFlag("Aiming") && VManip:IsActive())) + vManipAng:Mul(mw_math.btn(VManip != nil && !w:HasFlag("Aiming") && VManip:IsActive())) + + offsetsAng:Add(vManipAng) + offsetsPos:Add(vManipPos) + + --bipod + bipodAng:Set(defaultBipodAngle) + bipodPos:Set(defaultBipodPos) + + if (w.ViewModelOffsets.Bipod != nil) then + bipodAng:Set(w.ViewModelOffsets.Bipod.Angles || bipodAng) + bipodPos:Set(w.ViewModelOffsets.Bipod.Pos || bipodPos) + end + + bipodPos:Mul(mw_math.btn(w:HasFlag("BipodDeployed") && !w:HasFlag("Aiming"))) + bipodAng:Mul(mw_math.btn(w:HasFlag("BipodDeployed") && !w:HasFlag("Aiming"))) + + offsetsAng:Add(bipodAng) + offsetsPos:Add(bipodPos) + + --crouching + crouchAng:Set(defaultCrouchAngle) + crouchPos:Set(defaultCrouchPos) + + if (w.ViewModelOffsets.Crouch != nil) then + crouchAng:Set(w.ViewModelOffsets.Crouch.Angles || crouchAng) + crouchPos:Set(w.ViewModelOffsets.Crouch.Pos || crouchPos) + end + + local crouchDelta = mw_math.btn(p:IsFlagSet(4) && !w:HasFlag("BipodDeployed") && !w:HasFlag("Aiming")) + crouchPos:Mul(crouchDelta) + crouchAng.p = crouchAng.p * crouchDelta + crouchAng.y = crouchAng.y * crouchDelta + crouchAng.r = Lerp(mw_math.btn(p:IsFlagSet(4) && !w:HasFlag("BipodDeployed")), 0, Lerp(mw_math.btn(w:HasFlag("Aiming")), crouchAng.r, crouchAng.r * 0.5)) + + offsetsAng:Add(crouchAng) + offsetsPos:Add(crouchPos) + + --final result + vm.m_OffsetAng.p:SetTarget(offsetsAng.p) + vm.m_OffsetAng.ya:SetTarget(offsetsAng.y) + vm.m_OffsetAng.r:SetTarget(offsetsAng.r) + + vm.m_OffsetPos:SetTarget(offsetsPos) + mw_math.DecaySprings(vm.m_OffsetAng.p, vm.m_OffsetAng.ya, vm.m_OffsetAng.r, vm.m_OffsetPos) + + local x, y, z = vm.m_OffsetPos:GetValue().x, vm.m_OffsetPos:GetValue().y, vm.m_OffsetPos:GetValue().z + pos:SetUnpacked(pos.x + x, pos.y + y, pos.z + z) + + local pi, ya, r = vm.m_OffsetAng.p:GetValue(), vm.m_OffsetAng.ya:GetValue(), vm.m_OffsetAng.r:GetValue() + ang:SetUnpacked(ang.p - pi, ang.y + ya, ang.r + r) +end + +ENT.m_RecoilResetSpeed = 100 +ENT.m_RecoilAngleTarget = Angle() +ENT.m_RecoilPosTarget = Vector() +ENT.m_RecoilShakeLerp = 0 +ENT.m_RecoilRollLerp = 0 +ENT.m_RecoilRoll = 0 + +local recoilFuncs = { + [true] = function(w, name) return w.Recoil.ViewModel[name] || 1 end, + [false] = function() return 1 end +} + +local function getRecoilValue(w, name) + return recoilFuncs[w.Recoil.ViewModel != nil](w, name) +end + +ENT.m_RecoilAng = mw_math.CreateAngleSpring(80, 1) +ENT.m_RecoilPos = mw_math.CreateVectorSpring(40, 1) + +function ENT:SetRecoilTargets(pos, ang) + self.m_RecoilAngleTarget:Set(ang) + self.m_RecoilPosTarget:Set(pos) + self.m_RecoilResetSpeed = -1 +end + +local lerp = Lerp +local clamp = math.Clamp +local safeLerp = mw_math.SafeLerp +local realFrameTime = RealFrameTime +local approach = mw_math.Approach +local approachAngle = mw_math.ApproachAngle +local function recoil(vm, pos, ang) + local w = vm:GetOwner() + + vm.m_RecoilShakeLerp = safeLerp(10 * realFrameTime(), vm.m_RecoilShakeLerp, w.Camera.Shake) + vm.m_RecoilRoll = safeLerp(10 * realFrameTime(), vm.m_RecoilRoll, 0) + vm.m_RecoilRollLerp = safeLerp(10 * realFrameTime(), vm.m_RecoilRollLerp, vm.m_RecoilRoll) + + vm.m_RecoilAng.sc = lerp(vm.m_AimDelta, 80, 240) * getRecoilValue(w, "SnapMultiplier") + vm.m_RecoilAng.wc = lerp(vm.m_AimDelta, 1.25, 0.85) / getRecoilValue(w, "LoosenessMultiplier") + vm.m_RecoilPos.sc = lerp(vm.m_AimDelta, 80, 120) * getRecoilValue(w, "SnapMultiplier") + vm.m_RecoilPos.wc = lerp(vm.m_AimDelta, 1, 1.2) / getRecoilValue(w, "LoosenessMultiplier") + + vm.m_RecoilResetSpeed = safeLerp(10 * realFrameTime(), vm.m_RecoilResetSpeed, 1) + local resetSpeed = clamp(vm.m_RecoilResetSpeed, 0, 1) * 100 + + vm.m_RecoilAngleTarget.pitch = approachAngle(vm.m_RecoilAngleTarget.pitch, 0, resetSpeed * realFrameTime()) + vm.m_RecoilAngleTarget.yaw = approachAngle(vm.m_RecoilAngleTarget.yaw, 0, resetSpeed * realFrameTime()) + vm.m_RecoilAngleTarget.roll = approachAngle(vm.m_RecoilAngleTarget.roll, 0, resetSpeed * realFrameTime()) + + vm.m_RecoilAng:SetTarget(vm.m_RecoilAngleTarget * 10) + vm.m_RecoilAng:Decay() + + vm.m_RecoilPosTarget.x = approach(vm.m_RecoilPosTarget.x, 0, resetSpeed * realFrameTime()) + vm.m_RecoilPosTarget.y = approach(vm.m_RecoilPosTarget.y, 0, resetSpeed * realFrameTime()) + vm.m_RecoilPosTarget.z = approach(vm.m_RecoilPosTarget.z, 0, resetSpeed * realFrameTime()) + + vm.m_RecoilPos:SetTarget(vm.m_RecoilPosTarget) + vm.m_RecoilPos:Decay() + + local p = vm.m_RecoilAng:GetValue().p * lerp(vm.m_AimDelta, 1, 0.065) + local ya = vm.m_RecoilAng:GetValue().y * lerp(vm.m_AimDelta, 1, 0.08) + local r = vm.m_RecoilAng:GetValue().r * lerp(vm.m_AimDelta, 1, 0.1) + + ang.p = ang.p - p + ang.y = ang.y - ya + ang.r = ang.r + r + lerp(vm.m_AimDelta, 0, vm.m_RecoilRollLerp) + + local x = vm.m_RecoilPos:GetValue().x * lerp(vm.m_AimDelta, 1, 0.35) + local y = vm.m_RecoilPos:GetValue().y * lerp(vm.m_AimDelta, 1, 0.35) + local z = vm.m_RecoilPos:GetValue().z * lerp(vm.m_AimDelta, 1, 0.35) + + pos.x = pos.x - x + pos.y = pos.y - y - lerp(vm.m_AimDelta, 0, vm.m_RecoilShakeLerp * 1.5) + pos.z = pos.z + z +end + +function ENT:CalcViewModelView(pos, ang) + if (game.SinglePlayer() && gui.IsGameUIVisible()) then + return + end + + local w = self:GetOwner() + local lpos, lang = hook.Run("CalcViewModelView", w, self, pos, ang, Vector(pos), Angle(ang)) + + pos:Set(lpos) + ang:Set(lang) + + local cPos, cAng = Vector(), Angle() + + self.m_AimDelta = mw_math.SafeLerp(18 * RealFrameTime(), self.m_AimDelta, w:GetAimDelta()) + self.m_AimModeDelta = mw_math.SafeLerp(18 * RealFrameTime(), self.m_AimModeDelta, w:GetAimModeDelta()) + + movementInertia(self, cPos, cAng) + sway(self, cPos, cAng, ang) + recoil(self, cPos, cAng) + + cPos:Mul(mw_math.btn(1 / RealFrameTime() >= 14)) + cAng:Mul(mw_math.btn(1 / RealFrameTime() >= 14)) + + ang:RotateAroundAxis(ang:Forward(), cAng.r) + ang:RotateAroundAxis(ang:Right(), cAng.p) + ang:RotateAroundAxis(ang:Up(), cAng.y) + + pos:Add(ang:Forward() * cPos.y) + pos:Add(ang:Right() * cPos.x) + pos:Add(ang:Up() * cPos.z) + + --we calculate offsets at the end so movements are aligned to original axis + --regardless of offset + cPos:SetUnpacked(0, 0, 0) + cAng:SetUnpacked(0, 0, 0) + offsets(self, cPos, cAng) + + ang:RotateAroundAxis(ang:Forward(), cAng.r) + ang:RotateAroundAxis(ang:Right(), cAng.p) + ang:RotateAroundAxis(ang:Up(), cAng.y) + + pos:Add(ang:Forward() * cPos.y) + pos:Add(ang:Right() * cPos.x) + pos:Add(ang:Up() * cPos.z) + + local originalFov = weapons.GetStored("mg_base").ViewModelFOV + local hipFovMul = GetConVar("mgbase_fx_vmfov"):GetFloat() + local adsFovMul = GetConVar("mgbase_fx_vmfov_ads"):GetFloat() + + if (w:GetSight() != nil && w:GetSight().Optic != nil) then + adsFovMul = math.max(adsFovMul, Lerp(self.m_AimModeDelta, 1, adsFovMul)) + end + + w.ViewModelFOV = mw_math.SafeLerp(self.m_AimDelta, originalFov, originalFov * Lerp(self.m_AimModeDelta, w.Zoom.ViewModelFovMultiplier, 0.9)) + w.ViewModelFOV = w.ViewModelFOV * Lerp(self.m_AimDelta, hipFovMul, adsFovMul) + + if (GetViewEntity():IsPlayer()) then + local curFov = GetViewEntity():GetFOV() + w.ViewModelFOV = w.ViewModelFOV / Lerp(self.m_AimDelta, 1, (90 / curFov)) + end +end \ No newline at end of file diff --git a/lua/entities/mg_viewmodel/client/cl_events.lua b/lua/entities/mg_viewmodel/client/cl_events.lua new file mode 100644 index 0000000..297b33a --- /dev/null +++ b/lua/entities/mg_viewmodel/client/cl_events.lua @@ -0,0 +1,298 @@ +require("mw_utils") + +--Events we can use: +-- CL_EVENT_SOUND [sound, vector for spatial] (5004) -> sound (eg: "event 5004 mw19.sound 0,10,10") +-- CL_EJECT_BRASS1 [attachment name] (6001) -> ejection (eg: event 6001 tag_ejection) +-- CL_EVENT_DISPATCHEFFECT0 [particle name, attachment name] (9001) -> particles (eg: event 9001 mw_muzzleflash tag_flash) +-- CL_EVENT_DISPATCHEFFECT1 [0/1] (9011) -> left hand grip pose toggle (eg: event 9011 0 -> event 9011 1) +-- CL_EVENT_DISPATCHEFFECT2 [0/1] (9021) -> right hand grip pose toggle (eg: event 9021 0 -> event 9021 1) +-- CL_EVENT_DISPATCHEFFECT3 [name] (9031) -> run attachment function (eg: event 9031 FillBullets) + +--Animation event codes +local CL_EVENT_MUZZLEFLASH0 = 5001 -- Muzzleflash on attachment 0 +local CL_EVENT_MUZZLEFLASH1 = 5011 -- Muzzleflash on attachment 1 +local CL_EVENT_MUZZLEFLASH2 = 5021 -- Muzzleflash on attachment 2 +local CL_EVENT_MUZZLEFLASH3 = 5031 -- Muzzleflash on attachment 3 +local CL_EVENT_SPARK0 = 5002 -- Spark on attachment 0 +local CL_EVENT_NPC_MUZZLEFLASH0 = 5003 -- Muzzleflash on attachment 0 for third person views +local CL_EVENT_NPC_MUZZLEFLASH1 = 5013 -- Muzzleflash on attachment 1 for third person views +local CL_EVENT_NPC_MUZZLEFLASH2 = 5023 -- Muzzleflash on attachment 2 for third person views +local CL_EVENT_NPC_MUZZLEFLASH3 = 5033 -- Muzzleflash on attachment 3 for third person views +local CL_EVENT_SOUND = 5004 -- Emit a sound // NOTE THIS MUST MATCH THE DEFINE AT CBaseEntity::PrecacheModel on the server!!!!! +local CL_EVENT_EJECTBRASS1 = 6001 -- Eject a brass shell from attachment 1 +local CL_EVENT_DISPATCHEFFECT0 = 9001 -- Hook into a DispatchEffect on attachment 0 +local CL_EVENT_DISPATCHEFFECT1 = 9011 -- Hook into a DispatchEffect on attachment 1 +local CL_EVENT_DISPATCHEFFECT2 = 9021 -- Hook into a DispatchEffect on attachment 2 +local CL_EVENT_DISPATCHEFFECT3 = 9031 -- Hook into a DispatchEffect on attachment 3 +local CL_EVENT_DISPATCHEFFECT4 = 9041 -- Hook into a DispatchEffect on attachment 4 +local CL_EVENT_DISPATCHEFFECT5 = 9051 -- Hook into a DispatchEffect on attachment 5 +local CL_EVENT_DISPATCHEFFECT6 = 9061 -- Hook into a DispatchEffect on attachment 6 +local CL_EVENT_DISPATCHEFFECT7 = 9071 -- Hook into a DispatchEffect on attachment 7 +local CL_EVENT_DISPATCHEFFECT8 = 9081 -- Hook into a DispatchEffect on attachment 8 +local CL_EVENT_DISPATCHEFFECT9 = 9091 -- Hook into a DispatchEffect on attachment 9 +local utilef = util.Effect +local pef = ParticleEffectAttach + +local function invalidateBoneCacheForParticles(ent) + while (IsValid(ent)) do + if (ent:IsEffectActive(EF_BONEMERGE) || !IsValid(ent:GetParent())) then + ent:InvalidateBoneCache() + end + ent = ent:GetParent() + end +end + +local function findAttachmentInChildren(ent, attName) + local attId = mw_utils.LookupAttachmentCached(ent, attName) + + for _, c in pairs(ent:GetChildren()) do + if (c:GetClass() != "class C_BaseFlex") then + continue + end + + local ce, ca = findAttachmentInChildren(c, attName) + + if (ca != nil) then + attId = ca + ent = ce + end + end + + return ent, attId +end + +function ENT:FindAttachment(attName) + return findAttachmentInChildren(self, attName) +end + +local function createEffectDataForShell(owner, attName) + local data = EffectData() + data:SetEntity(owner) + + local attEnt, attId = findAttachmentInChildren(owner, attName) + + if (attId == nil) then + mw_utils.ErrorPrint("createEffectDataForShell: "..attName.." does not exist on model!") + return data + end + + local att = attEnt:GetAttachment(attId) + data:SetOrigin(att.Pos) + data:SetAngles(att.Ang) + + owner = owner:GetOwner() + + while (IsValid(owner) && !owner:IsPlayer()) do + owner = owner:GetOwner() + end + + if (IsValid(owner)) then + data:SetNormal(owner:GetVelocity():GetNormalized()) + data:SetMagnitude(owner:GetVelocity():Length()) + end + + return data +end + +function ENT:IsFirstPerson() + local w = self:GetOwner() + return IsValid(w:GetOwner()) && w:GetOwner():IsPlayer() && !w:GetOwner():ShouldDrawLocalPlayer() && w:IsCarriedByLocalPlayer() +end + +function ENT:HandleEjection(attName) + local w = self:GetOwner() + + if (w.Shell == "mwb_shelleject" || w.Shell == "mwb_shelleject_comp") then + mw_utils.ErrorPrint("DoEjection: do not use mwb_shelleject! Use an existing caliber or make your own.") + return true + elseif (istable(w.Shell)) then + mw_utils.DevPrint("DoEjection: still using legacy way! Consider switching to new method.") + end + + local eff = isstring(w.Shell) && w.Shell || "mwb_shelleject_comp" + + if (self:IsFirstPerson()) then + local data = createEffectDataForShell(self, attName) + data:SetFlags(1) + utilef(eff, data) + else + local data = createEffectDataForShell(w, attName) + data:SetFlags(0) + utilef(eff, data) + end + + return true +end + +function ENT:HandleParticle(partName, attName) + local w = self:GetOwner() + + if (w.ParticleEffects != nil && w.ParticleEffects[partName] != nil) then + partName = w.ParticleEffects[partName] + end + + if (self:IsFirstPerson()) then + local ent, attId = findAttachmentInChildren(self, attName) + + if (attId == nil) then + mw_utils.ErrorPrint("HandleParticle: "..attName.." does not exist on viewmodel!") + return true + end + + if (self.m_Particles[partName] != nil) then + self.m_Particles[partName]:StopEmissionAndDestroyImmediately() + end + + local particleSystem = CreateParticleSystem(ent, partName, PATTACH_POINT_FOLLOW, attId) + particleSystem:SetIsViewModelEffect(true) + particleSystem:SetShouldDraw(false) + self.m_Particles[partName] = particleSystem + else + local ent, attId = findAttachmentInChildren(w, attName) + + if (attId == nil) then + mw_utils.ErrorPrint("HandleParticle: "..attName.." does not exist on worldmodel!") + return true + end + + ent:StopParticlesNamed(partName) + pef(partName, PATTACH_POINT_FOLLOW, ent, attId) + end + + return true +end + +function ENT:HandleSound(soundName, spatialVector) + local w = self:GetOwner() + + if (IsValid(w) && w.SoundOverrides != nil) then + soundName = w.SoundOverrides[soundName] || soundName + end + + if (spatialVector != nil && !spatialVector:IsZero()) then + if (IsValid(w:GetOwner()) && !w:GetOwner():IsOnGround()) then + return true + end + + local ang = self:GetAngles() + local pos = self:GetPos() + pos:Add(ang:Forward() * spatialVector.y) + pos:Add(ang:Right() * spatialVector.x) + pos:Add(ang:Up() * spatialVector.z) + + sound.Play(soundName, pos) + return true + end + + --if (self:GetPlaybackRate() != 1) then + -- self:EmitSound(soundName, 100, math.Clamp(self:GetPlaybackRate(), 0.95, 1.15) * 100, 1, CHAN_AUTO, SND_CHANGE_PITCH) + --else + self:EmitSound(soundName, 0, math.Clamp(self:GetPlaybackRate(), 1, 1.1) * 100, 0, 0, SND_SHOULDPAUSE + SND_CHANGE_PITCH) + --end + + return true +end + +function ENT:HandleLeftHandGrip(val) + self.m_LeftHandGripTarget = tonumber(val) + return true +end + +function ENT:HandleRightHandGrip(val) + self.m_RightHandGripTarget = tonumber(val) + return true +end + +function ENT:HandleAttFunction(name) + self:GetOwner():AttachmentFunction(name) + return true +end + +local function eventError(event, msg) + mw_utils.ErrorPrint("FireAnimationEvent ("..event.."): "..msg) +end + +function ENT:FireAnimationEvent(pos, ang, event, name) + if (event == CL_EVENT_DISPATCHEFFECT3) then + return self:HandleAttFunction(name) + end + + if (event == CL_EVENT_DISPATCHEFFECT1) then + return self:HandleLeftHandGrip(name || 0) + end + + if (event == CL_EVENT_DISPATCHEFFECT2) then + return self:HandleRightHandGrip(name || 0) + end + + if (event == CL_EVENT_SOUND) then + if (name == nil) then + eventError(event, "Missing sound name!") + return true + end + + local args = string.Explode(" ", name) + + if (#args <= 0) then + eventError(event, "Missing arguments!") + return true + end + + local soundName = args[1] + local spatialVector = Vector() + + if (args[2] != nil) then + local components = string.Explode(",", args[2]) + + if (#components <= 1) then + --jake used spaces like a dumbass + spatialVector.x = args[2] + spatialVector.y = args[3] + spatialVector.z = args[4] + else + spatialVector.x = tonumber(components[1]) || 0 + spatialVector.y = tonumber(components[2]) || 0 + spatialVector.z = tonumber(components[3]) || 0 + end + end + + return self:HandleSound(soundName, spatialVector) + end + + if (event == CL_EVENT_EJECTBRASS1) then + if (name == nil) then + eventError(event, "Missing attachment name!") + return true + end + + if (self:GetOwner().HandleEjection != nil) then + return self:GetOwner():HandleEjection(name) + end + + return self:HandleEjection(name) + end + + if (event == CL_EVENT_DISPATCHEFFECT0) then + if (name == nil) then + eventError(event, "Missing arguments!") + return true + end + + local args = string.Explode(" ", name) + + if (#args <= 0) then + eventError(event, "Missing arguments!") + return true + end + + local partName = args[1] + local attName = args[2] + + if (attName == nil) then + eventError(event, "Missing attachment name!") + return true + end + + return self:HandleParticle(partName, attName) + end +end \ No newline at end of file diff --git a/lua/entities/mg_viewmodel/client/cl_render.lua b/lua/entities/mg_viewmodel/client/cl_render.lua new file mode 100644 index 0000000..6fc3f57 --- /dev/null +++ b/lua/entities/mg_viewmodel/client/cl_render.lua @@ -0,0 +1,273 @@ +local function drawModels(vm, ent, flags) + --https://github.com/Facepunch/garrysmod-issues/issues/4821 + --i didn't need this before, but now i do :shrug: + ent:RemoveEFlags(EFL_USE_PARTITION_WHEN_NOT_SOLID) + + local children = ent:GetChildren() + local numChildren = #children + + if (ent:IsEffectActive(EF_BONEMERGE)) then + if (ent == vm.m_CHands) then + ent:SetRenderOrigin(LocalToWorld(-ent:OBBCenter(), mw_math.ZeroAngle, vm:GetRenderOrigin(), vm:GetRenderAngles())) + else + if (ent:EntIndex() < 0) then + ent:SetRenderOrigin(vm:GetRenderOrigin()) + end + + if (numChildren > 0) then + --some weird issue on windowed needs this + ent:SetupBones() + end + end + end + + if ((numChildren <= 0 || ent:EntIndex() > 0) && !ent.bAttachmentRenderOverride) then + ent:DrawModel(flags) + end + + ent.CustomizationAnimationDelta = 0 + + for c = 1, numChildren do + drawModels(vm, children[c], flags) + end +end + +local function isCustomizing() + return IsValid(MW_CUSTOMIZEMENU) +end + +local function drawCustomizationBackground() + if (!isCustomizing()) then + return + end + + cam.Start2D() + surface.SetDrawColor(0, 0, 0, MW_CUSTOMIZEMENU.AlphaDelta * 200) + surface.DrawRect(0, 0, ScrW(), ScrH()) + cam.End2D() +end + +local function shouldDrawModel(model, children) + for _, c in pairs(children) do + if (!c:IsEffectActive(EF_BONEMERGE)) then + return true + end + end + + return #children <= 0 || model:EntIndex() > 0 +end + +local function drawCustomizationHighlights(model, flags, refvalue) + model.CustomizationAnimationDelta = (model.CustomizationAnimationDelta || 0) - (math.min(FrameTime(), 0.1) * 3) + + local children = model:GetChildren() + + if (shouldDrawModel(model, children)) then + model:RemoveEFlags(EFL_USE_PARTITION_WHEN_NOT_SOLID) + + if (#children > 0) then + --some weird issue on windowed needs this + model:SetupBones() + end + + render.SetStencilWriteMask(0xFF) + render.SetStencilTestMask(0xFF) + render.SetStencilReferenceValue(0) + + render.SetStencilCompareFunction(STENCIL_ALWAYS) + render.SetStencilPassOperation(STENCIL_REPLACE) + render.SetStencilFailOperation(STENCIL_KEEP) + render.SetStencilZFailOperation(STENCIL_KEEP) + + render.SetStencilEnable(true) + render.SetStencilReferenceValue(refvalue + 1) + model:RemoveEFlags(EFL_USE_PARTITION_WHEN_NOT_SOLID) + model:DrawModel(flags) + render.SetStencilCompareFunction(STENCIL_EQUAL) + + if (model.CustomizationAnimationDelta > 0) then + cam.Start2D() + surface.SetDrawColor(model.CustomizationAnimationColor.r, model.CustomizationAnimationColor.g, model.CustomizationAnimationColor.b, model.CustomizationAnimationDelta * 200) + surface.DrawRect(0, 0, ScrW(), ScrH()) + cam.End2D() + end + + render.SetStencilEnable(false) + end + + for i, c in pairs(children) do + drawCustomizationHighlights(c, flags, refvalue + i + #c:GetChildren()) --this is gonna get out of hand eventually + end +end + +function ENT:Draw(flags) + if (GetConVar("mgbase_debug_vmrender"):GetInt() <= 0) then + return + end + + if (self.m_LastSequenceIndex == "INIT" || self:GetRenderOrigin() == nil) then + --calcview / no anim called + return + end + + local w = self:GetOwner() + + if (!IsValid(w) || !w:IsCarriedByLocalPlayer()) then + return + end + + if (IsValid(w:GetOwner())) then + w:GetOwner():DrawViewModel(false) + end + + render.SetColorModulation(1, 1, 1) + drawCustomizationBackground() + + self:DrawShadow(false) + + self.bRendering = true + self:SetupBones() --makes velements and vmanip work + self.bRendering = false + + if (!isCustomizing()) then + if (!w:HasFlag("Holstering") || CurTime() <= w:GetNextHolsterTime()) then + self:SetNoDraw(false) + drawModels(self, self, flags) + + for name, particleSystem in pairs(self.m_Particles) do + if (!particleSystem:IsValid() || particleSystem:IsFinished()) then + self.m_Particles[name] = nil + continue + end + + particleSystem:Render() + end + + --attachments + local atts = w:GetAllAttachmentsInUse() + + for slot = #atts, 1, -1 do + if (IsValid(atts[slot].m_Model)) then + atts[slot]:Render(w, atts[slot].m_Model) + end + end + end + self:SetNoDraw(true) + else + --self.m_CHands:SetNoDraw(false) + self.m_CHands:DrawModel(flags) + --self.m_CHands:SetNoDraw(true) + drawCustomizationHighlights(self, flags, MWBASE_STENCIL_REFVALUE + 17) + end + + for shell, _ in pairs(self.m_Shells) do + if (!IsValid(shell)) then + self.m_Shells[shell] = nil + continue + end + + shell:DrawModel(flags) + end + + self:ViewBlur() + + if (IsValid(w:GetOwner())) then + w:GetOwner():DrawViewModel(true) + end +end + +local function drawBlurModels(model, flags) + local children = model:GetChildren() + + --if (shouldDrawModel(model, children)) then + model:RemoveEFlags(EFL_USE_PARTITION_WHEN_NOT_SOLID) + model:DrawModel(flags) + --end + + for i, c in pairs(children) do + drawBlurModels(c, flags) --this is gonna get out of hand eventually + end +end + +local blurMaterial = Material("mg/blur.vmt") +ENT.LerpBlur = 0 +function ENT:ViewBlur() + local w = self:GetOwner() + + if (!IsValid(w)) then + return + end + + local bPixelShaders2 = render.SupportsPixelShaders_2_0() + + if (!bPixelShaders2) then + return + end + + if (GetConVar("mgbase_fx_blur"):GetInt() != 1) then return end + + if (w.DisableReloadBlur && w:HasFlag("Reloading")) then return end + + local bOpticAim = (w:GetAimDelta() > 0 && w:GetSight() != nil && w:GetSight().Optic != nil && w:GetAimModeDelta() <= w.m_hybridSwitchThreshold) + local bCanBlur = w:HasFlag("Reloading") || w:HasFlag("Customizing") || bOpticAim || (CurTime() < w:GetNextInspectTime() && w.m_seqIndex == "Inspect") + + if (bCanBlur) then + local delta = 1 - w:GetAimDelta() + + if (bOpticAim) then + delta = w:GetAimDelta() + end + + if (CurTime() < w:GetNextInspectTime() && w.m_seqIndex == "Inspect") then + delta = self:GetCycle() > 0.8 && 0 || 1 + end + + self.LerpBlur = Lerp(5 * FrameTime(), self.LerpBlur, 5 * delta) + + render.SetStencilWriteMask(0xFF) + render.SetStencilTestMask(0xFF) + render.SetStencilReferenceValue(0) + render.SetStencilPassOperation(STENCIL_KEEP) + render.SetStencilZFailOperation(STENCIL_KEEP) + render.ClearStencil() + render.SetStencilEnable(true) + render.SetStencilReferenceValue(MWBASE_STENCIL_REFVALUE + 13) + render.SetStencilCompareFunction(STENCIL_NEVER) + render.SetStencilFailOperation(STENCIL_REPLACE) + render.SetBlend(0) + + if (w:GetAimDelta() < 1) then + drawBlurModels(self, flags) + elseif (w:GetSight() != nil && IsValid(w:GetSight().hideModel)) then + w:GetSight().m_Model:SetupBones() + w:GetSight().m_Model:InvalidateBoneCache() + local matrix = w:GetSight().m_Model:GetBoneMatrix(0) + + w:GetSight().hideModel:SetPos(matrix:GetTranslation()) + w:GetSight().hideModel:SetAngles(matrix:GetAngles()) + + w:GetSight().hideModel:DrawModel() + end + render.SetBlend(1) + render.SetStencilCompareFunction(STENCIL_NOTEQUAL) + cam.Start2D() + for i = 1, self.LerpBlur, 1 do + render.UpdateScreenEffectTexture() + surface.SetMaterial(blurMaterial) + surface.SetDrawColor(255, 255, 255, 255) + surface.DrawTexturedRect(0, 0, ScrW(), ScrH()) + end + cam.End2D() + render.SetStencilEnable(false) + render.ClearStencil() + else + self.LerpBlur = 0 + end +end + +--[[hook.Add("VManipVMEntity", "MW19_VManipEntity", function(ply, weapon) + --this is probably not necessary since vmanip already looks for m_ViewModel + if (weapons.IsBasedOn(weapon:GetClass(), "mg_base")) then + return weapon:GetViewModel() + end +end)]] \ No newline at end of file diff --git a/lua/entities/mg_viewmodel/init.lua b/lua/entities/mg_viewmodel/init.lua new file mode 100644 index 0000000..19e35f7 --- /dev/null +++ b/lua/entities/mg_viewmodel/init.lua @@ -0,0 +1,9 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("client/cl_animation.lua") +AddCSLuaFile("client/cl_calcview.lua") +AddCSLuaFile("client/cl_render.lua") +AddCSLuaFile("client/cl_events.lua") +AddCSLuaFile("shared.lua") +include("shared.lua") + +util.AddNetworkString("mgbase_viewmodelanim") \ No newline at end of file diff --git a/lua/entities/mg_viewmodel/shared.lua b/lua/entities/mg_viewmodel/shared.lua new file mode 100644 index 0000000..94d3b2c --- /dev/null +++ b/lua/entities/mg_viewmodel/shared.lua @@ -0,0 +1,186 @@ +ENT.Base = "base_entity" +ENT.Type = "anim" +ENT.RenderGroup = RENDERGROUP_VIEWMODEL +ENT.RenderMode = RENDERMODE_ENVIROMENTAL +--ENT.AutomaticFrameAdvance = true + +function ENT:Initialize() + if (!IsValid(self:GetOwner())) then + error("Invalid weapon for viewmodel!") + end + + self:AddEFlags(EFL_KEEP_ON_RECREATE_ENTITIES) + self:AddEFlags(EFL_FORCE_CHECK_TRANSMIT) + self:AddEFlags(EFL_NO_THINK_FUNCTION) + self:AddEFlags(EFL_NO_GAME_PHYSICS_SIMULATION) + self:AddEFlags(EFL_DONTBLOCKLOS) + self:AddEFlags(EFL_DONTWALKON) + self:AddEFlags(EFL_NO_DISSOLVE) + self:AddEFlags(EFL_NO_PHYSCANNON_INTERACTION) + self:AddEFlags(EFL_NO_DAMAGE_FORCES) + self:AddEffects(EF_NOINTERP) + self:AddFlags(FL_NOTARGET) + self:AddFlags(FL_DONTTOUCH) + self:AddFlags(FL_STEPMOVEMENT) + + self:SetMoveType(MOVETYPE_NONE) + self:SetSolid(SOLID_NONE) + self:SetNotSolid(true) + self:SetRenderMode(self.RenderMode) + self:DrawShadow(false) + --self:SetNoDraw(true) + self:UseClientSideAnimation() + + local weapon = self:GetOwner() + + if (CLIENT) then + self:DestroyShadow() + self:InvalidateBoneCache() + self:SetupBones() + + self:ResetSequence(0) + self:SetCycle(0) + self:SetPlaybackRate(1) + + self:CreateRig() + self:CreateGloves() + self:CreateCHands() + + self:AddCallback("BuildBonePositions", function(vm, numbones) + if (!vm.bRendering) then + return + end + + --vm:GetAttachment(vm:LookupAttachment("camera")) + local matrix = vm:GetBoneMatrix(mw_utils.LookupBoneCached(vm, "tag_camera")) + + if (matrix != nil) then + local worldMatrix = vm:GetBoneMatrix(0) + self.m_CameraAttachment = matrix:GetInverse() * worldMatrix + end + + if (VManip != nil) then + hook.GetTable()["PostDrawViewModel"]["VManip"](vm, vm:GetOwner():GetOwner(), vm:GetOwner()) + end + end) + + if (VManip != nil) then + hook.Add("VManipPostPlayAnim", self, function(self, name) + self:VManipPostPlayAnim(name) + end) + + hook.Add("VManipHoldQuit", self, function(self) + self:VManipHoldQuit() + end) + + hook.Add("VManipRemove", self, function(self) + self:VManipRemove() + end) + end + end + + self.m_LastSequenceIndex = "INIT" + self.m_Tick = 0 + + --old compatibility + --weapon.m_ViewModel = self +end + +function ENT:GetAnimID(weaponSequenceIndex) + local id = 0 + + for index, _ in SortedPairs(self:GetOwner().Animations) do + id = id + 1 + + if (string.lower(index) == string.lower(weaponSequenceIndex)) then + return id + end + end + + return -1 +end + +function ENT:GetSequenceIndexByID(animId) + local id = 0 + + for index, _ in SortedPairs(self:GetOwner().Animations) do + id = id + 1 + + if (id == animId) then + return index + end + end + + return nil +end + +function ENT:GetPlayerOwner() + if (IsValid(self:GetOwner())) then + return self:GetOwner():GetOwner() + end + + return NULL +end + +function ENT:GetWeaponOwner() + return self:GetOwner() +end + +function ENT:OnRemove() + if (IsValid(self.m_Rig)) then self.m_Rig:Remove() end + if (IsValid(self.m_Gloves)) then self.m_Gloves:Remove() end + if (IsValid(self.m_CHands)) then self.m_CHands:Remove() end +end + +function ENT:PlayAnimation(weaponSequenceIndex, bNoTick) --"Holster", "Draw", ... + self.m_LastSequenceIndex = weaponSequenceIndex + + if (!bNoTick) then + self.m_Tick = self.m_Tick + 1 + end + + local weaponSequence = nil--self:GetOwner().Animations[weaponSequenceIndex] + + for index, seq in pairs(self:GetOwner().Animations) do + if (string.lower(index) == string.lower(weaponSequenceIndex)) then + weaponSequence = seq + break + end + end + + if (weaponSequence == nil) then + return + end + + local animId = self:GetAnimID(weaponSequenceIndex) + local rate = weaponSequence.Fps / 30 + + if (CLIENT) then + local anims = weaponSequence.Sequences + self:PlaySequence(anims[math.random(1, #anims)], rate) + end + + if (SERVER) then + net.Start("mgbase_viewmodelanim", true) + net.WriteEntity(self) + net.WriteFloat(rate) + net.WriteUInt(animId, 16) + net.WriteUInt(self.m_Tick, 16) + net.Broadcast() + end +end + +function ENT:UpdateAnimation() + local cycle = self:GetCycle() + self:PlayAnimation(self.m_LastSequenceIndex, true) + self:SetCycle(cycle) +end + +--sorryyyyy garrysmod-issues/issues/5344 +local oldCleanup = game.CleanUpMap +function game.CleanUpMap(dontSendToClients, ExtraFilters) + dontSendToClients = dontSendToClients || false + ExtraFilters = ExtraFilters || {} + table.insert(ExtraFilters, "mg_viewmodel") + oldCleanup(dontSendToClients, ExtraFilters) +end \ No newline at end of file diff --git a/lua/entities/mg_warhead/cl_init.lua b/lua/entities/mg_warhead/cl_init.lua new file mode 100644 index 0000000..7e9ce98 --- /dev/null +++ b/lua/entities/mg_warhead/cl_init.lua @@ -0,0 +1,84 @@ +include("shared.lua") + +ENT.AutomaticFrameAdvance = true + + +local flair = Material("shadowdark/flairs/grenade_flair.vmt") +ENT.OuterFlairColor = Color(236,153,17,255) +ENT.InnerFlairColor = Color(255,255,255,255) + +ENT.OuterFlairScale = 1 +ENT.InnerFlairScale = 0.3 + +function ENT:Draw(flags) + self:DrawModel(flags) + + if (self.m_SpawnPos != nil && self:GetPos():Distance(self.m_SpawnPos) > 64) then + ParticleEffectAttach("rockettrail", PATTACH_ABSORIGIN_FOLLOW, self, 0) + self.m_SpawnPos = nil + end + + local ang = LocalPlayer():EyeAngles() + local angle = Angle( 0, LocalPlayer():EyeAngles()[2], 0 ) + + angle = Angle(LocalPlayer():EyeAngles()[1], angle.y, 0 ) + + angle:RotateAroundAxis( angle:Up(), -90 ) + angle:RotateAroundAxis( angle:Forward(), 90 ) + + cam.Start3D2D( self:GetPos() - self:GetForward() * -5, angle, 0.2 ) + + local OuterScale = 512 * self.OuterFlairScale + local InnerScale = 512 * self.InnerFlairScale + + surface.SetMaterial(flair) + surface.SetDrawColor(self.OuterFlairColor) + surface.DrawTexturedRect(-OuterScale/2, -OuterScale/2, OuterScale, OuterScale) + + surface.SetDrawColor(self.InnerFlairColor) + surface.DrawTexturedRect(-InnerScale/2, -InnerScale/2, InnerScale, InnerScale) +cam.End3D2D() + +end + +function ENT:DrawTranslucent(flags) + self:Draw(flags) +end + +function ENT:OnRemove() + if (self:WaterLevel() <= 0) then + self:EmitSound("^viper/shared/rocket_expl_env_0"..math.random(1, 3)..".wav", 150, 100, 1, CHAN_WEAPON) --snd scripts dont work lol! + + local dlight = DynamicLight(self:EntIndex()) + if (dlight) then + dlight.pos = self:GetPos() + dlight.r = 255 + dlight.g = 75 + dlight.b = 0 + dlight.brightness = 5 + dlight.Decay = 2000 + dlight.Size = 1024 + dlight.DieTime = CurTime() + 5 + end + end + + self:StopParticles() +end + +--[[--------------------------------------------------------- + Name: Think + Desc: Client Think - called every frame +-----------------------------------------------------------]] +function ENT:Think() + if (self:WaterLevel() > 0) then + self:EmitSound("viper/shared/melee/melee_world_fist_soft_plr_01.ogg", 75, 100, 0.001, CHAN_WEAPON) + self:StopParticles() + end +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: Called immediately after a "load" +-----------------------------------------------------------]] +function ENT:OnRestore() +end diff --git a/lua/entities/mg_warhead/init.lua b/lua/entities/mg_warhead/init.lua new file mode 100644 index 0000000..23587fb --- /dev/null +++ b/lua/entities/mg_warhead/init.lua @@ -0,0 +1,278 @@ +AddCSLuaFile("cl_init.lua") +AddCSLuaFile("shared.lua") + +include("shared.lua") + + + +--[[--------------------------------------------------------- + Name: KeyValue + Desc: Called when a keyvalue is added to us +-----------------------------------------------------------]] +function ENT:KeyValue( key, value ) +end + +--[[--------------------------------------------------------- + Name: OnRestore + Desc: The game has just been reloaded. This is usually the right place + to call the GetNW* functions to restore the script's values. +-----------------------------------------------------------]] +function ENT:OnRestore() +end + +--[[--------------------------------------------------------- + Name: AcceptInput + Desc: Accepts input, return true to override/accept input +-----------------------------------------------------------]] +function ENT:AcceptInput( name, activator, caller, data ) + return false +end + +--[[--------------------------------------------------------- + Name: UpdateTransmitState + Desc: Set the transmit state +-----------------------------------------------------------]] +function ENT:UpdateTransmitState() + return TRANSMIT_ALWAYS +end + +--[[--------------------------------------------------------- + Name: Think + Desc: Entity's think function. +-----------------------------------------------------------]] +function ENT:Think() +end + +function ENT:PhysicsCollide(colData, collider) + if (self.m_Water && self:GetVelocity():Length() < 250) then + timer.Simple(0, function() + self:Remove() + end) + + return + end + + local bHasExploded = false + + for i, e in pairs(ents.FindInSphere(self:GetPos(), 16)) do + if (e:IsNPC()) then + self:Explode({ + HitEntity = e, + HitNormal = (e:NearestPoint(self:GetPos()) - self:GetPos()):GetNormalized(), + HitPos = e:NearestPoint(self:GetPos()) + }) + + if (e:GetClass() == "npc_strider") then + e:Fire("Explode") + end + + bHasExploded = true + end + end + + if (!bHasExploded) then + self:Explode(colData) + end +end + +-- function ENT:PhysicsUpdate(phys) +-- if (self:WaterLevel() > 0) then +-- self.m_Water = true +-- end + +-- if (self.m_Water) then +-- phys:EnableDrag(true) +-- phys:EnableGravity(true) +-- return +-- end + +-- self.m_Fuel = self.m_Fuel - 100 * FrameTime() +-- self.m_Stability = self.m_Stability + 700 * FrameTime() + +-- if (self.m_Propel && self.m_Fuel <= 0) then +-- self.m_Propel = false +-- phys:EnableDrag(true) +-- phys:EnableGravity(true) +-- end + +-- if (self.m_Propel) then +-- phys:AddVelocity(phys:GetAngles():Forward() * self.Projectile.Speed) +-- self.m_gravity = self.m_gravity + (self.Projectile.Gravity) + +-- phys:SetPos(self.LastPos + phys:GetAngles():Forward() * (self.Projectile.Speed * FrameTime()) - (Vector(0, 0, self.m_gravity) * FrameTime())) +-- end + +-- local vel = phys:GetVelocity() +-- phys:SetAngles(vel:Angle() + Angle(self.Projectile.Gravity,math.Rand(self.m_Stability / -self.Projectile.Stability, self.m_Stability / self.Projectile.Stability),self.m_gravity)) +-- phys:SetVelocity(vel) + + + + +-- if (self:WaterLevel() > 0) then +-- self.m_Propel = false +-- end + +-- for i, e in pairs(ents.FindInSphere(phys:GetPos(), 16)) do +-- if (e:IsNPC()) then +-- self:Explode({ +-- HitEntity = e, +-- HitNormal = (e:NearestPoint(phys:GetPos()) - phys:GetPos()):GetNormalized(), +-- HitPos = e:NearestPoint(phys:GetPos()) +-- }) + +-- if (e:GetClass() == "npc_strider") then +-- e:Fire("Explode") +-- end +-- end +-- end +-- end + +function ENT:PhysicsUpdate(phys) + + self.Target:SetPos(phys:GetPos()) + + self.m_Fuel = self.m_Fuel - 100 * FrameTime() + self.m_Stability = self.m_Stability + 700 * FrameTime() + + if (self.m_Propel && self.m_Fuel <= 0) then + self.m_Propel = false + phys:EnableDrag(true) + phys:EnableGravity(true) + phys:AddVelocity(phys:GetAngles():Forward() * self.Projectile.Speed) + end + + if (self.m_Propel) then + + phys:SetPos(self.LastPos + phys:GetAngles():Forward() * (self.Projectile.Speed * FrameTime()) - (Vector(0, 0, self.m_gravity) * FrameTime())) + + if (self.m_Tracking && self.TrackedEntity:IsValid()) then + local dir = self.TrackedEntity:WorldSpaceCenter() - phys:GetPos() + phys:SetAngles(LerpAngle(self.Projectile.TrackingFraction, phys:GetAngles(), dir:Angle())) + elseif self.Projectile.Stability != 0 then + phys:SetAngles(phys:GetAngles() + Angle(0,math.Rand(self.m_Stability / -self.Projectile.Stability, self.m_Stability / self.Projectile.Stability),0)) + end + + else + local vel = phys:GetVelocity() + phys:SetAngles(vel:Angle() + Angle(self.Projectile.Gravity,math.Rand(self.m_Stability / -self.Projectile.Stability, self.m_Stability / self.Projectile.Stability),self.m_gravity)) + phys:SetVelocity(vel) + end + + if (!self.bCollided) then + --Aim assist + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Box(phys:GetPos(), -self.Maxs, self.Maxs, 0, Color(0, 200, 50, 10)) + end + + local trData = { + start = self.LastPos, + endpos = phys:GetPos(), + filter = {self:GetOwner(), self}, + mask = MASK_SHOT_PORTAL, + collisiongroup = COLLISION_GROUP_NONE, + mins = -self:OBBMaxs(), + maxs = self:OBBMins() + } + + local tr = util.TraceHull(trData) + + if (tr.Hit && (tr.Entity:IsPlayer() || tr.Entity:IsNPC())) then + self:SetPos(tr.HitPos) + self:Impact(tr,phys,true) + self:ImpactDamage(tr.Entity) + self:Explode(tr) + return + end + + --Normal hitscan + if (GetConVar("mgbase_debug_projectiles"):GetInt() > 0) then + debugoverlay.Line(self.LastPos, phys:GetPos(), 1, Color(255, 0, 0, 1)) + end + + tr = util.TraceLine(trData) + + if (tr.Hit) then + if tr.Entity:GetClass() == "func_breakable_surf" then + --shatter glass windows and other weak surfaces + util.BlastDamage(self, self, tr.HitPos, 1, 1) + else + self:SetPos(tr.HitPos) + self:Impact(tr,phys,false) + self:ImpactDamage(tr.Entity) + self:Explode(tr) + return + end + end + end + + self.LastPos = phys:GetPos() +end + +function ENT:Explode(trData) + + local phys = self:GetPhysicsObject() + if (self:WaterLevel() <= 0) then + if self.WeaponData.Explosive.BlastRadius >= 200 then + ParticleEffect("Generic_explo_vhigh", phys:GetPos() + trData.HitNormal,Angle(0,0,0)) + else + ParticleEffect("Generic_explo_high", phys:GetPos() + trData.HitNormal,Angle(0,0,0)) + end + else + local effectdata = EffectData() + effectdata:SetOrigin(phys:GetPos()) + util.Effect("WaterSurfaceExplosion", effectdata) + end + + local dmgInfo = DamageInfo() + dmgInfo:SetDamage(self.WeaponData.Bullet.Damage[1]) + dmgInfo:SetAttacker(IsValid(self:GetOwner()) && self:GetOwner() || self) + dmgInfo:SetInflictor(self) + dmgInfo:SetDamageType(self:GetDamageType()) + util.BlastDamageInfo(dmgInfo, phys:GetPos(), self.WeaponData.Explosive.BlastRadius) + + util.ScreenShake(phys:GetPos(), 3500, 1111, 1, self.WeaponData.Explosive.BlastRadius * 4) + + util.Decal("Scorch", trData.HitPos - trData.HitNormal, trData.HitPos + trData.HitNormal, self) + + for i, e in pairs(ents.FindInSphere(self:GetPos(), 32)) do + if (e:GetClass() == "npc_strider") then + e:Fire("Explode") + end + end + + self:Remove() +end + +function ENT:ImpactDamage(ent) + -- local dmgInfo = DamageInfo() + -- dmgInfo:SetDamage(self.WeaponData.Bullet.Damage[1] / self.WeaponData.Explosive.ImpactBlastRatio) + -- dmgInfo:SetAttacker(IsValid(self:GetOwner()) && self:GetOwner() || self) + -- dmgInfo:SetInflictor(self) + -- dmgInfo:SetDamageType(self:GetDamageType()) + -- dmgInfo:SetDamagePosition(self:GetPos()) + -- ent:TakeDamageInfo(dmgInfo) +end + +function ENT:GetDamageType() + return DMG_BLAST + DMG_AIRBOAT +end + +function ENT:Impact(tr, phys, bHull) + if (IsValid(self.Weapon)) then + self:FireBullets({ + Attacker = self:GetOwner(), + Num = 1, + Tracer = 0, + Src = self.LastPos, + Dir = (phys:GetPos() - self.LastPos):GetNormalized(), + HullSize = bHull && 2 || 1, + IgnoreEntity = self, + Callback = function(attacker, tr, dmgInfo) + dmgInfo:SetInflictor(self.Weapon) + dmgInfo:SetDamageType(DMG_DIRECT + self:GetDamageType()) + self.Weapon:BulletCallback(attacker, tr, dmgInfo) + end + }) + end +end \ No newline at end of file diff --git a/lua/entities/mg_warhead/shared.lua b/lua/entities/mg_warhead/shared.lua new file mode 100644 index 0000000..c741b96 --- /dev/null +++ b/lua/entities/mg_warhead/shared.lua @@ -0,0 +1,62 @@ + +ENT.Base = "base_entity" +ENT.Type = "anim" + +ENT.Spawnable = false +ENT.AdminOnly = false + +ENT.ExplosionRadius = 430 +ENT.ExplosionDamage = 700 + +game.AddParticles("particles/explosion_fx_ins.pcf") +game.AddParticles("particles/ins_rockettrail.pcf") +PrecacheParticleSystem("ins_C4_explosion") +PrecacheParticleSystem("ins_grenade_explosion") +PrecacheParticleSystem("ins_m203_explosion") +PrecacheParticleSystem("ins_rpg_explosion") +PrecacheParticleSystem("rockettrail") +PrecacheParticleSystem("Generic_explo_vhigh") + +function ENT:SetupDataTables() +end + +--[[--------------------------------------------------------- + Name: Initialize + Desc: First function called. Use to set up your entity +-----------------------------------------------------------]] + +function ENT:Initialize() + self:SetModel("models/viper/mw/weapons/w_rpapa7_rocket.mdl") + self:AddEFlags(EFL_FORCE_CHECK_TRANSMIT) + self:SetCustomCollisionCheck(true) + + if (SERVER) then + self:PhysicsInit(SOLID_VPHYSICS) + self:GetPhysicsObject():SetMaterial("metal") + self:GetPhysicsObject():AddGameFlag(FVPHYSICS_NO_PLAYER_PICKUP) + self:GetPhysicsObject():EnableDrag(false) + self:GetPhysicsObject():EnableGravity(false) + self:GetPhysicsObject():Wake() + + self.Projectile = table.Copy(self.Weapon.Projectile) + self.WeaponData = self.Weapon:GetTable() + + self.m_Propel = true + self.m_Fuel = self.Projectile.Fuel + self.m_Stability = 0 + self.m_Water = false + self.LastPos = self:GetOwner():EyePos() + self.Target = ents.Create("info_target") + self.Target:Spawn() + + if self.WeaponData.TrackedEntity then + self.m_Tracking = self.Projectile.Tracking + self.TrackedEntity = self.WeaponData.TrackedEntity + end + end + + if (CLIENT) then + self.m_SpawnPos = self:GetPos() + self:EmitSound("^viper/shared/move_rpapa7_proj_flame_cls.wav", SNDLVL_180db, 100, 1, CHAN_WEAPON) + end +end \ No newline at end of file diff --git a/lua/includes/modules/mw_math.lua b/lua/includes/modules/mw_math.lua new file mode 100644 index 0000000..3077256 --- /dev/null +++ b/lua/includes/modules/mw_math.lua @@ -0,0 +1,220 @@ +AddCSLuaFile() +module("mw_math", package.seeall) + +--globals +--ik zero_vector and zero_angle exist, i'm just making sure i'm managing my own +mw_math.ZeroVector = Vector(0, 0, 0) +mw_math.ZeroAngle = Angle(0, 0, 0) + +local cachedSquareRoots = {} + +function mw_math.SquareRoot(val) + val = math.floor(val) + cachedSquareRoots[val] = cachedSquareRoots[val] || math.sqrt(val) + return cachedSquareRoots[val] +end + +function mw_math.CosineInterp(rate, current, target) + rate = (1 - math.cos(rate * math.pi)) * 0.5 + return current * (1 - rate) + target * rate +end + +--lerp +local clamp = math.Clamp +local lerp = Lerp + +function mw_math.SafeLerp(rate, current, target) + --[[if (math.abs(current - target) < 0.001) then + return target + end + + return Lerp(math.Clamp(rate, 0, 1), current, target)]] + + return lerp(clamp(rate, 0, 1), current, target) +end + +function mw_math.SafeLerpVector(rate, current, target) + current.x = SafeLerp(rate, current.x, target.x) + current.y = SafeLerp(rate, current.y, target.y) + current.z = SafeLerp(rate, current.z, target.z) +end + +function mw_math.SafeLerpAngle(rate, current, target) + current.p = SafeLerp(rate, current.p, target.p) + current.y = SafeLerp(rate, current.y, target.y) + current.r = SafeLerp(rate, current.r, target.r) +end + +--add and mul +function mw_math.VectorAddAndMul(current, add, mul) + current.x = current.x + (add.x * mul) + current.y = current.y + (add.y * mul) + current.z = current.z + (add.z * mul) +end + +function mw_math.AngleAddAndMul(current, add, mul) + current.p = current.p + (add.p * mul) + current.y = current.y + (add.y * mul) + current.r = current.r + (add.r * mul) +end + +--spring +function mw_math.CreateSpring(springConstant, wobbleConstant) + local spring = { + target = 0, + lerp = 0, + vel = 0, + sc = springConstant, + wc = wobbleConstant, + + SetTarget = function(spring, target) + spring.target = target + end, + + Decay = function(spring, springConstant, wobbleConstant) + spring.lerp, spring.vel = mw_math.NumberDecay(spring.target, spring.lerp, spring.vel, spring.sc || springConstant, spring.wc || wobbleConstant) + end, + + GetValue = function(spring) + return spring.lerp + end + } + + return spring +end + +function mw_math.CreateVectorSpring(springConstant, wobbleConstant) + local spring = { + target = Vector(), + lerp = Vector(), + vel = Vector(), + sc = springConstant, + wc = wobbleConstant, + + SetTarget = function(spring, target) + spring.target = target + end, + + Decay = function(spring, springConstant, wobbleConstant) + mw_math.VectorDecay(spring.target, spring.lerp, spring.vel, spring.sc || springConstant, spring.wc || wobbleConstant) + end, + + GetValue = function(spring) + return spring.lerp + end + } + + return spring +end + +function mw_math.CreateAngleSpring(springConstant, wobbleConstant) + local spring = { + target = Angle(), + lerp = Angle(), + vel = Angle(), + sc = springConstant, + wc = wobbleConstant, + + SetTarget = function(spring, target) + spring.target = target + end, + + Decay = function(spring, springConstant, wobbleConstant) + mw_math.AngleDecay(spring.target, spring.lerp, spring.vel, spring.sc || springConstant, spring.wc || wobbleConstant) + end, + + GetValue = function(spring) + return spring.lerp + end + } + + return spring +end + +function mw_math.DecaySprings(...) + --[[for _, s in pairs({...}) do + s:Decay() + end]] + local args = {...} + for s = 1, #args do + args[s]:Decay() + end +end + +local realFrameTime = RealFrameTime +local gcVec = Vector() +local gcVecForce = Vector() +function mw_math.VectorDecay(target, lerp, vel, springConstant, wobbleConstant) + gcVec.x = (target.x - lerp.x) * springConstant + gcVec.y = (target.y - lerp.y) * springConstant + gcVec.z = (target.z - lerp.z) * springConstant + + local sq = SquareRoot(springConstant) + + gcVecForce.x = (-vel.x * wobbleConstant) * sq + gcVecForce.y = (-vel.y * wobbleConstant) * sq + gcVecForce.z = (-vel.z * wobbleConstant) * sq + + gcVec.x = gcVec.x + gcVecForce.x + gcVec.y = gcVec.y + gcVecForce.y + gcVec.z = gcVec.z + gcVecForce.z + + local rft = realFrameTime() + VectorAddAndMul(vel, gcVec, rft) + VectorAddAndMul(lerp, vel, rft) +end + +local gcAng = Angle() +local gcAngForce = Angle() +function mw_math.AngleDecay(target, lerp, vel, springConstant, wobbleConstant) + gcAng.p = (target.p - lerp.p) * springConstant + gcAng.y = (target.y - lerp.y) * springConstant + gcAng.r = (target.r - lerp.r) * springConstant + + local sq = SquareRoot(springConstant) + + gcAngForce.p = (-vel.p * wobbleConstant) * sq + gcAngForce.y = (-vel.y * wobbleConstant) * sq + gcAngForce.r = (-vel.r * wobbleConstant) * sq + + gcAng.p = gcAng.p + gcAngForce.p + gcAng.y = gcAng.y + gcAngForce.y + gcAng.r = gcAng.r + gcAngForce.r + + local rft = realFrameTime() + AngleAddAndMul(vel, gcAng, rft) + AngleAddAndMul(lerp, vel, rft) +end + +function mw_math.NumberDecay(target, lerp, vel, springConstant, wobbleConstant) + local currentToTarget = (target - lerp) * springConstant + local dampingForce = (-vel * wobbleConstant) * SquareRoot(springConstant) + + currentToTarget = currentToTarget + dampingForce + + local rft = realFrameTime() + vel = vel + (currentToTarget * rft) + lerp = lerp + (vel * rft) + + return lerp, vel +end + +--bool to number +local boolToNumber = {[false] = 0, [true] = 1} +function mw_math.btn(bool) + return boolToNumber[bool] +end + +local direction = {[false] = -1, [true] = 1} +local minmax = {[false] = math.max, [true] = math.min} +function mw_math.Approach(current, target, rate) + local what = current < target + rate = rate * direction[what] + return minmax[what](current + rate, -target, target) +end + +local angleDifference = math.AngleDifference +function mw_math.ApproachAngle(current, target, rate) + local diff = angleDifference(target, current) + return mw_math.Approach(current, current + diff, rate) +end \ No newline at end of file diff --git a/lua/includes/modules/mw_utils.lua b/lua/includes/modules/mw_utils.lua new file mode 100644 index 0000000..6a43cb4 --- /dev/null +++ b/lua/includes/modules/mw_utils.lua @@ -0,0 +1,392 @@ +AddCSLuaFile() +module("mw_utils", package.seeall) + +local cachedBones = {} + +function mw_utils.LookupBoneCached(ent, boneName) + local model = ent:GetModel() + + if (model == nil) then + return nil + end + + cachedBones[model] = cachedBones[model] || {} + cachedBones[model][boneName] = cachedBones[model][boneName] || ent:LookupBone(boneName) + + return cachedBones[model][boneName] +end + +local cachedAttachments = {} + +function mw_utils.LookupAttachmentCached(ent, attName) + local model = ent:GetModel() + + if (model == nil) then + return nil + end + + cachedAttachments[model] = cachedAttachments[model] || {} + cachedAttachments[model][attName] = cachedAttachments[model][attName] || ent:LookupAttachment(attName) + + return cachedAttachments[model][attName] > 0 && cachedAttachments[model][attName] || nil +end + +local function recmatch(table1, table2) + for k, v in pairs(table2) do + if (table1[k] == nil) then + return false + end + + if (istable(v)) then + if (!recmatch(table1[k], v)) then + return false + end + else + if (v != table1[k]) then + return false + end + end + end + for k, v in pairs(table1) do + if (table2[k] == nil) then + return false + end + + if (istable(v)) then + if (!recmatch(table2[k], v)) then + return false + end + else + if (v != table2[k]) then + return false + end + end + end + + return true +end +function mw_utils.CheckMatchingTables(table1, table2) + return recmatch(table1, table2) +end + +function mw_utils.CheckMatchingBones(model1, model2) + for b = 0, model1:GetBoneCount(), 1 do + if (mw_utils.LookupBoneCached(model2, model1:GetBoneName(b))) != nil then + return true + end + end + + return false +end + +function mw_utils.IsAttachmentBasedOn(current, base) + while current != nil do + if (current == base) then + return true + end + + if (MW_ATTS[current] == nil) then + return false + end + + current = MW_ATTS[current].Base + end + + return false +end + +local function requireAttachment(ent, attName) + ent.m_AttachmentRequests = ent.m_AttachmentRequests || {} + ent.m_AttachmentDeliveries = ent.m_AttachmentDeliveries || {} + + local attId = mw_utils.LookupAttachmentCached(ent, attName) + + if (ent.m_AttachmentRequests[attId] == nil) then + ent.m_AttachmentRequests[attId] = Matrix() + + timer.Simple(0, function() + if (!IsValid(ent)) then + return + end + + local attData = ent:GetAttachment(attId) + + local computeMatrix = Matrix() + computeMatrix:SetTranslation(attData.Pos) + computeMatrix:SetAngles(attData.Ang) + + local worldMatrix = ent:GetBoneMatrix(0) + + computeMatrix = worldMatrix:GetInverse() * computeMatrix + ent.m_AttachmentRequests[attId] = computeMatrix + end) + + ent.m_AttachmentDeliveries[attId] = {Pos = Vector(), Ang = Angle()} + end + + if (!ent.m_bFastAttachment) then + if (ent.OnBuildFastAttachments == nil) then + ent.OnBuildFastAttachments = function() end --to avoid if + end + + ent:AddCallback("BuildBonePositions", function(ent, numbones) + local matrix = ent:GetBoneMatrix(0) + + if (matrix == nil) then + return + end + + for attId, localMat in pairs(ent.m_AttachmentRequests) do + local newMatrix = matrix * localMat + + ent.m_AttachmentDeliveries[attId].Pos = newMatrix:GetTranslation() + ent.m_AttachmentDeliveries[attId].Ang = newMatrix:GetAngles() + ent:OnBuildFastAttachments() + end + end) + + ent.m_bFastAttachment = true + end +end + +--this is only really good for static props +--it calculates local offset from root bone, so if the attachment isn't parented to that (or not static), it won't return +--good values +function mw_utils.GetFastAttachment(ent, attName) + requireAttachment(ent, attName) + return ent.m_AttachmentDeliveries[mw_utils.LookupAttachmentCached(ent, attName)] +end + +local function isInjectorLoadingConversions(inj) + if (!istable(inj.Attachment)) then + if (MW_ATTS[inj.Attachment] != nil) then + return mw_utils.IsAttachmentBasedOn(inj.Attachment, "att_conversion") + end + else + for i, injatt in pairs(inj.Attachment) do + if (MW_ATTS[injatt] != nil) then + if (mw_utils.IsAttachmentBasedOn(injatt, "att_conversion")) then + return true + end + end + end + end + + return false +end + +function mw_utils.LoadInjectors(swep) + if (swep.Customization == nil) then + mw_utils.ErrorPrint("LoadInjectors: Customization is nil! Are you loading before it?") + return + end + + local swepClass = string.GetFileFromFilename(swep.Folder) + + for className, inj in SortedPairs(MW_ATT_INJECTORS) do + if (inj.SWEPs != nil && table.HasValue(inj.SWEPs, swepClass)) then + local slot = isInjectorLoadingConversions(inj) && SLOT_CONVERSIONS || math.max(inj.Slot, SLOT_CONVERSIONS + 1) + swep.Customization[slot] = swep.Customization[slot] || {} + + if (!istable(inj.Attachment)) then + if (MW_ATTS[inj.Attachment] != nil && !table.HasValue(swep.Customization[slot], inj.Attachment)) then + table.insert(swep.Customization[slot], inj.Attachment) + end + else + for i, injatt in pairs(inj.Attachment) do + if (MW_ATTS[injatt] != nil && !table.HasValue(swep.Customization[slot], injatt)) then + table.insert(swep.Customization[slot], injatt) + end + end + end + end + end +end + +--https://gist.github.com/jrus/3197011 +local random = math.random +local function uuid() + local template ='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' + return string.gsub(template, '[xy]', function (c) + local v = (c == 'x') and random(0, 0xf) or random(8, 0xb) + return string.format('%x', v) + end) +end + +function mw_utils.DevPrint(message) + if (GetConVar("developer"):GetInt() > 0 && CLIENT) then + MsgC(Color(120, 220, 100, 255), "MW Base: ", Color(255, 255, 255, 255), message.."\n") + end +end + +function mw_utils.ErrorPrint(message) + if (GetConVar("developer"):GetInt() > 0 && CLIENT) then + MsgC(Color(220, 40, 80, 255), "MW Base ERROR: ", Color(255, 235, 235, 255), message.."\n") + end +end + +function mw_utils.LoadPreset(weapon, preset) + for slot, atts in SortedPairs(weapon.Customization) do + local index = 1 + + for i, att in SortedPairs(atts) do + if (table.HasValue(preset.Attachments, att)) then + index = i + end + end + + if (!weapon:HasAttachment(weapon.Customization[slot][index])) then --just sending what we need + if (CLIENT) then + mw_utils.SendAttachmentToServer(weapon, slot, index) + else + weapon:CreateAttachmentEntity(weapon.Customization[slot][index]) + end + end + end +end + +function mw_utils.ReloadAttachment(attachmentClass) + if (GetConVar("sv_cheats"):GetInt() > 0 && GetConVar("developer"):GetInt() > 0) then + local currentClass = attachmentClass + while (currentClass != nil) do + local folder = MW_ATTS[currentClass].Folder + MW_ATTS[currentClass] = nil + LoadAttachment(folder, currentClass..".lua") --mw_loader + currentClass = MW_ATTS[currentClass].Base + end + + currentClass = attachmentClass + while (currentClass != nil) do + DoAttachmentInheritance(MW_ATTS[currentClass]) --mw_loader + currentClass = MW_ATTS[currentClass].Base + end + end +end + +if (CLIENT) then + --used to reparent ents after a fullupdate + local FullUpdateEntities = {} + + function mw_utils.DealWithFullUpdate(ent) + FullUpdateEntities[ent] = true + end + + hook.Add("PreRender", "mw_utilsFullUpdatePreRender", function() + for ent, _ in pairs(FullUpdateEntities) do + if (!IsValid(ent)) then + FullUpdateEntities[ent] = nil + continue + end + + local fullUpdateParent = ent:GetInternalVariable("m_hNetworkMoveParent") + + if (!IsValid(ent:GetParent()) && IsValid(fullUpdateParent)) then + ent:SetParent(fullUpdateParent) + end + end + end) + + function mw_utils.SendAttachmentToServer(weapon, slot, index) + net.Start("mgbase_customize_att") + net.WriteInt(slot, 32) + net.WriteInt(index, 32) + net.WriteEntity(weapon) + net.SendToServer() + end + + local function saveFavs() + file.CreateDir("mwbase") + file.Write("mwbase/favorites.json", util.TableToJSON(MW_FAVORITES)) + end + + function mw_utils.FavoriteAsset(swepClass, assetClass) + MW_FAVORITES[swepClass] = MW_FAVORITES[swepClass] || {} + + if (!table.HasValue(MW_FAVORITES[swepClass], assetClass)) then + table.insert(MW_FAVORITES[swepClass], assetClass) + saveFavs() + end + end + + function mw_utils.UnfavoriteAsset(swepClass, assetClass) + if (MW_FAVORITES[swepClass] == nil || !table.HasValue(MW_FAVORITES[swepClass], assetClass)) then + return + end + + table.RemoveByValue(MW_FAVORITES[swepClass], assetClass) + + if (#MW_FAVORITES[swepClass] <= 0) then + MW_FAVORITES[swepClass] = nil + end + + saveFavs() + end + + function mw_utils.IsAssetFavorite(swepClass, assetClass) + return MW_FAVORITES[swepClass] != nil && table.HasValue(MW_FAVORITES[swepClass], assetClass) + end + + function mw_utils.GetPresetsForSWEP(swepClass) + local presets = {} + + for _, preset in pairs(MW_PRESETS) do + if (preset.SWEP == swepClass) then + presets[#presets + 1] = table.Copy(preset) + end + end + + return presets + end + + function mw_utils.SavePreset(swepClass, name, attachmentList) + local fileName = uuid() + local preset = { + SWEP = swepClass, + Name = name, + Attachments = attachmentList + } + + file.CreateDir("mwbase/presets") + file.Write("mwbase/presets/" .. fileName .. ".json", util.TableToJSON(preset, true)) + + preset.ClassName = fileName + preset._bUserGenerated = true + + MW_PRESETS[fileName] = table.Copy(preset) + end + + function mw_utils.RemovePreset(className) + local pathAndName = "mwbase/presets/"..className..".json" + + if (file.Exists(pathAndName, "DATA")) then + file.Delete(pathAndName) + MW_PRESETS[className] = nil + end + end +end + +function mw_utils.CompileFile(f) + local content = file.Read(f, "LUA") + + if (content != nil) then + AddCSLuaFile(f) + + if (string.find(content, "AddCSLuaFile")) then + mw_utils.DevPrint("safeInclude: Don't run AddCSLuaFile! This is already done for you ("..f..")") + end + + local incl = CompileString(content, "MWBaseSafeInclude_"..f, false)--RunString(content, "MWBaseSafeInclude", false) + + if (isstring(incl)) then + mw_utils.ErrorPrint("safeInclude: "..f.." errored! Stack trace below") + mw_utils.ErrorPrint("... "..incl) + return false, incl + end + + incl() + return true, "no error" + end + + mw_utils.ErrorPrint("safeInclude: missing file "..f.."!") + return false, "missing file" +end \ No newline at end of file diff --git a/lua/weapons/mg_357/animations.lua b/lua/weapons/mg_357/animations.lua new file mode 100644 index 0000000..8a2548a --- /dev/null +++ b/lua/weapons/mg_357/animations.lua @@ -0,0 +1,227 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30 + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_357.Raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.4, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_357.Drop")) end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_357.Raise_First.Up")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("MW19_357.Raise_First.Open")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("MW19_357.Raise_First.Close")) end}, + {Time = 0.53, Callback = function(self) self:DoSound(Sound("MW19_357.Raise_First.End")) end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 3, + Fps = 30, + MagLength = 2.2, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("MW19_357.Reload_Start")) end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("MW19_357.Open")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("MW19_357.Ejectorrod")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_357.Shelleject")) end}, + {Time = 1.96, Callback = function(self) self:DoSound(Sound("MW19_357.Speedloader")) end}, + {Time = 2.56, Callback = function(self) self:DoSound(Sound("MW19_357.Close")) end}, + {Time = 2.7, Callback = function(self) self:DoSound(Sound("MW19_357.Reload_End")) end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_357.Reload_Start_Fast")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_357.Open_Fast")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("MW19_357.Ejectorrod_Fast")) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_357.Shelleject_Fast")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("MW19_357.Speedloader_Fast")) end}, + {Time = 1.45, Callback = function(self) self:DoSound(Sound("MW19_357.Close_Fast")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("MW19_357.Reload_End_Fast")) end} + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload"}, + Length = 3, + Fps = 30, + MagLength = 2.2, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("MW19_357.Reload_Start")) end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("MW19_357.Open")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("MW19_357.Ejectorrod")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_357.Shelleject")) end}, + {Time = 1.96, Callback = function(self) self:DoSound(Sound("MW19_357.Speedloader")) end}, + {Time = 2.56, Callback = function(self) self:DoSound(Sound("MW19_357.Close")) end}, + {Time = 2.7, Callback = function(self) self:DoSound(Sound("MW19_357.Reload_End")) end} + } + }, + + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_357.Reload_Start_Fast")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_357.Open_Fast")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("MW19_357.Ejectorrod_Fast")) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_357.Shelleject_Fast")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("MW19_357.Speedloader_Fast")) end}, + {Time = 1.45, Callback = function(self) self:DoSound(Sound("MW19_357.Close_Fast")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("MW19_357.Reload_End_Fast")) end} + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + } + } + }, + + ["Charge"] = { + Sequences = {"charge"}, + Fps = 60, + NextSequence = "Idle" + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.ADS_Up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.ADS_Down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 30 + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 26, + NextSequence = "Sprint_Loop" --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_357.Inspect01")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_357.Inspect02")) end}, + {Time = 2, Callback = function(self) self:DoSound(Sound("MW19_357.Inspect03")) end}, + {Time = 3.65, Callback = function(self) self:DoSound(Sound("MW19_357.Inspect04")) end} + } + }, + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle" + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Small")) end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Small")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_357/customization.lua b/lua/weapons/mg_357/customization.lua new file mode 100644 index 0000000..1b43de9 --- /dev/null +++ b/lua/weapons/mg_357/customization.lua @@ -0,0 +1,405 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("MW19_Deagle.Fire_S") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol_Mag_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + + {"att_perk", "att_vm_pi_cpapa_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_fastswap"}, + + {"att_receiver"}, + + {"attachment_vm_pi_cpapa_mag", "attachment_vm_pi_cpapa_loader_snake"}, + + {"att_stock", "att_vm_pi_cpapa_stock01", "att_vm_pi_cpapa_stock02"}, + + {"att_muzzle", "att_vm_flashhider01_pstl", "att_vm_compensator01_pstl", "att_vm_muzzlebrake01_pstl", "att_vm_oil_filter_suppressor"}, + + {"att_sight", "attachment_vm_pi_cpapa_scope", "att_vm_minireddot01", "att_vm_minireddot02", "att_vm_minireddot03"}, + + {"att_vm_pi_cpapa_barrel01", "att_vm_pi_cpapa_barrel_long", "att_vm_pi_cpapa_barrel_short", "att_vm_pi_cpapa_barrel02"}, + + {"att_laser", "att_vm_pi_cpapa_laser01", "att_vm_pi_cpapa_laser02", "att_vm_pi_cpapa_laser03"} +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +--[[SWEP.Customization = { + ["Barrel"] = { + Slot = 4, + { + Key = "attachment_vm_pi_cpapa_barrel" + }, + { + Key = "attachment_vm_pi_cpapa_barrel_long", + Stats = function(self) + self.Customization.Laser[2].Bodygroups.laser_rail = 1 + self.Customization.Laser[3].Bodygroups.laser_rail = 1 + self.Customization.Laser[4].Bodygroups.laser_rail = 1 + end + }, + { + Key = "attachment_vm_pi_cpapa_shortbarrel", + Stats = function(self) + self.Customization.Laser[2].Bodygroups.laser_rail = 2 + self.Customization.Laser[3].Bodygroups.laser_rail = 2 + self.Customization.Laser[4].Bodygroups.laser_rail = 2 + end + }, + { + Key = "attachment_vm_pi_cpapa_barrel_v2", + Stats = function(self) + self.Customization.Laser[2].Bodygroups.laser_rail = 0 + self.Customization.Laser[3].Bodygroups.laser_rail = 0 + self.Customization.Laser[4].Bodygroups.laser_rail = 0 + end + } + }, + ["Optic"] = { + Slot = 5, + { + Key = "no_optic", + }, + { + Key = "attachment_vm_minireddot01", + Bodygroups = { + ["rail"] = 1 + }, + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.8) + end + }, + { + Key = "attachment_vm_minireddot02", + Bodygroups = { + ["rail"] = 1 + }, + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.75) + end + }, + { + Key = "attachment_vm_minireddot03", + Bodygroups = { + ["rail"] = 1 + }, + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.75) + end + }, + { + Key = "attachment_vm_reflex_west02_lod0", + Bodygroups = { + ["rail"] = 1 + }, + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) + end + }, + { + Key = "attachment_vm_holo_west_lod0", + Bodygroups = { + ["rail"] = 1 + }, + VElement = { + Bone = "tag_reflex", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Barrel"] = { + } + } + }, + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.45) + end + }, + { + Key = "attachment_vm_reflex_east02_lod0", + Bodygroups = { + ["rail"] = 1 + }, + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.05) + end + }, + { + Key = "attachment_vm_reflex_east", + Bodygroups = { + ["rail"] = 1 + }, + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.3) + end + }, + { + Key = "attachment_vm_4x_east", + Bodygroups = { + ["rail"] = 1 + }, + VElement = { + Bone = "tag_reflex", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Barrel"] = { + } + } + }, + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.13, 0, -1.13) + end + }, + { + Key = "attachment_vm_4x_west", + Bodygroups = { + ["rail"] = 1 + }, + VElement = { + Bone = "tag_reflex", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Barrel"] = { + } + } + }, + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.015, 0, -1.22) + end + }, + { + Key = "attachment_vm_4x_west02", + Bodygroups = { + ["rail"] = 1 + }, + VElement = { + Bone = "tag_reflex", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Barrel"] = { + } + } + }, + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.11) + end + } + }, + + ["Laser"] = { + Slot = 6, + { + Key = "no_laser", + }, + { + Key = "attachment_vm_laser_pstl", + VElement = { + Bone = "tag_laser_attach", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Barrel"] = { + [2] = {Vector(0, 0, 0), Angle()}, + [3] = {Vector(0, 0, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Bodygroups = { + ["laser_rail"] = 1 + }, + Stats = function(self) + end + }, + { + Key = "attachment_vm_laser_pstl03", + VElement = { + Bone = "tag_laser_attach", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Barrel"] = { + [2] = {Vector(0, 0, 0), Angle()}, + [3] = {Vector(0, 0, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Bodygroups = { + ["laser_rail"] = 1 + }, + Stats = function(self) + end + }, + { + Key = "attachment_vm_laser_pstl04", + VElement = { + Bone = "tag_laser_attach", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Barrel"] = { + [2] = {Vector(0, 0, 0), Angle()}, + [3] = {Vector(0, 0, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Bodygroups = { + ["laser_rail"] = 1 + }, + Stats = function(self) + end + } + }, + + ["Muzzle"] = { + Slot = 3, + { + Key = "no_muzzle", + }, + { + Key = "attachment_vm_flashhider_psl01", + VElement = { + Bone = "tag_silencer", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Barrel"] = { + [2] = {Vector(0, 1.85, 0), Angle()}, + [3] = {Vector(0, -1, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Stats = function(self) + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" + end + }, + { + Key = "attachment_vm_muzzlebrake_pstl01", + VElement = { + Bone = "tag_silencer", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Barrel"] = { + [2] = {Vector(0, 1.85, 0), Angle()}, + [3] = {Vector(0, -1, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Stats = function(self) + end + }, + { + Key = "attachment_vm_compensator_pstl01", + VElement = { + Bone = "tag_silencer", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Barrel"] = { + [2] = {Vector(0, 1.85, 0), Angle()}, + [3] = {Vector(0, -1, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Stats = function(self) + end + }, + }, + + ["Perk"] = { + Slot = 1, + { + Key = "no_perk", + }, + { + Key = "perk_soh", + Stats = function(self) + self.Animations.Reload = self.Animations.Reload_Fast + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast + self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast + end + }, + { + Key = "perk_fastmelee", + Stats = function(self) + end + }, + { + Key = "perk_heavymelee", + Stats = function(self) + end + }, + { + Key = "perk_fmj", + Stats = function(self) + end + } +}, + + ["Grip"] = { + Slot = 2, + { + Key = "attachment_vm_pi_cpapa_grip", + Stats = function(self) + end + }, + { + Key = "attachment_vm_pi_cpapa_grip_stock", + Stats = function(self) + end + }, + { + Key = "attachment_vm_pi_cpapa_stockl", + Stats = function(self) + end + }, + }, + + -- ["Camo"] = { + -- Slot = 8, + -- { + -- Key = "no_camo", + -- }, + -- { + -- Key = "camo_jermasus", + -- Stats = function(self) + -- end + -- }, + -- { + -- Key = "camo_digital", + -- Stats = function(self) + -- end + -- } + -- }, +} + +]] \ No newline at end of file diff --git a/lua/weapons/mg_357/shared.lua b/lua/weapons/mg_357/shared.lua new file mode 100644 index 0000000..22a6e2f --- /dev/null +++ b/lua/weapons/mg_357/shared.lua @@ -0,0 +1,157 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_pistol") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +if CLIENT then + killicon.Add( "mg_357", "VGUI/entities/mg_357", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_pi_cpapa") +end + +SWEP.Base = "mg_base" + +SWEP.PrintName = ".357" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Pistols" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_357.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_357.mdl") + + +SWEP.Slot = 1 +SWEP.HoldType = "Revolver" + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", +} + +SWEP.Trigger = { + PressedSound = Sound("wfoly_plr_pi_cpapa_charge_in_01"), + PressedAnimation = "Charge", + Time = 0.075 +} + +SWEP.Primary.Sound = Sound("weap_cpapa_fire_plr") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 6 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 150 +SWEP.CanChamberRound = false +SWEP.CanDisableAimReload = true + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol_Mag.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} +SWEP.Firemodes = { + [1] = { + Name = "Semi Auto", + OnSet = function() + return nil + end + }, +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 100, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.3, --accuracy while hip + Ads = 0.085, --accuracy while aiming + Increase = 0.08, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.25, --multiply the increase value by this amount while aiming + Max = 2, --the cone size will not go beyond this size + Decrease = 2, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 61543 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.2, 0.4}, --random value between the 2 + Horizontal = {-0.4, 0.4}, --random value between the 2 + Shake = 2.4, --camera shake + AdsMultiplier = 4, --multiply the values by this amount while aiming + Seed = 610312 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {100, 28}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 35, --in meters, damage scales within this distance + DropOffStartRange = 12, --in meters, damage scales within this distance + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 0.5, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.95, --how much damaged is multipled by when leaving a surface. + MaxCount = 6, --how many times the bullet can penetrate. + Thickness = 14, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 15 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_pistol_offset", + Angles = Angle(0, 90, -90), + Pos = Vector(4.5, -3, -2.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, -4, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_pistol_offset", + X = { + [0] = {Pos = Vector(0, 2, -2), Angles = Angle(30, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(0, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(2, 0, 0), Angles = Angle(-30, -30, 0)}, + [1] = {Pos = Vector(-4, 0, 0), Angles = Angle(0, 30, 0)} + } + }, + + RecoilMultiplier = 1, + KickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_50bmg" \ No newline at end of file diff --git a/lua/weapons/mg_aalpha12/animations.lua b/lua/weapons/mg_aalpha12/animations.lua new file mode 100644 index 0000000..e18ad9a --- /dev/null +++ b/lua/weapons/mg_aalpha12/animations.lua @@ -0,0 +1,382 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.oscar12.raise")) end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.9, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.oscar12.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_raise_first_01")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_raise_first_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_raise_first_02")) end}, + {Time = 1.0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.5, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_04")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_05")) end}, + {Time = 1.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_01")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_02")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.3, Callback = function(self) self:EnableGrip() end}, + -- {Time = 1, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_fast_04")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_fast_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.567, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_fast_01")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_fast_02")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_drum"] = { + Sequences = {"reload_drum"}, + Length = 2.5, + Fps = 30, + MagLength = 1.8, + NextSequence = "Idle", + Events = { + {Time = 2.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_drum_06")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.367, Callback = function(self) self:EnableGrip() end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_drum_04")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_drum_05")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_drum_02")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_drum_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_drum_01")) end}, + -- {Time = 1, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_drum_fast"] = { + Sequences = {"reload_drum_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_fast_drum_05")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_fast_drum_02")) end}, + {Time = 1.733, Callback = function(self) self:EnableGrip() end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_fast_drum_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_fast_drum_01")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_fast_drum_04")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.1, + Fps = 30, + MagLength = 1.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.9, Callback = function(self) self:EnableGrip() end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_02")) end}, + {Time = 2.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_04")) end}, + {Time = 2.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_05")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_01")) end}, + -- {Time = 1.4, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.4, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_01")) end}, + {Time = 2.233, Callback = function(self) self:EnableGrip() end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_05")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_03")) end}, + -- {Time = 0.6, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_empty_drum"] = { + Sequences = {"reload_empty_drum"}, + Length = 3.3, + Fps = 30, + MagLength = 2.15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_drum_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 3.067, Callback = function(self) self:EnableGrip() end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_drum_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_drum_01")) end}, + {Time = 2.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_drum_05")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_drum_03")) end}, + {Time = 3.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_drum_06")) end}, + -- {Time = 1.4, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_drum_empty_fast"] = { + Sequences = {"reload_empty_drum_fast"}, + Length = 2.7, + Fps = 30, + MagLength = 1.35, + NextSequence = "Idle", + Events = { + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_drum_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.433, Callback = function(self) self:EnableGrip() end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_drum_06")) end}, + {Time = 2.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_drum_07")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_drum_04")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_drum_05")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_drum_01")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_reload_empty_fast_drum_03")) end}, + -- {Time = 0.6, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.aalpha12.ads.up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.aalpha12.ads.down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.667, Callback = function(self) self:EnableGrip() end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_04")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_05")) end}, + {Time = 3.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_01")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_02")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_03")) end}, + } + }, + + ["inspect_drum"] = { + Sequences = {"inspect_drum"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_drum_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_drum_01")) end}, + {Time = 3.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_drum_06")) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_drum_04")) end}, + {Time = 2.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_drum_05")) end}, + {Time = 2.767, Callback = function(self) self:EnableGrip() end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_aalpha12_inspect_drum_03")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_aalpha12/customization.lua b/lua/weapons/mg_aalpha12/customization.lua new file mode 100644 index 0000000..cb735bc --- /dev/null +++ b/lua/weapons/mg_aalpha12/customization.lua @@ -0,0 +1,898 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.aalpha12.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Shotgun2.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Reflection_ARSUP.Inside"), + Reflection = Sound("Reflection_ShotgunSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doDBStats() + self.Primary.TrailingSound = Sound("wpn_shotgun_fire_lyr") + self.ParticleEffects.MuzzleFlash = "AC_muzzle_shotgun_db" +end + +-- local function doCalConversionStats(self) +-- local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") +-- local bSup2 = self:HasAttachment("attachment_vm_silencer02") +-- local bSup3 = self:HasAttachment("attachment_vm_silencer03") +-- local bSup4 = self:HasAttachment("attachment_vm_silencer04") +-- local bSup5 = self:HasAttachment("attachment_vm_ar_mike4_barsil") +-- local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_mag_v5") + +-- if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then +-- self.Primary.Sound = Sound("mw19_mcharlie.fire.cal") +-- self.Reverb = { +-- RoomScale = 50000, +-- Sounds = { +-- Outside = { +-- Layer = Sound("Atmo_SMG.Outside"), +-- Reflection = Sound("Reflection_AR.Outside") +-- }, + +-- Inside = { +-- Layer = Sound("Atmo_SMG.Inside"), +-- Reflection = Sound("Reflection_AR.Inside") +-- } +-- } +-- } +-- end + +-- self.Primary.Ammo = "SMG1" +-- self.Shell.Model = Model("models/viper/mw/shells/fx_pistol_shell_lod0.mdl") +-- self.Shell.Scale = 0.5 +-- self.Shell.Sound = Sound("MW_Casings.9mm") +-- end + + +-- local function doSocomConversionStats(self) +-- local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") +-- local bSup2 = self:HasAttachment("attachment_vm_silencer02") +-- local bSup3 = self:HasAttachment("attachment_vm_silencer03") +-- local bSup4 = self:HasAttachment("attachment_vm_silencer04") +-- local bSup5 = self:HasAttachment("attachment_vm_ar_mike4_barsil") +-- local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_mag_v5") + +-- if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then +-- self.Reverb = { +-- RoomScale = 50000, +-- Sounds = { +-- Outside = { +-- Layer = Sound("Atmo_LMG.Outside"), +-- Reflection = Sound("Reflection_AR.Outside") +-- }, + +-- Inside = { +-- Layer = Sound("Atmo_LMG.Inside"), +-- Reflection = Sound("Reflection_AR.Inside") +-- } +-- } +-- } +-- end + +-- self.Shell.Model = Model("models/viper/mw/shells/vfx_9x39_shell.mdl") +-- self.Shell.Scale = 0.35 +-- end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sh_aalpha12_perk_soh", "att_perk_hip"}, + + {"attachment_vm_sh_aalpha12_barrel", "attachment_vm_sh_aalpha12_barhvy", "attachment_vm_sh_aalpha12_barlong", "attachment_vm_sh_aalpha12_barshort"}, + + {"attachment_vm_sh_aalpha12_mag", "attachment_vm_sh_aalpha12_slugmag", "attachment_vm_sh_aalpha12_xmags", "attachment_vm_sh_aalpha12_drummag"}, + + {"att_ammo_default", "att_ammo_db", "att_ammo_flechette", + "att_ammo_he", "att_ammo_slugs"}, + + {"att_stock", "attachment_vm_sh_aalpha12_stockl", + "attachment_vm_sh_aalpha12_stockh", "attachment_vm_sh_aalpha12_stocks"}, + + {"att_muzzle", "att_vm_compensator_shgn01", "att_vm_compensator_shgn02", "att_vm_flashhider01_shgn", "att_vm_muzzlebrake_shgn01", + "att_vm_breacher02_shgn", "attachment_vm_sh_oscar12_suppressor", "attachment_vm_sh_oscar12_silencer02", + "attachment_vm_sh_oscar12_silencer03"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_4x_east01_tall", "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_sh_aalpha12_laser01", "attachment_vm_sh_aalpha12_laser02", "attachment_vm_sh_aalpha12_laser03"}, + + {"att_grip", "attachment_vm_sh_aalpha12_angledgrip01", "attachment_vm_sh_aalpha12_angledgrip02", "attachment_vm_sh_aalpha12_stubbygrip01", + "attachment_vm_sh_aalpha12_stubbygrip02", "attachment_vm_sh_aalpha12_vertgrip01", "attachment_vm_sh_aalpha12_vertgrip02", + "attachment_vm_sh_aalpha12_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.reload_drum = self.Animations.reload_drum_fast +-- self.Animations.reload_empty_drum = self.Animations.reload_drum_empty_fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- --[[{ +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- }]] +-- }, + +-- ["Ammo"] = { +-- Slot = 2, +-- { +-- Key = "no_attachment", +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- self.Projectile = nil +-- end, +-- }, +-- { +-- Key = "sh_slugs", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- { +-- Key = "sh_db", +-- Stats = function(self) +-- doDBStats(self) +-- end +-- }, +-- { +-- Key = "sh_flechette", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- { +-- Key = "sh_he", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- }, + +-- ["Mag"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_sh_aalpha12_mag", +-- }, +-- { +-- Key = "attachment_vm_sh_aalpha12_slugmag", +-- Stats = function(self) +-- self.Shell.Model = "models/viper/mw/shells/vfx_sgcalds_shell.mdl" +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_aalpha12_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_aalpha12_drummag", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Barrel"] = { +-- Slot = 4, +-- { +-- Key = "attachment_vm_sh_aalpha12_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_aalpha12_barlong", +-- Bodygroups = { +-- ["tag_tip"] = 4, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_aalpha12_barhvy", +-- Bodygroups = { +-- ["tag_tip"] = 2, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_aalpha12_barshort", +-- Bodygroups = { +-- ["tag_tip"] = 5, +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Muzzle"] = { +-- Slot = 5, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_sh_aalpha12_choke", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 8, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, -1.2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator_shgn01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 8, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, -1.2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider_shtgn01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 8, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, -1.2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake_shgn01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 8, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, -1.2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee_shgn01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 8, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, -1.2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 8, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, -1.2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 8, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, -1.2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_suppressor", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 8, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, -1.2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 6, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.27) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) --i know you tell me not to fuck with this but the dot being actually centered on the glass demands it xoxo +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.28) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.1, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.167, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 0, -0.045) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.16) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.055) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 0, 0.01) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 0, 0.435) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.77, 0, 0.9) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 0, 0.455) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 0, 0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-0.9) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, 0.38) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, -0.012, 0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.6, 0, 1.15) +-- end +-- }, +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "no_attachment", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_aalpha12_stockh", +-- Bodygroups = { +-- ["tag_stock_hide"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_aalpha12_stockl", +-- Bodygroups = { +-- ["tag_stock_hide"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_aalpha12_stocks", +-- Bodygroups = { +-- ["tag_stock_hide"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 8, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 9, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_aalpha12/shared.lua b/lua/weapons/mg_aalpha12/shared.lua new file mode 100644 index 0000000..1f255a1 --- /dev/null +++ b/lua/weapons/mg_aalpha12/shared.lua @@ -0,0 +1,179 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") + +SWEP.BulletList = {[0] = "j_ammoshell1", [1] = "j_ammoshell2"} + +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_aalpha12", "VGUI/entities/mg_aalpha12", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sh_aalpha12") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "Jak-12" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Shotguns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_aalpha12.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_aalpha12.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.aalpha12.fire.first"), + ReleasedSound = Sound("mw19.aalpha12.disconnector"), + Time = 0.15 +} + +SWEP.Slot = 3 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("mw19.aalpha12.fire") +SWEP.Primary.Ammo = "Buckshot" +SWEP.Primary.ClipSize = 8 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 300 +SWEP.CanChamberRound = false +SWEP.CanDisableAimReload = false + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_shotgun", + ["MuzzleFlash_DB"] = "mw_fas2_muzzleflash_slug", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", + ["Overheating"] = "AC_muzzle_pistol_smoke_barrel", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper.Outside"), + Reflection = Sound("Reflection_Shotgun.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Automatic", + OnSet = function(self) + self.Primary.Automatic = true + return "Firemode_Auto" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 250, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.75, --accuracy while hip + Ads = 0.75, --accuracy while aiming + Increase = 0.085, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 2.5, --the cone size will not go beyond this size + Decrease = 0.24, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6974 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 2}, --random value between the 2 + Horizontal = {-1, 1}, --random value between the 2 + Shake = 3, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 1158, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 0.56 +} + +SWEP.Bullet = { + Damage = {60, 35}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 10, --in meters, damage scales within this distance + DropOffStartRange = 10, + Range = 40, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 4, --the amount of bullets to fire + PhysicsMultiplier = 1.7, --damage is multiplied by this amount when pushing objects + Penetration = { + DamageMultiplier = 0.94, --how much damaged is multipled by when leaving a surface. + MaxCount = 10, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 15 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(-3,90,-90), + Pos = Vector(3.5,-6,-4) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1.75, + KickMultiplier = 1.3, + AimKickMultiplier = 0.45 +} + +SWEP.Shell = "mwb_shelleject_12g_black" + +DEFINE_BASECLASS("mg_base") + +-- local emptyPos = Vector(3.6, 0, 0) +-- local fullPos = Vector(0, 0, 0) + +-- function SWEP:PostDrawViewModel(vm, weapon, ply) +-- BaseClass.PostDrawViewModel(self, vm, weapon, ply) +-- self:RemoveBulletsBasedOnClip(self:GetAttachmentModels("Mag"), self.BulletList) + +-- self:GetViewModel():ManipulateBonePosition(self:LookupBoneCached(self:GetViewModel(), "j_bolt"), (self:Clip1() <= 0 && !self:HasFlag("Reloading")) && emptyPos || fullPos) +-- end \ No newline at end of file diff --git a/lua/weapons/mg_akilo47/animations.lua b/lua/weapons/mg_akilo47/animations.lua new file mode 100644 index 0000000..6151bf9 --- /dev/null +++ b/lua/weapons/mg_akilo47/animations.lua @@ -0,0 +1,419 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.4, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.75, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.4, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.35, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise.first")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.45, + Fps = 35, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_01")) end}, + {Time = 0.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_02")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_03")) end}, + {Time = 1.53, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_035")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_04")) end}, + {Time = 1.83, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_05")) end}, + {Time = 2.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_06")) end}, + {Time = 2.13, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 2.33, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1.13, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_fast_02")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_fast_03")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_fast_035")) end}, + {Time = 1.06, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_fast_04")) end}, + {Time = 1.06,Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 1.06,Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 1.46, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_drum"}, + Length = 2.5, + Fps = 30, + MagLength = 1.75, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_02")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_03")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_035")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_04")) end}, + {Time = 1.96, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_05")) end}, + {Time = 2.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_drum_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_fast_02")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(0, 0, 40)) end}, + {Time = 0.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_fast_03")) end}, + {Time = 1.06, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_fast_035")) end}, + {Time = 1.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_fast_04")) end}, + {Time = 1.36, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.75, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_01")) end}, + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_02")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_03")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_04")) end}, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-15, 10, 40)) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_045")) end}, + {Time = 1.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_05")) end}, + {Time = 2.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_06")) end}, + {Time = 2.55, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.85, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_fast_02")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_fast_03")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_fast_035")) end}, + {Time = 1.23, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-15, 10, 40)) end}, + {Time = 1.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_fast_04")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_reload_empty_fast_05")) end}, + {Time = 1.7,Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 1.7, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_drum"}, + Length = 3.7, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_02")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_03")) end}, + {Time = 1.25, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(0, 0, 40)) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_035")) end}, + {Time = 2.06, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_04")) end}, + {Time = 2.16, Callback = function(self) self:EnableGrip() end}, + {Time = 2.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_05")) end}, + {Time = 3.16, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_06")) end}, + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_drum_fast"}, + Length = 2.45, + Fps = 30, + MagLength = 1.25, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_fast_02")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_fast_03")) end}, + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(0, 0, 40)) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_fast_04")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_fast_05")) end}, + {Time = 1.53, Callback = function(self) self:EnableGrip() end}, + {Time = 1.93, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_fast_06")) end}, + {Time = 2.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_akilo47_drum_reload_empty_fast_07")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Bayonet"] = { + Sequences = {"melee_miss_01_bayonet", "melee_miss_02_bayonet", "melee_miss_03_bayonet"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Knife")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit_Bayonet"] = { + Sequences = {"melee_hit_01_bayonet", "melee_hit_02_bayonet", "melee_hit_03_bayonet"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.World_Knife")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_akilo47/customization.lua b/lua/weapons/mg_akilo47/customization.lua new file mode 100644 index 0000000..c03647d --- /dev/null +++ b/lua/weapons/mg_akilo47/customization.lua @@ -0,0 +1,1168 @@ +AddCSLuaFile() +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.akilo47.fire.suppressed") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doSmgStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4) then + self.Primary.Sound = Sound("mw19.akilo47.smgcal.fire") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Shell = "mwb_shelleject_545" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_akilo47_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_ar_akilo47_stock", "attachment_vm_ar_akilo47_smgstock_unfolded", + "attachment_vm_ar_akilo47_smgstock", "att_vm_stock_heavy01", + "att_vm_stock_heavy02", "att_vm_stock_light01", "att_vm_stock_medium01", "att_vm_stock_no"}, + + {"attachment_vm_ar_akilo47_mag", "att_vm_45rnd_mag_eastern", + "attachment_vm_ar_akilo47_smgmag", + "attachment_vm_ar_akilo47_xmags", "attachment_vm_ar_akilo47_drum_mag"}, + + {"attachment_vm_ar_akilo47_barrel", + "attachment_vm_ar_akilo47_custombarrel", "attachment_vm_ar_akilo47_lmgbarrel_grip", + "attachment_vm_ar_akilo47_lmgbarrel", "attachment_vm_ar_akilo47_smgbarcust", "attachment_vm_ar_akilo47_smgbarrel"}, + + {"att_receiver"}, + + {"att_muzzle", "attachment_vm_bayonet_akilo47", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", 'att_vm_silencer06'}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "attachment_vm_ar_akilo47_rail", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_ar_akilo47_laser01_cylinder", "attachment_vm_ar_akilo47_laser02_cylinder", + "attachment_vm_ar_akilo47_laser03_cylinder"}, + + {"att_grip", "attachment_vm_ar_akilo47_angledgrip01", "attachment_vm_ar_akilo47_angledgrip02", "attachment_vm_ar_akilo47_stubbygrip01", + "attachment_vm_ar_akilo47_stubbygrip02", "attachment_vm_ar_akilo47_vertgrip01", "attachment_vm_ar_akilo47_vertgrip02", + "attachment_vm_ar_akilo47_vertgrip03", "attachment_vm_ar_akilo47_bipodgrip"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_akilo47_barrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- }, +-- { +-- Key = "attachment_vm_ar_akilo47_custombarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_akilo47_lmgbarrel_grip", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_akilo47_lmgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_akilo47_smgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 2, +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_smg_pose_offset") +-- end, +-- UsingSmgBarrel = true +-- }, +-- { +-- Key = "attachment_vm_ar_akilo47_smgbarcust", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.2, 0.07, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.03, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.08) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.3) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.22) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.29) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.082) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 3, -1.23) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.126, 2, -1.411) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -1.514) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0084, 2, -1.407) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0155, 2, -1.345) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.016, 2, -0.917) + -- self.HybridAimAngles = Angle(-0.05, 0, -45) + -- self.HybridAimPos = Vector(-1.8, 2, -0.45) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 2, -0.902) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 4, -1.287) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 4, -1.222) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 3, -1.055) + -- self.HybridAimAngles = Angle(0, 0.03, 0) + -- self.HybridAimPos = Vector(0,0,-2.25) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -0.985) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2, -0.15) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_ar_akilo47_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_akilo47_lmgstock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_akilo47_smgstock_unfolded", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_akilo47_smgstock", +-- ExcludedAttachments = { +-- ["Magazine"] = {4} +-- }, +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- VElement = { +-- Bone = "tag_stock_attach", +-- Position = Vector(2.5, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- --self:RemoveValue("LaserAimAngles") +-- --self:RemoveValue("LaserAimPos") +-- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 +-- end +-- }, + -- { + -- Key = "attachment_vm_ar_akilo47_stockno", + -- Bodygroups = { + -- ["stock_adapter"] = 1 + -- }, + -- Stats = function(self) + -- --self:RemoveValue("LaserAimAngles") + -- --self:RemoveValue("LaserAimPos") + -- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 + -- end + -- } + -- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_akilo47_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_akilo47_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_akilo47_smgmag", +-- Stats = function(self) +-- doSmgStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_akilo47_drum_mag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_akilo47/shared.lua b/lua/weapons/mg_akilo47/shared.lua new file mode 100644 index 0000000..d45860d --- /dev/null +++ b/lua/weapons/mg_akilo47/shared.lua @@ -0,0 +1,167 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("mw_fas2_muzzleflash_suppressed") +PrecacheParticleSystem("mw_ins2_shell_eject") +PrecacheParticleSystem("mw_fas2_muzzleflash_ar_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_akilo47", "VGUI/entities/mg_akilo47", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_akilo47") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_smg_pose_offset", "grip_vert_offset", "grip_vert_smg_offset", +"grip_vert_pro_offset", "grip_vert_pro_smg_offset", "grip_smg_anggrip_offset"} + +SWEP.PrintName = "AK-47" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_akilo47.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_akilo47.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("mw19.akilo47.fire.first"), + ReleasedSound = Sound("mw19.akilo47.fire.disconnector"), + Time = 0.025 +} + +SWEP.Primary.Sound = Sound("mw19.akilo47.fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 561 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Automatic", + OnSet = function(self) + self.Primary.Automatic = false + self.Primary.RPM = 500 + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "mw_fas2_muzzleflash_ar_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.45, --accuracy while hip + Ads = 0.13, --accuracy while aiming + Increase = 0.093, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.24, --multiply the increase value by this amount while aiming + Max = 1.75, --the cone size will not go beyond this size + Decrease = 0.6, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 76676 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {2, 2.5}, --random value between the 2 + Horizontal = {-1.75, 1.75}, --random value between the 2 + Shake = 1.5, --camera shake + AdsMultiplier = 0.2, --multiply the values by this amount while aiming + Seed = 24366 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {33, 15}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 20, --in meters, damage will start dropping off after this range + EffectiveRange = 45, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.8, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 8 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 90, -90), + Pos = Vector(-5,0,9) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -4, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(3, 0, -2), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.45, + KickMultiplier = 2, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_762" \ No newline at end of file diff --git a/lua/weapons/mg_alpha50/animations.lua b/lua/weapons/mg_alpha50/animations.lua new file mode 100644 index 0000000..90b84d7 --- /dev/null +++ b/lua/weapons/mg_alpha50/animations.lua @@ -0,0 +1,475 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.7, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_raise_01")) end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 1, + Fps = 30, + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_drop_01")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_raise_first_02")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_raise_first_01")) end}, + } + }, + + ["reload_xmag"] = { + Sequences = {"reload_xmag"}, + Length = 3.03, + MagLength = 2.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_02")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_06")) end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_055")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_04")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_05")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_01")) end}, + + } + }, + + ["reload_xmag_fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 2.06, + MagLength = 1.26, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_035")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_04")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_02")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_03")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_01")) end}, + + } + }, + + ["reload_mmag"] = { + Sequences = {"reload_mmag"}, + Length = 3.03, + MagLength = 2.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_02")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_06")) end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_055")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_04")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_05")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_01")) end}, + + } + }, + + ["reload_mmag_fast"] = { + Sequences = {"reload_mmag_fast"}, + Length = 2.06, + MagLength = 1.26, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_035")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_04")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_02")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_03")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_01")) end}, + + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 3.03, + MagLength = 2.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_02")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_06")) end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_055")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_04")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_05")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_01")) end}, + + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2.06, + MagLength = 1.26, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.5, Callback = function(self) end}, + {Time = 1.5, Callback = function(self) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_035")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_04")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_02")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_03")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_fast_01")) end}, + + } + }, + + ["reload_empty_xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 4.5, + MagLength = 2.83, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.5, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 2.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_055")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_03")) end}, + {Time = 3.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_08")) end}, + {Time = 3.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_06")) end}, + {Time = 3.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_07")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_04")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_05")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_02")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_rechamber_01")) end}, + } + }, + + ["reload_empty_xmag_fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 2.9, + MagLength = 1.73, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.25, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 2.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_06")) end}, + {Time = 2.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_07")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_05")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_02")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_055")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_rechamber_01")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_03")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_04")) end}, + } + }, + + ["reload_empty_mmag"] = { + Sequences = {"reload_empty_mmag"}, + Length = 4.5, + MagLength = 2.83, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.5, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 2.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_055")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_03")) end}, + {Time = 3.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_08")) end}, + {Time = 3.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_06")) end}, + {Time = 3.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_07")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_04")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_05")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_02")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_rechamber_01")) end}, + } + }, + + ["reload_empty_mmag_fast"] = { + Sequences = {"reload_empty_mmag_fast"}, + Length = 2.9, + MagLength = 1.73, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.25, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 2.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_06")) end}, + {Time = 2.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_07")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_05")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_02")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_055")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_rechamber_01")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_03")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_04")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 4.5, + MagLength = 2.83, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.5, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 2.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_055")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_03")) end}, + {Time = 3.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_08")) end}, + {Time = 3.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_06")) end}, + {Time = 3.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_07")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_04")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_05")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_02")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_rechamber_01")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.9, + MagLength = 1.73, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.25, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 2.3, Callback = function(self) end}, + {Time = 2.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_06")) end}, + {Time = 2.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_07")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_05")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_02")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_055")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_rechamber_01")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_03")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_reload_empty_fast_04")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Rechamber"] = { + Sequences = {"rechamber"}, + Fps = 30, + Length = 1.3, + NextSequence = "Idle", + Events = { + { + Time = 0.5, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_rechamber_01")) end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_rechamber_02")) end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 25, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_sn_alpha50_ads_up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 25, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_sn_alpha50_ads_down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_inspect_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_inspect_01")) end}, + {Time = 3.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_alpha50_inspect_03")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_alpha50/customization.lua b/lua/weapons/mg_alpha50/customization.lua new file mode 100644 index 0000000..9b15e5d --- /dev/null +++ b/lua/weapons/mg_alpha50/customization.lua @@ -0,0 +1,49 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_alpha50_fire_plr_sup") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper_Sup.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_DMR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sn_alpha50_perk_soh", + "att_perk_steadywalk", "att_perk_nodrop", "att_perk_scopesway"}, + + {"attachment_vm_sn_alpha50_stock", "attachment_vm_sn_alpha50_stockh", + "attachment_vm_sn_alpha50_stockl", "attachment_vm_sn_alpha50_stocks"}, + + {"attachment_vm_sn_alpha50_mag", "attachment_vm_sn_alpha50_xmags", "attachment_vm_sn_alpha50_mmags"}, + + {"attachment_vm_sn_alpha50_barrel", "attachment_vm_sn_alpha50_barshort", + "attachment_vm_sn_alpha50_barmid", "attachment_vm_sn_alpha50_barlong"}, + + {"att_muzzle", "att_vm_alpha50_compensator01", "att_vm_alpha50_flashhider01", "att_vm_alpha50_muzzlebrake01", + "att_vm_alpha50_muzzlebrake02", "att_vm_alpha50_silencer01", "att_vm_alpha50_silencer02", "att_vm_alpha50_silencer03"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "attachment_vm_sn_alpha50_scope", + "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_4x_east01_tall", "att_vm_2x_west01", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_sn_alpha50_laser01", "attachment_vm_sn_alpha50_laser02", + "attachment_vm_sn_alpha50_laser03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) \ No newline at end of file diff --git a/lua/weapons/mg_alpha50/shared.lua b/lua/weapons/mg_alpha50/shared.lua new file mode 100644 index 0000000..7b855a0 --- /dev/null +++ b/lua/weapons/mg_alpha50/shared.lua @@ -0,0 +1,183 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_alpha50", "VGUI/entities/mg_alpha50", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sn_alpha50") +end + +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} +-- SWEP.GripPoseParameters2 = {"grip_pistolgrip_offset"} + +SWEP.Base = "mg_base" + +SWEP.PrintName = "AX-50" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Sniper Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/vm_sn_alpha50.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_alpha50.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_delta_fire_first"), + ReleasedSound = Sound("weap_delta_fire_disconnector"), + Time = 0.03 +} + +SWEP.Slot = 3 +SWEP.HoldType = "BoltAction" + +SWEP.Primary.Sound = Sound("weap_alpha50_fire_plr") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 5 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 297 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false +SWEP.ReloadRechambers = true +SWEP.Projectile = { + Class = "mg_sniper_bullet", --bullet entity class + Speed = 60000, + Gravity = 8, + Penetrate = true +} + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_dmr", + ["MuzzleFlash_DB"] = "mw_fas2_muzzleflash_slug", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", + ["Overheating"] = "AC_muzzle_pistol_smoke_barrel", +} +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Bolt-Action", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 2, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 3, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.025, --multiply the increase value by this amount while aiming + Max = 5, --the cone size will not go beyond this size + Decrease = 2, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6985 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {3, 4}, --random value between the 2 + Horizontal = {-1, 1}, --random value between the 2 + Shake = 5, --camera shake + AdsMultiplier = 1, --multiply the values by this amount while aiming + Seed = 3584, --give this a random number until you like the current recoil pattern + Punch = 1, --recoil will offset the view by this amount (takes vertical, horizontal and adsmul into account) + AdsShakeMultiplier = 2 +} +SWEP.Bullet = { + Damage = {190, 140}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 300, --in meters, damage scales within this distance + DropOffStartRange = 30, + Range = 350, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1.25, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 2, + Penetration = { + DamageMultiplier = 1, --how much damaged is multipled by when leaving a surface. + MaxCount = 6, --how many times the bullet can penetrate. + Thickness = 32, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + BreathingMultiplier = 1, + MovementMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(10,5,180), + Pos = Vector(10,-2, -1.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, -4, 0.55) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1.75, + KickMultiplier = 3.3, + AimKickMultiplier = 0.45 +} + +SWEP.Shell = "mwb_shelleject_50bmg" + +function SWEP:PrimaryAttack() + local clip = self:Clip1() + weapons.Get(self.Base).PrimaryAttack(self) + if (clip != self:Clip1()) then + self:MakeEnvironmentDust(210) + end +end \ No newline at end of file diff --git a/lua/weapons/mg_anovember94/animations.lua b/lua/weapons/mg_anovember94/animations.lua new file mode 100644 index 0000000..ea399b4 --- /dev/null +++ b/lua/weapons/mg_anovember94/animations.lua @@ -0,0 +1,502 @@ +AddCSLuaFile() + +-- local function fillMagBeforeMagin(self) +-- local am = math.min(self:Clip1() + self:GetOwner():GetAmmoCount(self:GetPrimaryAmmoType()), self:GetMaxClip1()) +-- self:UpdateMagPoseParam(self:GetMaxClip1() - am) +-- end + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.anovember94.raise")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.5, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.anovember94.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_raise_first_06")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_raise_first_03")) end}, + {Time = 1.233, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_raise_first_01")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_raise_first_02")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_raise_first_04")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_raise_first_05")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.4, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_045")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.233, Callback = function(self) self:EnableGrip() end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_05")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_03")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_02")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_01")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_06")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_04")) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_05")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_04")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_01")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_03")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_02")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Poly"), Vector(-10, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.433, Callback = function(self) self:EnableGrip() end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_045")) end}, + } + }, + + ["reload_xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.4, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 2.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmags_06")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmags_04")) end}, + {Time = 1.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmags_05")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmags_02")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmags_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmags_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmags_045")) end}, + {Time = 2.233, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_xmag_fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_xmags_03")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_xmags_04")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Poly"), Vector(-10, 0, 40)) end}, + {Time = 1.433, Callback = function(self) self:EnableGrip() end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_xmags_02")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_xmags_035")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_xmags_01")) end}, + } + }, + + ["reload_xmaglrg"] = { + Sequences = {"reload_xmaglrg"}, + Length = 2.4, + Fps = 30, + MagLength = 1.7, + NextSequence = "Idle", + Events = { + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmagslrg_04")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmagslrg_05")) end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmagslrg_06")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmagslrg_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmagslrg_02")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmagslrg_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.233, Callback = function(self) self:EnableGrip() end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_xmagslrg_055")) end}, + } + }, + + ["reload_xmaglrg_fast"] = { + Sequences = {"reload_xmaglrg_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_xmagslrg_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_xmagslrg_035")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Poly"), Vector(-10, 0, 40)) end}, + {Time = 1.433, Callback = function(self) self:EnableGrip() end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_xmagslrg_03")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_xmagslrg_04")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_fast_xmagslrg_01")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.6, + Fps = 30, + MagLength = 1.65, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_03")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_01")) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Poly"), Vector(-10, 0, 40)) end}, + {Time = 2.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_07")) end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_06")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_05")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.4, Callback = function(self) self:EnableGrip() end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_045")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_01")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_03")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_02")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_05")) end}, + {Time = 1.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Poly"), Vector(-10, 0, 40)) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_04")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_06")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_035")) end}, + } + }, + + ["reload_empty_xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 2.6, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmags_02")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmags_03")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmags_045")) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Poly"), Vector(-10, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmags_01")) end}, + {Time = 2.11, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmags_06")) end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmags_07")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmags_04")) end}, + {Time = 1.95, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmags_05")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_empty_xmag_fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmags_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmags_02")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmags_03")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmags_04")) end}, + {Time = 1.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Poly"), Vector(-10, 0, 40)) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmags_05")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmags_06")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmags_07")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmags_045")) end}, + } + }, + + ["reload_empty_xmaglrg"] = { + Sequences = {"reload_empty_xmaglrg"}, + Length = 2.6, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmagslrg_01")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmagslrg_02")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmagslrg_03")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmagslrg_04")) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Poly"), Vector(-10, 0, 40)) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmagslrg_05")) end}, + {Time = 2.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmagslrg_06")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmagslrg_07")) end}, + {Time = 2.4, Callback = function(self) self:EnableGrip() end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_xmagslrg_045")) end}, + } + }, + + ["reload_empty_xmaglrg_fast"] = { + Sequences = {"reload_empty_xmaglrg_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_045")) end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_06")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_05")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_02")) end}, + {Time = 1.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Poly"), Vector(-10, 0, 40)) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_03")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_07")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_01")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_04")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.anovember94.ads.up")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.anovember94.ads.down")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} , + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.anovember94.fire.switch.off")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.anovember94.fire.switch.on")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_inspect_01")) end}, + {Time = 2.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_inspect_03")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_inspect_02")) end}, + {Time = 4.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_anovember94_inspect_05")) end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end}, + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_anovember94/customization.lua b/lua/weapons/mg_anovember94/customization.lua new file mode 100644 index 0000000..a15c0de --- /dev/null +++ b/lua/weapons/mg_anovember94/customization.lua @@ -0,0 +1,1039 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.anovember94.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doSmgStats() +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_anovember94_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_ar_anovember94_barrel", "attachment_vm_ar_anovember94_barlong","attachment_vm_ar_anovember94_barshort", + "attachment_vm_ar_anovember94_barhvy",}, + + {"attachment_vm_ar_anovember94_stock", "attachment_vm_ar_anovember94_stockh", "attachment_vm_ar_anovember94_stockl", + "attachment_vm_ar_anovember94_stockno", "attachment_vm_ar_anovember94_stocks", "attachment_vm_ar_anovember94_stockskel"}, + + {"attachment_vm_ar_anovember94_mag", "attachment_vm_ar_anovember94_xmags","attachment_vm_ar_anovember94_xmagslrg"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06", "attachment_vm_ar_anovember94_muzzlebrake"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "attachment_vm_ar_anovember94_thermal_v3", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_ar_anovember94_laser01", "attachment_vm_ar_anovember94_laser02", + "attachment_vm_ar_anovember94_laser03"}, + + {"att_grip", "attachment_vm_ar_anovember94_bipodgrip", "attachment_vm_ar_anovember94_angledgrip01", "attachment_vm_ar_anovember94_angledgrip02", "attachment_vm_ar_anovember94_stubbygrip01", + "attachment_vm_ar_anovember94_stubbygrip02", "attachment_vm_ar_anovember94_vertgrip01", "attachment_vm_ar_anovember94_vertgrip02", + "attachment_vm_ar_anovember94_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_anovember94_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anov94_barhvy", +-- Bodygroups = { +-- ["tag_tip"] = 2, +-- ["tag_sight_barrel"] = 1, +-- ["tag_barrel_hide"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anov94_barlong", +-- Bodygroups = { +-- ["tag_tip"] = 4, +-- ["tag_sight_barrel"] = 2, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anov94_barshort", +-- Bodygroups = { +-- ["tag_tip"] = 6, +-- ["tag_sight_barrel"] = 3, +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.45) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -1.6) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.03, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.51) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.07, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.8) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.74) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.65) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.75) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.035, 0.025, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.6) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.15, 0.025, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.115, 0, -1.84) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.95) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.84) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anovember94_thermal_v3", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.105, 0, -1.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.77) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- self.HybridAimAngles = Angle(-0.04, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 0, -0.85) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.33) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3.5, -1.72) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.03, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3.5, -1.653) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.485) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-2.65) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -1.42) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(-0.04, 0.02, -45) +-- self.HybridAimPos = Vector(-1.55, 0, -0.6) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anovember94_muzzlebrake", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.7, 0), Angle()}, +-- [4] = {Vector(0, -1.9, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.reload_xmaglrg = self.Animations.reload_xmaglrg_fast +-- self.Animations.reload_empty_xmaglrg = self.Animations.reload_empty_xmaglrg_fast +-- self.Animations.reload_xmag = self.Animations.reload_xmag_fast +-- self.Animations.reload_empty_xmag = self.Animations.reload_empty_xmag_fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_ar_anovember94_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anov94_stockh", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anov94_stockl", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anov94_stocks", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anov94_stockskel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anov94_stockno", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_anovember94_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anov94_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_anov94_xmagslrg", +-- Stats = function(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_anovember94/shared.lua b/lua/weapons/mg_anovember94/shared.lua new file mode 100644 index 0000000..64787c9 --- /dev/null +++ b/lua/weapons/mg_anovember94/shared.lua @@ -0,0 +1,228 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_anovember94", "VGUI/entities/mg_anovember94", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_anovember94") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vertbutawesome_offset"} + +SWEP.PrintName = "AN-94" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_anovember94.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_anovember94.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.anovember94.fire.first"), + ReleasedSound = Sound("mw19.anovember94.disconnector"), + Time = 0.025 +} + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("mw19.anovember94.fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 560 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR5.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +local hyperRPM = 1000 + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "2rnd Burst", + OnSet = function(self) + self.Primary.Automatic = false + self.Primary.RPM = hyperRPM + self.Primary.BurstRounds = 2 + self.Primary.BurstDelay = 0.2 + --self.Recoil.Shake = 2.5 + --self.ViewModelOffsets.KickMultiplier = 3 + --self.ViewModelOffsets.AdsKickMultiplier = 0 + + return "Firemode_Semi" + end + }, + +} + +SWEP.DisableCantedReload = false + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.53, --accuracy while hip + Ads = 0.035, --accuracy while aiming + Increase = 0.085, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.7, --the cone size will not go beyond this size + Decrease = 0.24, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 56487 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 1.5}, --random value between the 2 + Horizontal = {-1.75, 1.75}, --random value between the 2 + Shake = 1.15, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 8778456, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1 +} +SWEP.Bullet = { + Damage = {25, 14}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 18, --in meters, damage will start dropping off after this range + EffectiveRange = 45, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.86, --how much damaged is multipled by when leaving a surface. + MaxCount = 5, --how many times the bullet can penetrate. + Thickness = 14, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 6.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 100, -90), + Pos = Vector(4,-3,-2) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0.02) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.5, + KickMultiplier = 0.35, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_545" + +DEFINE_BASECLASS("mg_base") +-- SWEP.bEnableMagPoseParam = true + +-- function SWEP:PostDrawViewModel(vm, weapon, ply) +-- BaseClass.PostDrawViewModel(self, vm, weapon, ply) + +-- if (self.bEnableMagPoseParam) then +-- self:UpdateMagPoseParam(self:GetMaxClip1() - self:Clip1()) +-- end +-- end + +-- function SWEP:AllowRuntimeMagPoseParam(allow) +-- self.bEnableMagPoseParam = allow +-- end + +-- local tiny = Vector(0.01, 0.01, 0.01) +-- local normal = Vector(1, 1, 1) + +--[[function SWEP:UpdateMagPoseParam(val) + self:GetViewModel():SetPoseParameter("bullets_offset", val) + + for b = 1, 30, 1 do + local bone = "j_bullet0"..b + + -- if (b < 10) then + -- bone = "j_bullet_0"..b + -- end + + local bId = self:LookupBoneCached(self:GetViewModel(), bone) + + if (bId != nil) then + self:GetViewModel():ManipulateBoneScale(bId, self:GetMaxClip1() - (val + 1) < b && tiny || normal) + end + end +end]] + +function SWEP:PrimaryAttack(fromFallback) + if (self:GetFiremode() == 1) then + if (self:GetSprayRounds() < 1) then + self.Primary.RPM = hyperRPM + --self.Recoil.Shake = 2.5 + else + local original = weapons.GetStored(self:GetClass()) + self.Primary.RPM = original.Primary.RPM + --self.Recoil.Shake = original.Recoil.Shake + end + end + + BaseClass.PrimaryAttack(self, fromFallback) +end \ No newline at end of file diff --git a/lua/weapons/mg_asierra12/animations.lua b/lua/weapons/mg_asierra12/animations.lua new file mode 100644 index 0000000..3b08f4c --- /dev/null +++ b/lua/weapons/mg_asierra12/animations.lua @@ -0,0 +1,309 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.7, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.asierra12.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.75, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.asierra12.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.6, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("mw19.asierra12.raise.first.1")) end}, + {Time = 0.65, Callback = function(self) self:DoSound(Sound("mw19.asierra12.raise.first.2")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("mw19.asierra12.raise.first.3")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.4, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.5, + Fps = 30, + MagLength = 1.95, + NextSequence = "Idle", + Events = { + {Time = 0.16, Callback = function(self) self:DisableGrip() end}, + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_01")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_02")) end}, + {Time = 0.56, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_03")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_04")) end}, + {Time = 1.96, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_045")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_05")) end}, + {Time = 2.34, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.5, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_fast_01")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_fast_02")) end}, + {Time = 0.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_fast_03")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_fast_04")) end}, + {Time = 1.16, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_fast_045")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_fast_05")) end}, + {Time = 1.37, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.4, + Fps = 30, + MagLength = 1.95, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_02")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_03")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_04")) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(20, 10, 40)) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_05")) end}, + {Time = 1.93, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_055")) end}, + {Time = 2.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_06")) end}, + {Time = 2.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_07")) end}, + {Time = 2.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_08")) end}, + {Time = 3.15, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.4, + Fps = 30, + MagLength = 1.16, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_fast_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_fast_02")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_fast_03")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_fast_04")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(15, 10, 40)) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_fast_045")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_fast_05")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_fast_06")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_asierra12_reload_empty_fast_07")) end}, + {Time = 1.7, Callback = function(self) end}, + {Time = 2.15, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.asierra12.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.asierra12.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.asierra12.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.asierra12.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.asierra12.inspect.01")) end}, + {Time = 0.06, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.asierra12.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.asierra12.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.asierra12.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.asierra12.inspect.05")) end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_asierra12/customization.lua b/lua/weapons/mg_asierra12/customization.lua new file mode 100644 index 0000000..8ee1e09 --- /dev/null +++ b/lua/weapons/mg_asierra12/customization.lua @@ -0,0 +1,897 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.asierra12.fire.suppressed") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_asierra12_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_ar_asierra12_barrel", "attachment_vm_ar_asierra12_barshort", + "attachment_vm_ar_asierra12_barlong", "attachment_vm_ar_asierra12_barlong2"}, + + {"attachment_vm_ar_asierra12_stock", "attachment_vm_ar_asierra12_stockh", "attachment_vm_ar_asierra12_stockl"}, + + {"attachment_vm_ar_asierra12_mag", "attachment_vm_ar_asierra12_mag_sniper", + "attachment_vm_ar_asierra12_xmags", "attachment_vm_ar_asierra12_xxmags"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06", "attachment_vm_ar_asierra12_longsuppressor"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz", "attachment_vm_ar_asierra12_scope"}, + + {"att_laser", "attachment_vm_ar_asierra12_laser01", "attachment_vm_ar_asierra12_laser02", "attachment_vm_ar_asierra12_laser03"}, + + {"att_grip", "attachment_vm_ar_asierra12_angledgrip01", "attachment_vm_ar_asierra12_angledgrip02", "attachment_vm_ar_asierra12_stubbygrip01", + "attachment_vm_ar_asierra12_stubbygrip02", "attachment_vm_ar_asierra12_vertgrip01", "attachment_vm_ar_asierra12_vertgrip02", + "attachment_vm_ar_asierra12_vertgrip03", "attachment_vm_ar_asierra12_bipodgrip"}, + + {"att_receiver"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_asierra12_barrel", +-- }, +-- { +-- Key = "attachment_vm_ar_asierra12_barshort", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_asierra12_barlong", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_asierra12_barlong2", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0,0,0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0,0,0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.2, 0.07, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0,0,0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.03, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.97) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.92) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 2, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.19) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.09) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.03, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.951) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.04, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.02, 0, -1.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.03, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.12, 0, -1.281) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0026, 0, -1.385) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.004, 0, -1.278) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 0, -1.213) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 0, -0.7862) +-- self.HybridAimAngles = Angle(-0.06, 0.03, -45) +-- self.HybridAimPos = Vector(-1.78, 0, -0.32) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.006, 0, -0.77) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.033, 1.5, 0.71) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.028, 1.5, 0.78) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_asierra12_scope", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.028, 1.5, 0.49) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.007, 0, -0.924) +-- self.HybridAimAngles = Angle(0, 0.02, 0) +-- self.HybridAimPos = Vector(0,0,-2.15) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.004, 0, -0.854) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(-0.02, 0.03, -45) +-- self.HybridAimPos = Vector(-1.55, 0, -0.05) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_ar_asierra12_muzzlebrake", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, -10, 0), Angle()}, +-- [2] = {Vector(0, -11.15, 0), Angle()}, +-- [3] = {Vector(0, -7.5, 0), Angle()}, +-- [4] = {Vector(0, -5.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_asierra12_longsuppressor", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, 1.5, 0), Angle()}, +-- [4] = {Vector(0, 4.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_ar_asierra12_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_asierra12_stockh", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_asierra12_stockl", +-- Bodygroups = { +-- ["tag_stock"] = 1, +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_asierra12_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_asierra12_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_asierra12_xxmags", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_asierra12/shared.lua b/lua/weapons/mg_asierra12/shared.lua new file mode 100644 index 0000000..406e02a --- /dev/null +++ b/lua/weapons/mg_asierra12/shared.lua @@ -0,0 +1,168 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("mw_fas2_muzzleflash_suppressed") +PrecacheParticleSystem("mw_ins2_shell_eject") +PrecacheParticleSystem("mw_fas2_muzzleflash_ar_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_asierra12", "VGUI/entities/mg_asierra12", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_asierra12") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vert_good_offset"} + +SWEP.PrintName = "Oden" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_asierra12.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_asierra12.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("mw19.akilo47.fire.first"), + ReleasedSound = Sound("mw19.akilo47.fire.disconnector"), + Time = 0.025 +} + +SWEP.Primary.Sound = Sound("mw19.asierra12.fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 20 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 410 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR2.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Automatic", + OnSet = function(self) + self.Primary.Automatic = false + self.Primary.RPM = 500 + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "mw_fas2_muzzleflash_ar_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.3, --accuracy while hip + Ads = 0.18, --accuracy while aiming + Increase = 0.075, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 2, --the cone size will not go beyond this size + Decrease = 1.0, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 45867 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 1.5}, --random value between the 2 + Horizontal = {-1, 1}, --random value between the 2 + Shake = 2, --camera shake + AdsMultiplier = 0.5, --multiply the values by this amount while aiming + Seed = 346598, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1.5 +} + +SWEP.Bullet = { + Damage = {40, 20}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 25, --in meters, damage will start dropping off after this range + EffectiveRange = 50, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.7, --how much damaged is multipled by when leaving a surface. + MaxCount = 5, --how many times the bullet can penetrate. + Thickness = 28, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 95, -90), + Pos = Vector(-13,-4,15) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -7, 5), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(0, 10, 0)}, + [1] = {Pos = Vector(2, 4, 5), Angles = Angle(0, -30, 0)} + } + }, + + RecoilMultiplier = 0.6, + KickMultiplier = 1, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_127" + diff --git a/lua/weapons/mg_augolf/animations.lua b/lua/weapons/mg_augolf/animations.lua new file mode 100644 index 0000000..c642fa6 --- /dev/null +++ b/lua/weapons/mg_augolf/animations.lua @@ -0,0 +1,564 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.6, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.augolf.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.4, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.augolf.drop")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_raise_first_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_raise_first_01")) end}, + {Time = 0.667, Callback = function(self) self:EnableGrip() end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_raise_first_02")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.3, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_05")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_04")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_07")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_06")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_01")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_03")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_02")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_055")) end}, + {Time = 1.833, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1.03, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_03")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_05")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.267, Callback = function(self) self:EnableGrip() end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_02")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_01")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_04")) end}, + } + }, + + ["Reload_ARmag"] = { + Sequences = {"reload_armag"}, + Length = 2.3, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_waffle_03")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_waffle_045")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_waffle_04")) end}, + {Time = 1.833, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_waffle_01")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_waffle_02")) end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_waffle_05")) end}, + } + }, + + ["Reload_ARmag_Fast"] = { + Sequences = {"reload_armag_fast"}, + Length = 1.66, + Fps = 30, + MagLength = 1.06, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_waffle_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.233, Callback = function(self) self:EnableGrip() end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_waffle_03")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_waffle_04")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_waffle_05")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_waffle_01")) end}, + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.3, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_05")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_04")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_07")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_06")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_01")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_03")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_02")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_055")) end}, + {Time = 1.833, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1.03, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 40)) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_03")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_05")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.267, Callback = function(self) self:EnableGrip() end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_02")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_01")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_04")) end}, + } + }, + + ["Reload_DrumMag"] = { + Sequences = {"reload_drummag"}, + Length = 2.3, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_drum_01")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_drum_03")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_drum_02")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_drum_05")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_drum_04")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_drum_06")) end}, + {Time = 1.867, Callback = function(self) self:EnableGrip() end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_drum_055")) end}, + } + }, + + ["Reload_DrumMag_Fast"] = { + Sequences = {"reload_drummag_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1.03, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_drum_03")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_drum_05")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_drum_02")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_drum_04")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_fast_drum_01")) end}, + {Time = 1.267, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.4, + Fps = 30, + MagLength = 2.2, + NextSequence = "Idle", + Events = { + {Time = 1.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_02")) end}, + {Time = 2.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_065")) end}, + {Time = 2.867, Callback = function(self) self:EnableGrip() end}, + {Time = 2.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_08")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_05")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_04")) end}, + {Time = 2.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_07")) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_06")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_01")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_03")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.10, Callback = function(self) self:DisableGrip() end}, + {Time = 1.6, Callback = function(self) self:EnableGrip() end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_07")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_06")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_05")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_04")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_03")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_01")) end}, + } + }, + + ["Reload_Empty_ARmag"] = { + Sequences = {"reload_empty_armag"}, + Length = 3.4, + Fps = 30, + MagLength = 2.2, + NextSequence = "Idle", + Events = { + {Time = 1.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_waffle_04")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_waffle_05")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_waffle_06")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_waffle_07")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_waffle_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_waffle_02")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_waffle_03")) end}, + {Time = 2.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_waffle_08")) end}, + {Time = 2.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_waffle_09")) end}, + {Time = 2.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_waffle_075")) end}, + {Time = 2.967, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_ARmag_Fast"] = { + Sequences = {"reload_empty_armag_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_waffle_02")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_waffle_03")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_waffle_01")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_waffle_06")) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_waffle_07")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_waffle_04")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_waffle_05")) end}, + {Time = 1.6, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 3.4, + Fps = 30, + MagLength = 2.2, + NextSequence = "Idle", + Events = { + {Time = 1.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_02")) end}, + {Time = 2.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_065")) end}, + {Time = 2.867, Callback = function(self) self:EnableGrip() end}, + {Time = 2.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_08")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_05")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_04")) end}, + {Time = 2.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_07")) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_06")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_01")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_03")) end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.10, Callback = function(self) self:DisableGrip() end}, + {Time = 1.6, Callback = function(self) self:EnableGrip() end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_07")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_06")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_05")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_04")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_03")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_01")) end}, + } + }, + + ["Reload_Empty_DrumMag"] = { + Sequences = {"reload_empty_drummag"}, + Length = 3.4, + Fps = 30, + MagLength = 2.2, + NextSequence = "Idle", + Events = { + {Time = 1.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 2.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_drum_09")) end}, + {Time = 2.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_drum_08")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_drum_05")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_drum_04")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_drum_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_drum_01")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_drum_03")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_drum_02")) end}, + {Time = 2.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_drum_07")) end}, + {Time = 2.967, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_DrumMag_Fast"] = { + Sequences = {"reload_empty_drummag_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_drum_03")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_drum_02")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_drum_01")) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_drum_06")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_drum_05")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_reload_empty_fast_drum_04")) end}, + {Time = 1.667, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.augolf.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.augolf.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 39, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.augolf.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.augolf.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 2.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_inspect_03")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_inspect_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_inspect_01")) end}, + {Time = 4.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_inspect_05")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 3.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_augolf_inspect_04")) end}, + {Time = 2.533, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_augolf/customization.lua b/lua/weapons/mg_augolf/customization.lua new file mode 100644 index 0000000..437c55e --- /dev/null +++ b/lua/weapons/mg_augolf/customization.lua @@ -0,0 +1,1031 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_augolf_fire_plr_sup") + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then + self.Primary.Sound = Sound("weap_augolf_cal_plr_sup") + end + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doCalConversionStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + local bSup4 = self:HasAttachment("attachment_vm_silencer05") + local bSup4 = self:HasAttachment("attachment_vm_silencer06") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then + self.Primary.Sound = Sound("weap_augolf_cal_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + self.Primary.Ammo = "AR2" + self.Shell = "mwb_shelleject_556" + end +end + +function SWEP:fivefivesixConversion() + weapon.Primary.RPM = 680 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.195 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.195 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.2 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.2 + weapon.Bullet.Penetration.Thickness = weapon.Bullet.Penetration.Thickness * 2 + weapon.Bullet.Range = weapon.Bullet.Range * 1.5 + weapon.Cone.Increase = weapon.Cone.Increase * 2 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.5 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.5 +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sm_augolf_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_rof"}, + + {"att_stock", "attachment_vm_sm_augolf_stock_tactical", "attachment_vm_sm_augolf_stockl", "attachment_vm_sm_augolf_stocks"}, + + {"attachment_vm_sm_augolf_mag", "attachment_vm_sm_augolf_drummag", "attachment_vm_sm_augolf_smg_xmag", + "attachment_vm_sm_augolf_armag"}, + + {"attachment_vm_sm_augolf_smgbarrel", "attachment_vm_sm_augolf_lmgbarrel", "attachment_vm_sm_augolf_arbarrel"}, + + {"att_rail", "attachment_vm_sm_augolf_arrail"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04", + "attachment_vm_sm_augolf_lmgrail"}, + + {"att_laser", "attachment_vm_sm_augolf_laser01_cylinder", "attachment_vm_sm_augolf_laser02_cylinder", + "attachment_vm_sm_augolf_laser03_cylinder"}, + + {"att_grip", "attachment_vm_sm_augolf_bipodgrip", "attachment_vm_sm_augolf_angledgrip01", "attachment_vm_sm_augolf_angledgrip02", "attachment_vm_sm_augolf_stubbygrip01", + "attachment_vm_sm_augolf_stubbygrip02", "attachment_vm_sm_augolf_vertgrip01", "attachment_vm_sm_augolf_vertgrip02", + "attachment_vm_sm_augolf_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sm_augolf_smgbarrel", +-- Bodygroups = { +-- ["tag_tip"] = 0 +-- } +-- }, +-- { +-- Key = "attachment_vm_sm_augolf_arbarrel", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_augolf_lmgbarrel", +-- Bodygroups = { +-- ["tag_tip"] = 4 +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Rail"] = { +-- Slot = 3, +-- { +-- Key = "no_attachment", +-- }, +-- { +-- Key = "attachment_vm_sm_augolf_arrail", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- ["tag_rail"] = 2 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_augolf_lmgrail", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1 +-- }, +-- ExcludedAttachments = { +-- ["Optic"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22} +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -0.515) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 7, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { + +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { + +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { + +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 5, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.01, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.035, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.034, 0.018, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.034, 0.018, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.45) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.017, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 1, -0.62) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.007, 0, -0.725) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.008, 0, -0.615) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 0, -0.55) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.00, 0, -0.12) +-- self.HybridAimAngles = Angle(-0.02, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 0, 0.4) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 0, -0.11) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.008, 2, -0.5) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 2, -0.435) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 0, -0.26) +-- self.HybridAimAngles = Angle(-0.02, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-1.45) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0.5, -0.191) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0.015, -45) +-- self.HybridAimPos = Vector(-1.55, 3, 0.65) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 4, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.85, 0), Angle()}, +-- [3] = {Vector(0, 10.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_ARmag = self.Animations.Reload_ARmag_Fast +-- self.Animations.Reload_Empty_ARmag = self.Animations.Reload_Empty_ARmag_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- self.Animations.Reload_DrumMag = self.Animations.Reload_DrumMag_Fast +-- self.Animations.Reload_Empty_DrumMag = self.Animations.Reload_Empty_DrumMag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 8, +-- { +-- Key = "no_attachment", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_augolf_stock_tactical", +-- Bodygroups = { +-- ["tag_stock_attach"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_augolf_stockl", +-- Bodygroups = { +-- ["tag_stock_attach"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_augolf_stocks", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 9, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["tag_grip_attach"] = 1, +-- ["tag_ub_rail"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["tag_grip_attach"] = 1, +-- ["tag_ub_rail"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["tag_grip_attach"] = 1, +-- ["tag_ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, -5, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["tag_grip_attach"] = 1, +-- ["tag_ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, -5, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["tag_grip_attach"] = 1, +-- ["tag_ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, -5, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["tag_grip_attach"] = 1, +-- ["tag_ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, -5, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["tag_grip_attach"] = 1, +-- ["tag_ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, -5, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 6, +-- { +-- Key = "attachment_vm_sm_augolf_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_augolf_armag", +-- Stats = function(self) +-- doCalConversionStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_augolf_smg_xmag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_augolf_drummag", +-- Stats = function(self) +-- doCalConversionStats(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_augolf/shared.lua b/lua/weapons/mg_augolf/shared.lua new file mode 100644 index 0000000..f2a8b00 --- /dev/null +++ b/lua/weapons/mg_augolf/shared.lua @@ -0,0 +1,169 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_augolf", "VGUI/entities/mg_augolf", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sm_augolf") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "AUG" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Submachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_augolf.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_augolf.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "RifleWithVerticalGrip" +SWEP.Trigger = { + PressedSound = Sound("weap_augolf_fire_first_plr"), + ReleasedSound = Sound("weap_augolf_disconnector_plr"), + Time = 0.025 +} + +SWEP.Primary.Sound = Sound("weap_augolf_fire_plr") +SWEP.Primary.Ammo = "SMG1" +SWEP.Primary.ClipSize = 25 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 769 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.23, --accuracy while hip + Ads = 0.055, --accuracy while aiming + Increase = 0.025, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.3, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 4156 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.6, 0.8}, --random value between the 2 + Horizontal = {-1.8, 1.8}, --random value between the 2 + Shake = 1.15, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 124455 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {23, 11}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 35, --in meters, damage scales within this distance + DropOffStartRange = 13, --in meters, damage scales within this distance + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.5, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(-5,95,-90), + Pos = Vector(-11,-3,13) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -2, 2), Angles = Angle(30, 0, -30)}, + [1] = {Pos = Vector(0, 2, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, -2), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(3, 0, 5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.25, + KickMultiplier = 0.2, + AimKickMultiplier = 0.75 +} + +SWEP.Shell = "mwb_shelleject_9mm" + + +DEFINE_BASECLASS("mg_base") \ No newline at end of file diff --git a/lua/weapons/mg_base/cl_init.lua b/lua/weapons/mg_base/cl_init.lua new file mode 100644 index 0000000..d5c86d0 --- /dev/null +++ b/lua/weapons/mg_base/cl_init.lua @@ -0,0 +1,94 @@ +AddCSLuaFile() + +include("shared.lua") + +MWBASE_STENCIL_REFVALUE = 69 + +CreateClientConVar("mgbase_rig", "chands", true, false, "Change first person arms rig.") +CreateClientConVar("mgbase_rig_skin", "0", true, false, "Change first person arms rig skin.", 0) +CreateClientConVar("mgbase_gloves", "", true, false, "Change first person arms gloves.") +CreateClientConVar("mgbase_gloves_skin", "0", true, false, "Change first person arms gloves.", 0) +CreateClientConVar("mgbase_toggleaim", "0", true, true, "Hold to aim.", 0, 1) +CreateClientConVar("mgbase_autoreload", "1", true, true, "Toggle auto reload.", 0, 1) +CreateClientConVar("mgbase_aimassist", "1", true, true, "Toggle aim assist.", 0, 1) +CreateClientConVar("mgbase_manualrechamber", "0", true, true, "Toggle manual rechambering.", 0, 1) +CreateClientConVar("mgbase_fx_blur", "1", true, false, "Toggle first person blur.", 0, 1) +CreateClientConVar("mgbase_fx_smoke", "1", true, false, "Toggle barrel smoke.", 0, 1) +CreateClientConVar("mgbase_fx_laser_weaponcolor", "0", true, false, "Toggle sandbox weapon color usage for lasers.", 0, 1) +CreateClientConVar("mgbase_fx_vmfov", "1", true, false, "Change viewmodel FOV.", 0.1, 2) +CreateClientConVar("mgbase_fx_vmfov_ads", "1", true, false, "Change viewmodel FOV (only when aiming).", 0.1, 2) +CreateClientConVar("mgbase_hud_xhaircolor", "255 255 255", true, false, "Crosshair color.", 0, 1) +CreateClientConVar("mgbase_hud_xhair", "1", true, false, "Toggle crosshair.", 0, 1) +CreateClientConVar("mgbase_hud_firemode", "1", true, false, "Toggle firemode HUD.", 0, 1) +CreateClientConVar("mgbase_hud_sights", "1", true, false, "Toggle sights HUD.", 0, 1) +CreateClientConVar("mgbase_hud_flashlight", "1", true, false, "Toggle flashlight HUD.", 0, 1) +CreateClientConVar("mgbase_debug_freeview", "0", false, false, "Toggle debug free view.", 0, 1) +CreateClientConVar("mgbase_debug_crosshair", "0", false, false, "Toggle debug crosshair for ironsights.", 0, 1) +CreateClientConVar("mgbase_debug_disablebreathing", "0", false, false, "Toggle breathing.", 0, 1) +CreateClientConVar("mgbase_debug_vmrender", "1", false, false, "Toggle viewmodel render.", 0, 1) +CreateClientConVar("mgbase_debug_wmrender", "1", false, false, "Toggle worldmodel render.", 0, 1) +--CreateClientConVar("mgbase_debug_freezeanim", "0", false, false, "Freeze viewmodel animations.", 0, 1) +--CreateClientConVar("mgbase_debug_animdelta", "0", false, false, "Scrub the current animation on the viewmodel.", 0, 1) +CreateClientConVar("mgbase_presetspawnmethod", "0", true, false, "Spawn preset method: 0 = none, 1 = random, 2 = random default, 3 = random favorite") + +--binds +local mbind, sbind, cbind, ibind, fbind = input.LookupBinding("+grenade2"), input.LookupBinding("+zoom"), input.LookupBinding("+menu_context"), input.LookupBinding("+reload"), input.LookupBinding("+grenade1") + +CreateClientConVar("mgbase_binds_melee", mbind and input.GetKeyCode(mbind) or "0", true, true) +CreateClientConVar("mgbase_binds_switchsights", sbind and input.GetKeyCode(sbind) or "0", true, true) +CreateClientConVar("mgbase_binds_customize", cbind and input.GetKeyCode(cbind) or "0", true, true) +CreateClientConVar("mgbase_binds_safety", "0", true, true) +CreateClientConVar("mgbase_binds_inspect", ibind and input.GetKeyCode(ibind) or "0", true, true) +CreateClientConVar("mgbase_binds_firemode", fbind and input.GetKeyCode(fbind) or "0", true, true) +CreateClientConVar("mgbase_binds_holster", "0", true, true) + +if (math.random(1, 100) == 1) then + list.Set( "ContentCategoryIcons", "Modern Warfare", "vgui/bentler.png" ) + else + list.Set( "ContentCategoryIcons", "Modern Warfare", "vgui/mw_logo.png" ) + +end + +concommand.Add("mgbase_generatepreset", function(p, c, args) + local w = p:GetActiveWeapon() + + if (args[1] == nil) then + print("Missing name! Type a name in quotes (eg. \"The Gun\")") + return + end + + if (IsValid(w) && weapons.IsBasedOn(w:GetClass(), "mg_base")) then + local attachmentList = "" + + for _, a in pairs(w:GetAllAttachmentsInUse()) do + if (a.Index > 1) then + attachmentList = attachmentList..", \""..a.ClassName.."\"" + end + end + + attachmentList = string.sub(attachmentList, 3) + + local finalPrint = "PRESET.SWEP = \""..w:GetClass().."\"\n" + finalPrint = finalPrint.."PRESET.Name = \""..args[1].."\"\n" + finalPrint = finalPrint.."PRESET.Attachments = {"..attachmentList.."}" + + print("Here's your preset (copied to clipboard already)") + print("Remember to put this in lua/weapons/mg_base/modules/presets") + print("From there, create a .lua file with any name you want and paste the contents in there") + print("=================") + print(finalPrint) + SetClipboardText(finalPrint) + end +end) + +net.Receive("mgbase_tpanim", function() + local slot = net.ReadUInt(2) + local anim = net.ReadInt(12) + local ply = net.ReadEntity() + + if (ply == NULL) then + return + end + + ply:AnimRestartGesture(slot, anim, true) +end) \ No newline at end of file diff --git a/lua/weapons/mg_base/init.lua b/lua/weapons/mg_base/init.lua new file mode 100644 index 0000000..e3510d7 --- /dev/null +++ b/lua/weapons/mg_base/init.lua @@ -0,0 +1,92 @@ +AddCSLuaFile() + +AddCSLuaFile("shared.lua") +AddCSLuaFile("cl_init.lua") + +--modules +AddCSLuaFile("modules/shared/sh_think.lua") +AddCSLuaFile("modules/shared/sh_sprint_behaviour.lua") +AddCSLuaFile("modules/shared/sh_datatables.lua") +AddCSLuaFile("modules/shared/sh_aim_behaviour.lua") +AddCSLuaFile("modules/shared/sh_reload_behaviour.lua") +AddCSLuaFile("modules/shared/sh_melee_behaviour.lua") +AddCSLuaFile("modules/shared/sh_firemode_behaviour.lua") +AddCSLuaFile("modules/shared/sh_primaryattack_behaviour.lua") +AddCSLuaFile("modules/shared/sh_holdtypes.lua") +AddCSLuaFile("modules/shared/sh_customization.lua") +--AddCSLuaFile("modules/client/cl_anim_think.lua") +AddCSLuaFile("modules/client/cl_calcview.lua") +--AddCSLuaFile("modules/client/cl_calcviewmodelview.lua") +--AddCSLuaFile("modules/client/cl_viewmodel_render.lua") +AddCSLuaFile("modules/client/cl_worldmodel_render.lua") +--AddCSLuaFile("modules/client/cl_viewmodel_blur.lua") +--AddCSLuaFile("modules/client/cl_rigs.lua") +AddCSLuaFile("modules/client/cl_hud.lua") +AddCSLuaFile("modules/client/cl_spawnmenu.lua") +AddCSLuaFile("modules/reverb/mw_reverb.lua") +AddCSLuaFile("modules/reverb/mw_reverbimpl.lua") +AddCSLuaFile("modules/sounds/mw_sounds_channels.lua") +--AddCSLuaFile("modules/sounds/mw_sounds_general.lua") + +include("shared.lua") + +util.AddNetworkString("mgbase_tpanim") +util.AddNetworkString("mgbase_customize_att") +util.AddNetworkString("mgbase_fire_tracer") + +concommand.Add("mgbase_reloadatts", function(p) + if (!p:IsSuperAdmin()) then + return + end + + include("autorun/mw_loader.lua") + p:SendLua("include('autorun/mw_loader.lua')") +end) + +net.Receive("mgbase_customize_att", function(len, ply) + local slotIndex = net.ReadInt(32) + local attIndex = net.ReadInt(32) + local weapon = net.ReadEntity() + + if (!GetConVar("mgbase_sv_customization"):GetBool()) then + return + end + + if (IsValid(weapon)) then + if (weapon:GetOwner() != ply) then + return + end + + if (weapon.m_LastRestored != nil && CurTime() <= weapon.m_LastRestored + 1) then + return + end + + if (!weapons.IsBasedOn(weapon:GetClass(), "mg_base")) then + return + end + + if (weapon.Customization[slotIndex] == nil) then + return + end + + if (weapon:GetAttachmentInUseForSlot(slotIndex).ClassName == weapon.Customization[slotIndex][attIndex]) then + attIndex = 1 + end + + weapon:CreateAttachmentEntity(weapon.Customization[slotIndex][attIndex]) + end +end) + +hook.Add("Think", "MW19_SafeToDeleteThinkHook", function() + --[[for _, p in pairs(player.GetAll()) do + if (!p:IsBot()) then + continue + end + + if (p.targetPracticePos == nil) then + p.targetPracticePos = Entity(1):GetPos() + end + + p:SetPos(p.targetPracticePos) + end ]] +end) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_akilo47.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_akilo47.lua new file mode 100644 index 0000000..5f780ad --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_akilo47.lua @@ -0,0 +1,216 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_akilo47_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_xmags"] = { + Name = "40 Round Mags", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_xmags_akilo47_v11.vmt"), + Stats = function(self) + self.Primary.ClipSize = 40 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.92 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.92 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_smgmag"] = { + Name = "5.45x39mm 30-Round Mags", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_smgmag.mdl"), + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_smgmag_akilo47.vmt"), + Stats = function(self) + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 0.98 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 0.98 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.8 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.7 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.8 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.8 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.8 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.8 + self.Primary.ClipSize = 30 + self.Primary.RPM = 690 + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_drum_mag"] = { + Name = "75 Round Mags", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_drum_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_drums_akilo47.vmt"), + Stats = function(self) + self.Primary.ClipSize = 75 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_XmagLrg + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.81 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.81 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.8 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_comp"] = { --unused + Name = "Compensator", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_comp.mdl"), + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_comp_akilo47.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.8 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.8 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.95 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.95 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.95 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_custombarrel"] = { + Name = "Spetsnaz Elite", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_custombarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_custombarrel_akilo47.vmt"), + Stats = function(self) + self.Cone.Increase = self.Cone.Increase * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.05 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.05 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_lmgbarrel_grip"] = { + Name = "23.0 Romanian", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_lmgbarrel_grip.mdl"), + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_gripvert_akilo47.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.06 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.06 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.87 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.87 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.87 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.87 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.93 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.93 + self.HoldType = "RifleWithVerticalGrip" + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_lmgbarrel"] = { + Name = "23.0 RPK Barrel", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_lmgbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_lmgbarrel_akilo47.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.06 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.06 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.91 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.91 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.91 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.91 + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_smgbarcust"] = { + Name = "8.1 Compact Barrel", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_smgbarcust.mdl"), + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_vertgrip_akilo47.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.9 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.08 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.08 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.08 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.08 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.85 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.85 + self.HoldType = "RifleWithVerticalGrip" + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_smgbarrel"] = { + Name = "8.1 Compact Barrel", + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_smgbarrel_akilo47.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.9 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_lmgstock"] = { + Name = "Field LMG Stock", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_lmgstock.mdl"), + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_stocklmg_akilo47.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.92 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.92 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.92 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.92 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.91 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.91 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.91 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.91 + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_smgstock_unfolded"] = { + Name = "Skeleton Stock", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_smgstock_unfolded.mdl"), + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_smgstock_unfolded_akilo47.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.15 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.15 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.15 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_smgstock"] = { + Name = "Skeleton Stock Folded", + Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_smgstock.mdl"), + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_smgstock_akilo47.vmt"), + Stats = function(self) + self.Recoil.AdsMultiplier = 0.5 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.26 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.26 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.26 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.26 + end +} + +MW_ATT_KEYS["attachment_vm_ar_akilo47_stockno"] = { + Name = "No Stock", + Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_stockno_akilo47.vmt"), + Stats = function(self) + self.Recoil.AdsMultiplier = 0.5 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.26 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.26 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.26 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.26 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_anovember94.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_anovember94.lua new file mode 100644 index 0000000..77a6f0e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_anovember94.lua @@ -0,0 +1,219 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_anovember94_thermal_v3"] = { + Name = "POS-M3 Thermal Scope", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anovember94_thermal_v3.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_thermal.vmt"), + Optic = { + LensHideMaterial = Material("viper/MW/attachments/attachment_vm_4x_east_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 0, --a value of zero means 1:1 size with the end of the optic + Thermal = true + }, + Reticle = { + Material = Material("viper/mw/reticles/reticle_acog_default2.vmt"), + Size = 700, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" + }, + Stats = function(self) + --self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.89 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.85 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.85 + self.Zoom.ViewModelFovMultiplier = 0.95 + self.Zoom.FovMultiplier = 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_ar_anovember94_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anovember94_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_anovember94_muzzlebrake"] = { + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anovember94_tag_tip_5.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_brake.vmt"), + Name = "AN-94 Sonic Brake", + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.93 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.93 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.9 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_anov94_xmags"] = { + Name = "45 Round Mags", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 45 + self.Animations.Reload = self.Animations.reload_xmag + self.Animations.Reload_Empty = self.Animations.reload_empty_xmag + self.Animations.Reload_Fast = self.Animations.reload_xmag_fast + self.Animations.Reload_Empty_Fast = self.Animations.reload_empty_xmag_fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + --self.Animations.Reload_Empty.Length = self.Animations.Reload_Empty.Length + 0.15 + --self.Animations.Reload.Length = self.Animations.Reload.Length + 0.05 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_anov94_xmagslrg"] = { + Name = "60 Round Casket Mags", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_xmagslrg.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_xmagslrg.vmt"), + Stats = function(self) + self.Primary.ClipSize = 60 + self.Animations.Reload = self.Animations.reload_xmaglrg + self.Animations.Reload_Empty = self.Animations.reload_empty_xmaglrg + self.Animations.Reload_Fast = self.Animations.reload_xmaglrg_fast + self.Animations.Reload_Empty_Fast = self.Animations.reload_empty_xmaglrg_fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.85 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.85 + end +} + +MW_ATT_KEYS["attachment_vm_ar_anovember94_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anovember94_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_ar_anov94_barhvy"] = { + Name = "VLK AN-94 Sila", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_barhvy.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_barhvy.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.94 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.94 + self.Cone.Hip = self.Cone.Hip * 0.95 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_anov94_barlong"] = { + Name = "AN-94 Factory X-438mm", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_barlong.vmt"), + Stats = function(self) + self.Cone.Hip = self.Cone.Hip * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.06 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.06 + end +} + +MW_ATT_KEYS["attachment_vm_ar_anov94_barshort"] = { + Name = "AN-94 Factory 330mm", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_barshort.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.07 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.07 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.94 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_ar_anovember94_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anovember94_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_anov94_stockh"] = { + Name = "AN-94 Factory Heavy", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_stockh.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_stockh.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.89 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.89 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.88 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.88 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.85 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.85 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.85 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.85 + end +} + +MW_ATT_KEYS["attachment_vm_ar_anov94_stockl"] = { + Name = "FORGE TAC Ultralight", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_stockl.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.15 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.15 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.1 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.1 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.1 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_ar_anov94_stocks"] = { + Name = "FSS Close Quarters Stock", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_stocks.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_stocks.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.09 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.09 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.05 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.05 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.05 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.05 + end +} + +MW_ATT_KEYS["attachment_vm_ar_anov94_stockskel"] = { + Name = "VLK PX-9 Pero", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_stockskel.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_stockskel.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.15 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.15 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.15 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_ar_anov94_stockno"] = { + Name = "Folded Stock", + Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_stockno.mdl"), + Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_stockno.vmt"), + Stats = function(self) + self.Recoil.AdsMultiplier = 0.5 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.26 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.26 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.26 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.26 + self.Recoil.ViewModelMultiplier = 2.25 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_falima.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_falima.lua new file mode 100644 index 0000000..1f4f711 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_falima.lua @@ -0,0 +1,119 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_falima_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_falima_mmags"] = { + Name = "24 Round Mags", + Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_mmags.mdl"), + Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_mmags.vmt"), + Stats = function(self) + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.95 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.95 + self.Primary.ClipSize = 24 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + end +} + +MW_ATT_KEYS["attachment_vm_ar_falima_xmags"] = { + Name = "30 Round Mags", + Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 30 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.91 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.91 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty = self.Animations.Reload_Empty_XmagLrg + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.87 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.87 + end +} + +MW_ATT_KEYS["attachment_vm_ar_falima_barrel_muzzle"] = { + Name = "Muzzlebrake", + Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_barrel_muzzle.mdl"), + Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_muzzle.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_falima_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_ar_falima_barlong"] = { + Name = "18.0 Ultralight", + Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_barlong.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.05 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.05 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.91 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.91 + end +} + +MW_ATT_KEYS["attachment_vm_ar_falima_barsmg"] = { + Name = "13.0 OSW Para", + Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_barsmg.mdl"), + Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_barsmg.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.94 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.94 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.05 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.05 + end +} + +MW_ATT_KEYS["attachment_vm_ar_falima_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_stock.mdl"), + Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_asierra12_barlong.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_falima_nostock"] = { + Name = "No Stock", + Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_no.vmt"), + Stats = function(self) + self.Recoil.AdsMultiplier = 0.5 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.26 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.26 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.26 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.26 + end +} + +MW_ATT_KEYS["attachment_vm_ar_falima_stockl"] = { + Name = "Factory 18 Aluminum Stock", + Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_stockl.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.06 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.06 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.06 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.06 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.02 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.02 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.02 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.02 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_falpha.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_falpha.lua new file mode 100644 index 0000000..a366f80 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_falpha.lua @@ -0,0 +1,138 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_falpha_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_falpha_xmags"] = { + Name = "50 Round Mags", + Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 50 + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_falpha_xmags2"] = { + Name = "60 Round Mags", + Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_xmags2.mdl"), + Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_xmags2.vmt"), + Stats = function(self) + self.Primary.ClipSize = 60 + self.Animations.Reload_Empty = self.Animations.Reload_Empty_XmagLrg + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.89 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.89 + end +} + +MW_ATT_KEYS["attachment_vm_ar_falpha_barrel_muzzle"] = { + Name = "Compensator", + Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_barrel_muzzle.mdl"), + Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_muzzle.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_falpha_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_ar_falpha_barlong2"] = { + Name = "TAC FORGE Ultralight", + Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_barlong2.mdl"), + Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_barlong2.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.03 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.03 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.02 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.02 + end +} + +MW_ATT_KEYS["attachment_vm_ar_falpha_barrellong_alt"] = { + Name = "FR 24.4 Sniper", + Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_barrellong_alt.mdl"), + Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_barrellong.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.08 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.08 + end +} + +MW_ATT_KEYS["attachment_vm_ar_falpha_barshort"] = { + Name = "FR 15.9 Commando", + Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_barshort.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.95 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_falpha_stock"] = { + Name = "Default", + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_falpha_stock_light"] = { + Name = "FR Ultralight Hollow", + Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_stock_light.mdl"), + Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_stock_light_v1.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.02 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.02 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.97 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.97 + end +} + +MW_ATT_KEYS["attachment_vm_ar_falpha_stock_stable"] = { + Name = "FSS Tac-Wrap", + Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_stock_stable.mdl"), + Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_stock_stable_v1.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.05 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.05 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_falpha_stock_tactical_v1"] = { + Name = "FORGE TAC Ballast Pack", + Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_stock_tactical_v1.mdl"), + Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_stock_tactical_v1.vmt"), + Stats = function(self) + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.13 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.13 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_g3a3.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_g3a3.lua new file mode 100644 index 0000000..6f537c2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_g3a3.lua @@ -0,0 +1,24 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_magazine_g3_custom"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/attachment_vm_magazine_g3_custom.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_magazine_ext_g3_custom"] = { + Name = "30 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_magazine_ext_g3_custom.mdl"), + Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_mmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 30 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Cone.Hip = self.Cone.Hip * 0.95 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_galima.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_galima.lua new file mode 100644 index 0000000..9936663 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_galima.lua @@ -0,0 +1,191 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_galima_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_smag"] = { + Name = "M67 10-R Mags", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_smag.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_smag.vmt"), + Stats = function(self) + self.Primary.ClipSize = 10 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.15 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.15 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.2 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.2 + self.Animations.Reload = self.Animations.reload_smag + self.Animations.Reload_Empty = self.Animations.reload_empty_smag + self.Animations.Reload_Fast = self.Animations.reload_smag_fast + self.Animations.Reload_Empty_Fast = self.Animations.reload_empty_smag_fast + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_xmag"] = { + Name = "45 Round Mags", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_xmag.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_xmag.vmt"), + Stats = function(self) + self.Primary.ClipSize = 45 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_ar_galima_barlight"] = { + Name = "FSS 11.8 Squall", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_barlight.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_barrel_02.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.98 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.98 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.05 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.05 + self.Cone.Hip = self.Cone.Hip * 0.9 + self.Cone.Increase = self.Cone.Increase * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_barlong"] = { + Name = "XRK Zodiac S440", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_barlong.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.09 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.09 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_barshort"] = { + Name = "FSS 8.3 Intruder", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_barshort.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.9 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_stockl"] = { + Name = "FSS Close Quarters Stock", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stockl.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.09 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.09 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.05 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.05 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.05 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.05 + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_stockh"] = { + Name = "FTAC Hunter", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stockh.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stockh.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.91 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.91 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.91 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.91 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.87 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.87 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_stocks"] = { + Name = "FTAC Spartan", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stocks.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stock_02.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.03 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.03 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.05 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.05 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.02 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.02 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.02 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.02 + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_stockskel"] = { + Name = "CR-56 EXO", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stockskel.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stockskel.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.12 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.12 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.15 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.15 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.1 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.1 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.1 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_stocksn"] = { + Name = "XRK Gatekeeper", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stocksn.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stocksn.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.84 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.84 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.84 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.84 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.8 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.8 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.8 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_ar_galima_stockno"] = { + Name = "No Stock", + Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stockno.mdl"), + Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stockno.vmt"), + Stats = function(self) + self.Recoil.AdsMultiplier = 0.5 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.26 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.26 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.26 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.26 + self.Recoil.ViewModelMultiplier = 2.25 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_kilo433.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_kilo433.lua new file mode 100644 index 0000000..57c6b14 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_kilo433.lua @@ -0,0 +1,148 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_kilo433_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_kilo433_xmags"] = { + Name = "50 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 50 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.96 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.96 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_kilo433_drum_mag"] = { + Name = "100 Round Drums", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_drum_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_drum_mag.vmt"), + Stats = function(self) + self.Primary.ClipSize = 100 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_XmagLrg + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Inspect = self.Animations.Inspect_Drum + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.85 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.85 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.8 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.8 + + end +} + +MW_ATT_KEYS["attachment_vm_ar_kilo433_barrel_tip"] = { + Name = "Compensator", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_barrel_tip.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_pi_mike1911_muzzlebrake.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Cone.Hip = self.Cone.Hip * 0.8 + self.Cone.Ads = self.Cone.Ads * 1.03 + end +} + +MW_ATT_KEYS["attachment_vm_ar_kilo433_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_ar_kilo433_barshort"] = { + Name = "Singuard Arms 16.6 SOCOM", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_barshort.vmt"), + Stats = function(self) + --[[self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.263 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.263 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.93 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.93 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.93 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.93 + self.Cone.Hip = self.Cone.Hip * 1.225]] + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.05 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.05 + self.Cone.Hip = self.Cone.Hip * 0.92 + self.Cone.Ads = self.Cone.Ads * 0.92 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_kilo433_long_barrel"] = { + Name = "Singuard Arms 19.8 Prowler", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_long_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_long_barrel.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.1 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.1 + self.Cone.Hip = self.Cone.Hip * 0.88 + self.Cone.Ads = self.Cone.Ads * 0.88 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_kilo433_barsil"] = { + Name = "Singuard Arms Whisper", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_barsil.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_barsil.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.06 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.06 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.99 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.99 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.99 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.99 + end +} + +MW_ATT_KEYS["attachment_vm_ar_kilo433_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_kilo433_stock_heavy"] = { + Name = "Singuard Arms Sniper Pro", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_stock_heavy.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_stock_heavy.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.91 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.91 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.91 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.91 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.89 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.89 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.92 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.92 + end +} + +MW_ATT_KEYS["attachment_vm_ar_kilo433_stockno"] = { + Name = "No Stock", + Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_no.vmt"), + Stats = function(self) + self.Recoil.AdsMultiplier = 0.5 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.26 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.26 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.26 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.26 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_mcharlie.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_mcharlie.lua new file mode 100644 index 0000000..fa61e91 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_mcharlie.lua @@ -0,0 +1,150 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_mcharlie_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_mcharlie_magsub"] = { + Name = ".300 Blackout 30-Round Mags", + Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_magsub.mdl"), + Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_magsub.vmt"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.1 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.2 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.2 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.2 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.2 + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.1 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mcharlie_xmags"] = { + Name = "50 Round Mags", + Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 50 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mcharlie_xmags2"] = { + Name = "60 Round Mags", + Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_xmags2.mdl"), + Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_xmags2_clip.vmt"), + Stats = function(self) + self.Primary.ClipSize = 60 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_XmagLrg + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + self.Animations.Reload_Empty.Length = self.Animations.Reload_Empty.Length + 0.2 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mcharlie_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_barrel.mdl") +} + +MW_ATT_KEYS["attachment_vm_ar_mcharlie_shortbarrel"] = { + Name = "Tempus Mini", + Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_shortbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_shortbarrel.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.85 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.85 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.08 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.08 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.08 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.08 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mcharlie_longbarrel"] = { + Name = "Tempus Marksman", + Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_longbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_longbarrel.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.1 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.1 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.94 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.94 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Cone.Hip = self.Cone.Hip * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mcharlie_suppressorbarrel"] = { + Name = "Tempus Cyclone", + Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_suppressorbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_suppressorbarrel.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.08 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.08 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.97 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.97 + self.Cone.Hip = self.Cone.Hip * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mcharlie_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_mcharlie_lightstock"] = { + Name = "M13 Skeleton Stock", + Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_lightstock.mdl"), + Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_lightstock.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.15 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.15 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.15 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mcharlie_stock_v2"] = { + Name = "Lightweight Stock", + Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_stock_v3.mdl"), + Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_stock_v2.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.15 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.15 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.15 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.15 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.2 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.2 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.2 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.2 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_mike4.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_mike4.lua new file mode 100644 index 0000000..302ad36 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_mike4.lua @@ -0,0 +1,245 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_mike4_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +local function doCalConversionStats(self) + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + local bSup5 = self:HasAttachment("attachment_vm_ar_mike4_barsil") + local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_mag_v5") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then + self.Primary.Sound = Sound("mw19_mcharlie.fire.cal") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Primary.Ammo = "SMG1" + self.Shell = "mwb_shelleject_9mm" +end + +MW_ATT_KEYS["attachment_vm_ar_mike4_calsmg"] = { + Name = "9mm Para 32-Round Mags", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_calsmg.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_calsmg.vmt"), + Stats = function(self) + self.Primary.ClipSize = 32 + self.Animations.Reload = self.Animations.Reload_Calsmg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Calsmg + self.Animations.Reload_Fast = self.Animations.Reload_Calsmg_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Calsmg_Fast + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 0.7 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 0.8 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.6 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.6 + self.Primary.RPM = self.Primary.RPM * 1.25 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Cone.Increase = self.Cone.Increase * 0.5 + doCalConversionStats(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_xmags"] = { + Name = "50 Round Mags", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 50 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_mag_v5"] = { + Name = ".458 SOCOM 10-Round Mags", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_mag_v5.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_mag_v5.vmt"), + Stats = function(self) + self.Primary.ClipSize = 10 + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + self.Animations.Reload_Fast = self.Animations.Reload_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.25 + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.4 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.4 + self.Primary.RPM = self.Primary.RPM * 0.75 + doSocomConversionStats(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_carryhandle"] = { + Name = "Carry Handle", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_carryhandle.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_carryhandle.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_carryhandle_v18"] = { + Name = "Carry Handle", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_carryhandle_v18.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_carryhandle.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_xmags2"] = { + Name = "60 Round Mags", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_xmags2.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_xmags2.vmt"), + Stats = function(self) + self.Primary.ClipSize = 60 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_XmagLrg + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.85 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.85 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_barrel.mdl") +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_custombarrel"] = { + Name = "Corvus Custom Marksman", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_custombarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_barcust_mike4.vmt"), + Stats = function(self) + self.Cone.Hip = self.Cone.Hip * 0.95 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.92 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.92 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.94 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.94 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.1 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_mike203barrel"] = { + Name = "Stock M16 Grenadier", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_mike203barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_barmid_mike4.vmt"), + Stats = function(self) + self.Cone.Hip = self.Cone.Hip * 0.95 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.1 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_shortbarrel"] = { + Name = "FSS 11.5 Commando", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_shortbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_barshort_mike4.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.13 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.13 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.15 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.15 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.9 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_barrel_v3_alt"] = { + Name = "FSS 14.5 Tac Lite", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_barrel_v3_alt.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_bar_mike4_v03.vmt"), + Stats = function(self) + self.Cone.Hip = self.Cone.Hip * 0.95 + self.Cone.Ads = self.Cone.Ads * 0.95 + self.Cone.Increase = self.Cone.Increase * 0.85 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.07 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.07 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.05 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_barsil"] = { + Name = "FSS 12.4 Predator", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_barsil.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_barsil.vmt"), + Stats = function(self) + self.Cone.Hip = self.Cone.Hip * 0.95 + self.Cone.Ads = self.Cone.Ads * 0.95 + self.Cone.Increase = self.Cone.Increase * 0.85 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.05 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.04 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.04 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_stockno"] = { + Name = "No Stock", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_stockno.mdl"), + Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_no.vmt"), + Stats = function(self) + self.Recoil.AdsMultiplier = 0.5 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.26 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.26 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.26 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.26 + end +} + +MW_ATT_KEYS["attachment_vm_ar_mike4_customstock"] = { + Name = "M-16 Stock", + Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_customstock.mdl"), + Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_stockcust_mike4.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.86 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.86 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.86 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.86 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.89 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.89 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.92 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.92 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_oden.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_oden.lua new file mode 100644 index 0000000..e66be11 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_oden.lua @@ -0,0 +1,162 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_asierra12_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_asierra12_xmags"] = { + Name = "25 Round Mags", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 25 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_asierra12_xxmags"] = { + Name = "30 Round Mags", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_xxmags.mdl"), + Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_xxmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 30 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.85 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.85 + end +} + +MW_ATT_KEYS["attachment_vm_ar_asierra12_muzzlebrake"] = { + Name = "Muzzlebrake", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_muzzlebrake.mdl"), + Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_muzzlebrake01.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_asierra12_longsuppressor"] = { + Name = "Collosus Suppressor", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_longsuppressor.mdl"), + Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_longsuppressor.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.85 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.85 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.75 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.75 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.2 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.2 + end +} + + +MW_ATT_KEYS["attachment_vm_ar_asierra12_scope"] = { + Name = "Sniper Scope", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_scope.mdl"), + Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_scope.vmt"), + Optic = { + LensHideMaterial = Material("viper/MW/weapons/asierra12/weapon_vm_ar_asierra12_scopeglass.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 400, --a value of zero means 1:1 size with the end of the optic + Thermal = false + }, + Reticle = { + Material = Material("viper/mw/reticles/reticle_int_default.vmt"), + Size = 800, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" + }, + Stats = function(self) + --self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 3 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.89 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.89 + self.Zoom.ViewModelFovMultiplier = 0.95 + self.Zoom.FovMultiplier = 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_ar_asierra12_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_ar_asierra12_barshort"] = { + Name = "Oden Factory 420mm", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_barshort.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.06 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.06 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_ar_asierra12_barlong"] = { + Name = "Oden Factory 730mm", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_barlong.vmt"), + Stats = function(self) + self.Cone.Hip = self.Cone.Hip * 0.95 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.96 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.96 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.05 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.05 + end +} + +MW_ATT_KEYS["attachment_vm_ar_asierra12_barlong2"] = { + Name = "Oden Factory 810mm", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_barlong2.mdl"), + Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_barlong2.vmt"), + Stats = function(self) + self.Cone.Hip = self.Cone.Hip * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.91 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.91 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.13 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.13 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_asierra12_stock"] = { + Name = "Default", + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_asierra12_stockh"] = { + Name = "FORGE TAC Ballast Pack", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_stockh.mdl"), + Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_stockh.vmt"), + Stats = function(self) + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.13 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.13 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_asierra12_stockl"] = { + Name = "Oden Ultralight Hollow", + Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_stockl.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.02 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.02 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.97 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.97 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_scharlie.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_scharlie.lua new file mode 100644 index 0000000..d2c6b49 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_scharlie.lua @@ -0,0 +1,125 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_scharlie_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_scharlie_mmags"] = { + Name = "25 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_mmags.mdl"), + Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_mmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 25 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.97 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.97 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Animations.Reload.Length = self.Animations.Reload.Length + 0.067 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.95 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_scharlie_xmags"] = { + Name = "30 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_mag_ext.vmt"), + Stats = function(self) + self.Primary.ClipSize = 30 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.93 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.93 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.96 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.96 + self.Animations.Reload.Length = self.Animations.Reload.Length + 0.067 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.87 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.87 + end +} + +MW_ATT_KEYS["attachment_vm_ar_scharlie_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_ar_scharlie_barrel_long"] = { + Name = "FORGE TAC 20.0 LB", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_barrel_long.mdl"), + Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_barrel_long.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.1 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.1 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_scharlie_barrel_mid"] = { + Name = "FORGE TAC 17.2", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_barrel_mid.mdl"), + Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_barrel_mid.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.05 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.05 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_scharlie_barrel_pdw"] = { + Name = "FORGE TAC CQC Pro", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_barrel_pdw.mdl"), + Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_barrel_pdw.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.85 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.85 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_ar_scharlie_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_scharlie_stock_dmr"] = { + Name = "XRK Obelisk Pro", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_stock_dmr.mdl"), + Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_stock_dmr.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.9 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.9 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.9 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_scharlie_stock_light"] = { + Name = "FTAC Collapsible Stock", + Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_stock_light.mdl"), + Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_stock_light.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.19 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.19 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.12 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.12 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.75 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_sierra552.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_sierra552.lua new file mode 100644 index 0000000..d494cff --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_sierra552.lua @@ -0,0 +1,180 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_sierra552_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_xmags"] = { + Name = "50 Round Mags", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 50 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.92 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.92 + self.Animations.Reload = self.Animations.reload_mmag + self.Animations.Reload_Empty = self.Animations.reload_empty_mmag + self.Animations.Reload_Fast = self.Animations.reload_mmag_fast + self.Animations.Reload_Empty_Fast = self.Animations.reload_empty_mmag_fast + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_xmagslrg"] = { + Name = "60 Round Mags", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_xmagslrg.mdl"), + Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_xmagslrg.vmt"), + Stats = function(self) + self.Primary.ClipSize = 60 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.83 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.83 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.8 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.8 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.8 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.8 + + end +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_barlight"] = { + Name = "Barlight", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barlight.mdl"), + Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_barh.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.04 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.04 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.99 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.99 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.04 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.04 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.07 + end +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_barh"] = { + Name = "XRK CZEN mk2", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barh.mdl"), + Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_barh.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.06 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.06 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.08 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.08 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_barlong"] = { + Name = "FFS 20.8 Nexus", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_barlong.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.92 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.92 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.1 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.1 + self.Cone.Hip = self.Cone.Hip * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_barshort"] = { + Name = "ZLR Drifter A-08", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_barshort.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.12 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.12 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.15 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.15 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.87 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.87 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.95 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.95 + self.HoldType = "RifleWithVerticalGrip" + end +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_barxlong"] = { + Name = "Tempus 26.4 Archangel", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barxlong.mdl"), + Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_barxlong.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.8 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.8 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.8 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.8 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.2 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.2 + self.Cone.Hip = self.Cone.Hip * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_stockh"] = { + Name = "FSS Blackjack", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_stockh.mdl"), + Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_stockh.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.85 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.85 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.85 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.85 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.9 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.9 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.9 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_stockl"] = { + Name = "XRK StrikeLite III", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_stockl.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.06 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.06 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.18 + end +} + +MW_ATT_KEYS["attachment_vm_ar_sierra552_stockno"] = { + Name = "No Stock", + Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_stockno.mdl"), + Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_stockno.vmt"), + Stats = function(self) + self.Recoil.AdsMultiplier = 0.5 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.26 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.26 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.26 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.26 + self.Recoil.ViewModelMultiplier = 2.25 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_tango21.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_tango21.lua new file mode 100644 index 0000000..003c5d7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_tango21.lua @@ -0,0 +1,148 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_tango21_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_tango21_xmags"] = { + Name = "50 Round Mags", + Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 50 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.93 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.93 + self.Animations.Reload = self.Animations.reload_xmag + self.Animations.Reload_Empty = self.Animations.reload_empty_xmag + self.Animations.Reload_Fast = self.Animations.reload_xmag_fast + self.Animations.Reload_Empty_Fast = self.Animations.reload_empty_xmag_fast + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_tango21_drummag"] = { + Name = "60 Round 9mm Drum", + Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_drummag.mdl"), + Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_drummag.vmt"), + Stats = function(self) + self.Primary.ClipSize = 60 + self.Primary.RPM = 1000 + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 0.85 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 0.85 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.5 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.5 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.5 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.5 + self.Animations.Reload = self.Animations.reload_drum + self.Animations.Reload_Empty = self.Animations.reload_empty_drum + self.Animations.Reload_Fast = self.Animations.reload_drum_fast + self.Animations.Reload_Empty_Fast = self.Animations.reload_empty_drum_fast + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.6 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.6 + doCalConversionStats(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_tango21_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_ar_tango21_barrel_long"] = { + Name = "FSS Ranger", + Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_barrel_long.mdl"), + Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_barrel_long.vmt"), + Stats = function(self) + self.Cone.Hip = self.Cone.Hip * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.06 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.06 + end +} + +MW_ATT_KEYS["attachment_vm_ar_tango21_barrel_med"] = { + Name = "FORGE TAC Eclipse", + Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_barrel_med.mdl"), + Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_barrel_med.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.03 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.03 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_tango21_barrel_short"] = { + Name = "FTAC 13.5 Compact", + Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_barrel_short.mdl"), + Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_barrel_short.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.92 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.92 + end +} + +MW_ATT_KEYS["attachment_vm_ar_tango21_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_tango21_stock_heavy"] = { + Name = "XRK Close Quarters Stock", + Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_stock_heavy.mdl"), + Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_stock_heavy.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_ar_tango21_stock_light"] = { + Name = "XRK Ultralight Hollow", + Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_stock_light.mdl"), + Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_stock_light.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.95 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.95 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.07 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.07 + end +} + +MW_ATT_KEYS["attachment_vm_ar_tango21_stock_tactical"] = { + Name = "FTAC Equilibrium", + Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_stock_tactical.mdl"), + Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_stock_tactical.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.06 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.06 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.9 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_ar_valpha.lua b/lua/weapons/mg_base/modules/attachments/attachments_ar_valpha.lua new file mode 100644 index 0000000..b677b25 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_ar_valpha.lua @@ -0,0 +1,194 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_ar_valpha_scope"] = { + Name = "Dragunov Scope", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_scope.mdl"), + Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_scope.vmt"), + Optic = { + LensHideMaterial = Material("viper/MW/weapons/valpha/weapon_vm_sn_delta_scope_lens.vmt"), + LensBodygroup = "lens", + FOV = 5, + ParallaxSize = 700, --a value of zero means 1:1 size with the end of the optic + Thermal = false + }, + Reticle = { + Material = Material("viper/shared/reticles/po4x_crosshair_remake"), + Size = 2500, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" + }, + Stats = function(self) + --self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.89 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Zoom.ViewModelFovMultiplier = 0.95 + self.Zoom.FovMultiplier = 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_smags"] = { + Name = "SPP 10-R Mags", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_smags.mdl"), + Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_smags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 10 + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.33 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.33 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.25 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.25 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.07 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.07 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.12 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.12 + self.Animations.Reload = self.Animations.reload_smag + self.Animations.Reload_Empty = self.Animations.reload_empty_smag + self.Animations.Reload_Fast = self.Animations.reload_smag_fast + self.Animations.Reload_Empty_Fast = self.Animations.reload_empty_smag_fast + self.Animations.Inspect = self.Animations.inspect_smag + end +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_xmags"] = { + Name = "30 Round Mags", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 30 + self.Animations.Reload = self.Animations.reload_xmag + self.Animations.Reload_Empty = self.Animations.reload_empty_xmag + self.Animations.Reload_Fast = self.Animations.reload_xmag_fast + self.Animations.Reload_Empty_Fast = self.Animations.reload_empty_xmag_fast + self.Animations.Inspect = self.Animations.inspect_xmag + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_barhvy"] = { + Name = "VLK 200mm Osa", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_barhvy.mdl"), + Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_barhvy.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.07 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.07 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.08 + end +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_barlight"] = { + Name = "VLK 105mm Sova", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_barlight.mdl"), + Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_barlight.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.12 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.12 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.13 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.13 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.125 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.95 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_barshort"] = { + Name = "Stovl SOF", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_barshort.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.17 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.17 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.2 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.2 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.125 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.9 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_stockh"] = { + Name = "VLK Vintazh", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_stockh.mdl"), + Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_stockh.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.88 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.88 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.91 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.91 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.91 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.91 + end +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_stocks"] = { + Name = "FSS Intl. Gen 4 GRU", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_stocks.mdl"), + Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_stocks.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.09 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.09 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.05 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.05 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.05 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.05 + end +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_stockskel"] = { + Name = "Stovl 6P30 Skelet", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_stockskel.mdl"), + Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_stockskel.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.13 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.13 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.08 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.08 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.11 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.11 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.11 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.11 + end +} + +MW_ATT_KEYS["attachment_vm_ar_valpha_stocksn"] = { + Name = "VLK Strelok", + Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_stocksn.mdl"), + Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_stocksn.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.84 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.84 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.82 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.82 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.83 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.83 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.83 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.83 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_pi_cpapa.lua b/lua/weapons/mg_base/modules/attachments/attachments_pi_cpapa.lua new file mode 100644 index 0000000..8b2634a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_pi_cpapa.lua @@ -0,0 +1,81 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_pi_cpapa_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_barrel.vmt") +} + +MW_ATT_KEYS["attachment_vm_pi_cpapa_barrel_long"] = { + Name = ".357 Long", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_barrel_long.mdl"), + Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_barrel_long.vmt"), + Stats = function(self) + self.Cone.Hip = self.Cone.Hip * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.08 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.08 + end +} + +MW_ATT_KEYS["attachment_vm_pi_cpapa_shortbarrel"] = { + Name = ".357 Snub Nose", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_shortbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_shortbarrel.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.13 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.13 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.9 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_pi_cpapa_barrel_v2"] = { + Name = "Silverfield Ordnance .357", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_barrel_v2.mdl"), + Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_barrel_v2.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 0.85 + end +} + +MW_ATT_KEYS["attachment_vm_pi_cpapa_grip"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_grip.mdl"), + Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_grip.vmt") +} + +MW_ATT_KEYS["attachment_vm_pi_cpapa_grip_stock"] = { + Name = "Lockwood .357 Custom Stock", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_grip_stock.mdl"), + Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_grip_stock.vmt"), + Stats = function(self) + self:SetViewModel("models/viper/mw/weapons/v_357_stock.mdl") + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.8 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.8 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.8 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.8 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 0.5 + end +} + +MW_ATT_KEYS["attachment_vm_pi_cpapa_stockl"] = { + Name = "FSS Raider Stock", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_stockl.vmt"), + Stats = function(self) + self:SetViewModel("models/viper/mw/weapons/v_357_stock.mdl") + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.88 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.88 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.88 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.88 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 0.65 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_pi_decho.lua b/lua/weapons/mg_base/modules/attachments/attachments_pi_decho.lua new file mode 100644 index 0000000..da7ceea --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_pi_decho.lua @@ -0,0 +1,110 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_pi_decho_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_mag.vmt"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_pi_decho_xmags"] = { + Name = "10 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 10 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.95 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_pi_decho_xmags2"] = { + Name = "13 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_xmags2.mdl"), + Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_xmags2.vmt"), + Stats = function(self) + self.Primary.ClipSize = 13 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_XmagLrg + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.93 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.93 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_pi_decho_muzzlebrake"] = { + Name = "Muzzle Brake", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_muzzlebrake.mdl"), + Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_muzzlebrake.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 0.85 + end +} + +MW_ATT_KEYS["attachment_vm_pi_decho_slide"] = { + Name = "Default Slide", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_slide.mdl"), + Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_slide.vmt"), +} + +MW_ATT_KEYS["attachment_vm_pi_decho_slide_extended02"] = { + Name = "FORGE TAC Enforcer", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_slide_extended02.mdl"), + Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_slide_extended02.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.03 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_pi_decho_slide_extended"] = { + Name = "FORGE TAC Extended", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_slide_extended.mdl"), + Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_slide_extended.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.12 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.85 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.85 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.85 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.85 + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.1) + self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, -0.2) + end +} + +MW_ATT_KEYS["attachment_vm_pi_decho_grip"] = { + Name = "Default Grip", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_grip.mdl"), + Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_grip.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_pi_decho_cust_grip"] = { + Name = "Rubberized Grip", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_cust_grip.mdl"), + Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_pistolgrip_tape_v2.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_pi_golf21.lua b/lua/weapons/mg_base/modules/attachments/attachments_pi_golf21.lua new file mode 100644 index 0000000..bcc9863 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_pi_golf21.lua @@ -0,0 +1,109 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_pi_golf21_slide_black"] = { + Name = "Vanguard Elite", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_slide_black.mdl"), + Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_slide.vmt"), + Stats = function(self) + self.Firemodes[1].Name = "3rnd Burst" + self.Primary.RPM = 1200 + self.Primary.BurstRounds = 3 + self.Primary.BurstDelay = 0.2 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 5 + end +} + +MW_ATT_KEYS["attachment_vm_pi_golf21_slide_long"] = { + Name = "Singuard Arms Advantage", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_slide_long.mdl"), + Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_slide_long.vmt"), + Stats = function(self) + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.04 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.04 + self.Primary.RPM = self.Primary.RPM + 100 + end +} + +MW_ATT_KEYS["attachment_vm_pi_golf21_slide_auto"] = { + Name = "Singuard Arms Featherweight", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_slide_auto.mdl"), + Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_slide_auto.vmt"), + Stats = function(self) + self.Firemodes[1].Name = "Full Auto" + self.Primary.Automatic = true + self.Primary.RPM = 1200 + self.Cone.Max = 2 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 5 + end +} + +MW_ATT_KEYS["attachment_vm_pi_golf21_slide"] = { + Name = "Default Slide", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_slide.mdl"), + Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_pi_golf21_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_mag.vmt"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_pi_golf21_mag_xmags"] = { + Name = "17 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_mag_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_mag_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 17 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_pi_golf21_mag_xmags2"] = { + Name = "26 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_mag_xmags2.mdl"), + Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_mag_xmags2.vmt"), + Stats = function(self) + self.Primary.ClipSize = 26 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.85 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.85 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_pi_golf21_stock"] = { + Name = "X16 Stock", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_stock.mdl"), + Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_stock.vmt"), + Stats = function(self) + self:SetViewModel("models/viper/mw/weapons/v_glock_stock.mdl") + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.05) + self.ViewModelOffsets.Idle.Pos = Vector(-0.15, -0.5, -0.5) + self.Zoom.Blur.EyeFocusDistance = 10 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.85 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.85 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 0.5 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_pi_mike.lua b/lua/weapons/mg_base/modules/attachments/attachments_pi_mike.lua new file mode 100644 index 0000000..d495e7b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_pi_mike.lua @@ -0,0 +1,164 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_pi_mike_barlight"] = { + Name = "SSB 105mm", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_barlight.mdl"), + Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_barlight.vmt"), + Stats = function(self) + end +} +MW_ATT_KEYS["attachment_vm_pi_mike_barsil"] = { + Name = "SSL 308mm", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_barsil.mdl"), + Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_barsil.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.1 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Cone.Hip = self.Cone.Hip * 0.9 + end +} +MW_ATT_KEYS["attachment_vm_pi_mike_barauto"] = { + Name = "Sorokin 140mm Auto", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_barauto.mdl"), + Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_barauto.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Recoil.Shake = self.Recoil.Shake * 1.3 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 2 + self.Cone.Max = self.Cone.Max * 1.5 + self.Primary.Automatic = true + self.Primary.RPM = 800 + self.Firemodes[1].Name = "Full Auto" + self.PrintName = "Sorokin" + end +} +MW_ATT_KEYS["attachment_vm_pi_mike_barrel"] = { + Name = "Default Slide", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_barrel.mdl") +} + +MW_ATT_KEYS["attachment_vm_pi_mike_grip"] = { + Name = "Default Grip", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_grip.mdl"), + Stats = function(self) + end +} +MW_ATT_KEYS["attachment_vm_pi_mike_pistolgrip01"] = { + Name = "VLK Spetznaz", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_pistolgrip01.mdl"), + Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_pistolgrip01.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.9 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.9 + end +} +MW_ATT_KEYS["attachment_vm_pi_mike_pistolgrip02"] = { + Name = "VLK Prizrak", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_pistolgrip02.mdl"), + Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_pistolgrip02.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.05 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.05 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.1 + end +} +MW_ATT_KEYS["attachment_vm_pi_mike_pistolgrip03"] = { + Name = "VLK Elita", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_pistolgrip03.mdl"), + Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_pistolgrip03.vmt"), + Stats = function(self) + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.08 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_mag.vmt"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} +MW_ATT_KEYS["attachment_vm_pi_mike_xmags"] = { + Name = "20 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 20 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Inspect = self.Animations.Inspect_Xmag + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + end +} +MW_ATT_KEYS["attachment_vm_pi_mike_drummag"] = { + Name = "80 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_drummag.mdl"), + Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_drummag.vmt"), + Stats = function(self) + self.Primary.ClipSize = 80 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_XmagLrg + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Inspect = self.Animations.Inspect_Drum + self.Animations.Equip = self.Animations.Equip_Drum + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.65 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.65 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.7 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.7 + self.Animations.Reload_XmagLrg.Fps = self.Animations.Reload_XmagLrg.Fps * 0.9 + self.Animations.Reload_Empty_XmagLrg.Fps = self.Animations.Reload_Empty_XmagLrg.Fps * 0.8 + self.Animations.Reload_XmagLrg_Fast.Fps = self.Animations.Reload_XmagLrg.Fps * 0.9 + self.Animations.Reload_Empty_XmagLrg_Fast.Fps = self.Animations.Reload_Empty_XmagLrg.Fps * 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike_stockl"] = { + Name = "PP-Skelet", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_stockl.vmt"), + Stats = function(self) + self:SetViewModel("models/viper/mw/weapons/v_makarov_stock.mdl") + self.Animations.Equip = self.Animations.Equip_Stock + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.15, 0, 0) + self.Recoil.Shake = self.Recoil.Shake * 0.74 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.85 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.85 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 0.5 + self.Zoom.Blur.EyeFocusDistance = 7 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike_stockh"] = { + Name = "PP-Karabin", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_stockh.mdl"), + Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_stockh.vmt"), + Stats = function(self) + self:SetViewModel("models/viper/mw/weapons/v_makarov_stock.mdl") + self.Animations.Equip = self.Animations.Equip_Stock + self.Recoil.Shake = self.Recoil.Shake * 0.74 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.85 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.85 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 0.5 + self.Zoom.Blur.EyeFocusDistance = 7 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_pi_mike1911.lua b/lua/weapons/mg_base/modules/attachments/attachments_pi_mike1911.lua new file mode 100644 index 0000000..0e77ca4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_pi_mike1911.lua @@ -0,0 +1,105 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_pi_mike1911_v1_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_v1_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_v1_mag.vmt"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike1911_mmags"] = { + Name = "10 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_mmags.mdl"), + Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_mmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 10 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.93 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.93 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike1911_xmags"] = { + Name = "15 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 15 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_XmagLrg + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.88 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.88 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.95 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike1911_muzzlebrake"] = { + Name = "Muzzle Brake", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_muzzlebrake.mdl"), + Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_muzzlebrake.vmt"), + Stats = function(self) + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.98 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.98 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.98 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.98 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike1911_v1_slide"] = { + Name = "Default Slide", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_v1_slide.mdl"), + Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_pi_mike1911_barlong"] = { + Name = ".45 Match Grade", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_barlong.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.05 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.05 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.94 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.94 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike1911_barshort"] = { + Name = ".45 Compact", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_barshort.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.96 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.96 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.05 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.05 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.07 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.07 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike1911_v2_slide"] = { + Name = "1911 Stalker", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_v2_slide.mdl"), + Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_v2_slide.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.02 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.02 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.97 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.97 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_pi_mike9.lua b/lua/weapons/mg_base/modules/attachments/attachments_pi_mike9.lua new file mode 100644 index 0000000..29383a0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_pi_mike9.lua @@ -0,0 +1,172 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_pi_mike9_barauto"] = { + Name = "Mk3 Burst Mod", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_barauto.mdl"), + Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_barauto.vmt"), + Stats = function(self) + self.Primary.RPM = 1000 + self.Primary.BurstRounds = 3 + self.Primary.BurstDelay = 0.2 + self.Firemodes[1].Name = "3rnd Burst" + self.Recoil.Shake = self.Recoil.Shake * 1.3 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 2.5 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_barlight"] = { + Name = "Mk1 Competition", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_barlight.mdl"), + Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_barlight.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Cone.Increase = self.Cone.Increase * 0.5 + self.Cone.Hip = self.Cone.Hip * 0.5 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_barlong"] = { + Name = "Mk1 Extended", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_barlong.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.07 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.07 + self.Cone.Hip = self.Cone.Hip * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.85 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.85 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_barrel"] = { + Name = "Default Slide (Tan)", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_barrel.mdl") +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_barrel_black"] = { + Name = "Default Slide (Black)", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_barrel_black.mdl"), + Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_barrel.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_xmags"] = { + Name = "21 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_xmagslrg.vmt"), + Stats = function(self) + self.Primary.ClipSize = 21 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_compensator"] = { + Name = "Compensator", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_compensator.mdl"), + Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_compensator_v2.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Cone.Hip = self.Cone.Hip * 0.9 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.05 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.05 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_xmagslrg"] = { + Name = "27 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_xmagslrg.mdl"), + Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_xmagslrg_v2.vmt"), + Stats = function(self) + self.Primary.ClipSize = 27 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_XmagLrg + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.85 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.85 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_stock"] = { + Name = "FTAC Satus CS-3", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_stock.mdl"), + Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_stock.vmt"), + Stats = function(self) + self:SetViewModel("models/viper/mw/weapons/v_m9_stock.mdl") + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.16, 0, 0) + --self.Recoil.Shake = self.Recoil.Shake * 0.74 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.85 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.85 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 0.5 + self.Zoom.Blur.EyeFocusDistance = 11 + end +} + +MW_ATT_KEYS["no_pistgrip"] = { + Name = "Default Pistolgrip", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_pgrip.mdl"), +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_pstlgrpcust"] = { + Name = "XRK Pro Grip", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_pstlgrpcust.mdl"), + Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_pstlgrpcust.vmt"), + Stats = function(self) + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_pstlgrplght"] = { + Name = "XRK Speed Grip", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_pstlgrplght.mdl"), + Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_pstlgrplght.vmt"), + Stats = function(self) + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.2 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.07 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.07 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_pi_mike9_gripvert"] = { + Name = "Folding Grip", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_gripvert.mdl"), + Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_pstlgrpcust_v2.vmt"), + Stats = function(self) + self:SetGripPoseParameter("grip_offset") + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.85 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.85 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.93 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.93 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.93 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.93 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_pi_papa320.lua b/lua/weapons/mg_base/modules/attachments/attachments_pi_papa320.lua new file mode 100644 index 0000000..05c4204 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_pi_papa320.lua @@ -0,0 +1,85 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_pi_papa320_slide_black"] = { + Name = "XRK L Super", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_slide_black.mdl"), + Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_slide.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_pi_papa320_slide_vented"] = { + Name = "A9-16 Lightweight", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_slide_vented.mdl"), + Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_slide.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.02 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.02 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.97 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.97 + end +} + +MW_ATT_KEYS["attachment_vm_pi_papa320_barrel_ext"] = { + Name = "XRK V Extended", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_barrel_ext.mdl"), + Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_barrel_ext.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.05 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.05 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.94 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.94 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_pi_papa320_slide"] = { + Name = "Default Slide", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_slide.mdl"), + Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_pi_papa320_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_mag.vmt"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_pi_papa320_mag_ext"] = { + Name = "21 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_mag_ext.mdl"), + Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_mag_ext.vmt"), + Stats = function(self) + self.Primary.ClipSize = 21 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload_Fast = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Xmag_Fast + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.93 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.93 + end +} + +MW_ATT_KEYS["attachment_vm_pi_papa320_mag_ext2"] = { + Name = "32 Round Mags", + Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_mag_ext2.mdl"), + Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_mag_ext2.vmt"), + Stats = function(self) + self.Primary.ClipSize = 32 + self.Animations.Reload = self.Animations.Reload_XmagLrg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_XmagLrg + self.Animations.Reload_Fast = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.88 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.88 + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.95 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.95 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sh_aalpha12.lua b/lua/weapons/mg_base/modules/attachments/attachments_sh_aalpha12.lua new file mode 100644 index 0000000..9bdde12 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sh_aalpha12.lua @@ -0,0 +1,142 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sh_aalpha12_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_sh_aalpha12_barlong"] = { + Name = "ZLR J-3600 Torrent", + Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_barlong.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Cone.Hip = weapon.Cone.Hip * 0.85 + weapon.Cone.Ads = weapon.Cone.Ads * 0.85 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_sh_aalpha12_barhvy"] = { + Name = "ZLR J-2800 Influx", + Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_barhvy.mdl"), + Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_barhvy.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.08 + end +} + +MW_ATT_KEYS["attachment_vm_sh_aalpha12_barshort"] = { + Name = "JAK Urban King", + Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_barshort.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Cone.Hip = weapon.Cone.Hip * 1.2 + weapon.Cone.Ads = weapon.Cone.Ads * 1.2 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sh_aalpha12_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_mag.mdl"), + Stats = function(weapon) + end +} + +MW_ATT_KEYS["attachment_vm_sh_aalpha12_slugmag"] = { + Name = "12g Mags", + Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_slugmag.mdl"), + Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_slugmag.vmt"), + Stats = function(weapon) + if (weapon:HasAttachment("sh_flechette")) then + return + end + + weapon.Bullet.NumBullets = 6 + end +} + +MW_ATT_KEYS["attachment_vm_sh_aalpha12_drummag"] = { + Name = "32 Round Drum Mags", + Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_drummag.mdl"), + Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_drummag.vmt"), + Stats = function(weapon) + weapon.Primary.ClipSize = 32 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.7 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.7 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.7 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.7 + weapon.Animations.Reload = weapon.Animations.reload_drum + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_drum + weapon.Animations.Inspect = weapon.Animations.inspect_drum + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.8 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_sh_aalpha12_xmags"] = { + Name = "20 Round Drum Mags", + Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_xmags.vmt"), + Stats = function(weapon) + weapon.Primary.ClipSize = 20 + weapon.Animations.Reload = weapon.Animations.reload_drum + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_drum + weapon.Animations.Inspect = weapon.Animations.inspect_drum + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.84 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.84 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sh_aalpha12_stockh"] = { + Name = "ZLR Tsunami", + Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_stockh.mdl"), + Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_stockh.vmt"), + Stats = function(weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.8 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sh_aalpha12_stockl"] = { + Name = "JAK Rabbit Ultralight", + Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_stockl.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.25 + end +} + +MW_ATT_KEYS["attachment_vm_sh_aalpha12_stocks"] = { + Name = "FSS Power Wrap", + Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_stocks.mdl"), + Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_stocks.vmt"), + Stats = function(weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.12 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.12 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sh_charlie725.lua b/lua/weapons/mg_base/modules/attachments/attachments_sh_charlie725.lua new file mode 100644 index 0000000..3b877db --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sh_charlie725.lua @@ -0,0 +1,265 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sh_charlie725_choke"] = { + Name = "Choke", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_choke.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_choke.vmt"), + Stats = function(self) + weapon.Cone.Hip = weapon.Cone.Hip * 0.88 + weapon.Cone.Ads = weapon.Cone.Ads * 0.88 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_comp"] = { + Name = "Compensator", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_comp.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_comp.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.76 + weapon.Cone.Ads = weapon.Cone.Ads * 0.76 + + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_muzzlebrake"] = { + Name = "Muzzle Brake", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_muzzlebrake.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_muzzlebrake.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_muzzlemelee"] = { + Name = "Breacher Device", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_muzzlemelee.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_muzzlemelee.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Animations.Melee_Hit.Damage = weapon.Animations.Melee_Hit.Damage * 1.5 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_flashhider"] = { + Name = "Flash Guard", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_flashhider.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_flashhider.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_silencer01"] = { + Name = "Lightweight Suppressor", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_silencer01.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_silencer01.vmt"), + Stats = function(self) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.02 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_silencer02"] = { + Name = "Monolithic Suppressor", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_silencer02.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_silencer02.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_silencer03"] = { + Name = "Tactical Suppressor", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_silencer03.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_silencer03.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.99 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.98 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.98 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.98 + end +} + + +MW_ATT_KEYS["attachment_vm_sh_charlie725_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_barrel_long"] = { + Name = "Tempus 32 Competition", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_barrel_long.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_barrel_long.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_barrel_mid"] = { + Name = "Tempus Smooth Bore", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_barrel_mid.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_barrel_mid.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.05 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.05 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.94 + weapon.Cone.Hip = weapon.Cone.Hip * 1.1 + weapon.Cone.Ads = weapon.Cone.Ads * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_barrel_sawnoff"] = { + Name = "Sawed-off Barrel", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_barrel_sawnoff.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_barrel_sawnoff.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.15 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.15 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.8 + weapon.Cone.Hip = weapon.Cone.Hip * 1.5 + weapon.Cone.Ads = weapon.Cone.Ads * 1.5 + end +} + + +MW_ATT_KEYS["attachment_vm_sh_charlie725_guard"] = { + Name = "attachment_vm_sh_charlie725_guard", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_guard.mdl"), + Stats = function(self) + end +} + + +MW_ATT_KEYS["attachment_vm_sh_charlie725_foreendlight"] = { + Name = "FORGE TAC Grip", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_foreendlight.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_foreendlight.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_forendstable"] = { + Name = "FORGE TAC Steady Grip", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_forendstable.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_forendstable.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_forendtactical"] = { + Name = "FORGE TAC Commander", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_forendtactical.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_forendtactical.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.05 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.05 + end +} + + +MW_ATT_KEYS["attachment_vm_ar_charlie725_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_stock_sawnoff"] = { + Name = "Sawed-off Stock", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_stock_sawnoff.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_stock_sawnoff.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Recoil.AdsMultiplier = 1 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_stocklight"] = { + Name = "Cronen Pro Light", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_stocklight.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_stocklight.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Recoil.AdsMultiplier = 0.5 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_stockstable"] = { + Name = "Cronen Equilibrium", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_stockstable.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_stockstable.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sh_charlie725_stocktactical"] = { + Name = "Tempus Sport", + Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_stocktactical.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_stocktactical.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.87 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.87 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sh_dpapa12.lua b/lua/weapons/mg_base/modules/attachments/attachments_sh_dpapa12.lua new file mode 100644 index 0000000..80d5789 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sh_dpapa12.lua @@ -0,0 +1,218 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_barmid"] = { + Name = "FORGE TAC Gemini", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_barmid.mdl"), + Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_barmid.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.06 + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_barlong"] = { + Name = "FORGE TAC Sentry", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_barlong.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_barshort"] = { + Name = "6 Revolt", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_barshort.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.8 + end +} --Doesn't exist in the game, but in the files. + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_ammo"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_ammo.mdl"), + Stats = function(weapon) + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_grip"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_grip.mdl"), + Stats = function(weapon) + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_pump"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_pump.mdl"), + Stats = function(weapon) + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_pump_light"] = { + Name = "FTAC Ultralight Pump", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_pump_light.mdl"), + Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_pump_light.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.15 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_pump_stable"] = { + Name = "FSS R9-0 Bulldog", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_pump_stable.mdl"), + Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_pump_stable.vmt"), + Stats = function(weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.7 + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 0.85 + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_pump_tactical"] = { + Name = "FTAC Close Quarters Pro", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_pump_tactical.mdl"), + Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_pump_tactical.vmt"), + Stats = function(weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.4 + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 1.2 + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_choke"] = { + Name = "Choke", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_choke.mdl"), + Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_sh_romeo870_choke.vmt"), + Stats = function(weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.88 + weapon.Cone.Ads = weapon.Cone.Ads * 0.88 + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_comp"] = { + Name = "Compensator", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_comp.mdl"), + Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_compensator_shgn01.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.76 + weapon.Cone.Ads = weapon.Cone.Ads * 0.76 + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_muzzlebrake"] = { + Name = "Muzzle Brake", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_muzzlebrake.mdl"), + Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_muzzlebrake_shgn01.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_muzzlemelee"] = { + Name = "Breacher Device", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_muzzlemelee.mdl"), + Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_muzzlemelee_shgn01.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Animations.Melee_Hit.Damage = weapon.Animations.Melee_Hit.Damage * 1.5 + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_flashhider"] = { + Name = "Flash Guard", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_flashhider.mdl"), + Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_flashhider_shtgn01.vmt"), + Stats = function(weapon) + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_silencer01"] = { + Name = "Lightweight Suppressor", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_silencer02.mdl"), + Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_silencer02.vmt"), + Stats = function(weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.02 + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_silencer02"] = { + Name = "Monolithic Suppressor", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_silencer01.mdl"), + Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_silencer01.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + end +} + +MW_ATT_KEYS["attachment_vm_sh_dpapa12_silencer03"] = { + Name = "Tactical Suppressor", + Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_silencer03.mdl"), + Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_silencer03.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.99 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.98 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + + + end +} + +--experimental +MW_ATT_KEYS["attachment_vm_vertgrip_stubby02_dpapa12"] = { + Name = "Foregrip", + Model = Model("models/viper/mw/attachments/attachment_vm_vertgrip_stubby02.mdl"), + Icon = Material("viper/mw/attachments/icons/grips/icon_attachment_vertgrip_stubby02.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_vertgrip_stubby04_dpapa12"] = { + Name = "Operator Foregrip", + Model = Model("models/viper/mw/attachments/attachment_vm_vertgrip_stubby04.mdl"), + Icon = Material("viper/mw/attachments/icons/grips/icon_attachment_vertgrip_stubby04.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sh_mike26.lua b/lua/weapons/mg_base/modules/attachments/attachments_sh_mike26.lua new file mode 100644 index 0000000..f2ec542 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sh_mike26.lua @@ -0,0 +1,142 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sh_mike26_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sh_mike26_barheavy"] = { + Name = "VLK Czar", + Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_barheavy.mdl"), + Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_barheavy.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Cone.Hip = weapon.Cone.Hip * 0.7 + weapon.Cone.Ads = weapon.Cone.Ads * 0.7 + end +} + +MW_ATT_KEYS["attachment_vm_sh_mike26_barlong"] = { + Name = "16 Warlord", + Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_barlong.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sh_mike26_barshort"] = { + Name = "6 Revolt", + Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_barshort.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Cone.Hip = weapon.Cone.Hip * 1.5 + weapon.Cone.Ads = weapon.Cone.Ads * 1.5 + end +} + +MW_ATT_KEYS["attachment_vm_sh_mike26_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_mag.mdl"), + Stats = function(weapon) + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + end +} + +-- MW_ATT_KEYS["attachment_vm_sh_mike26_slugmag"] = { +-- Name = "Default Magazine", +-- Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_slugmag.mdl"), +-- Stats = function(weapon) +-- weapon.Animations.Reload = weapon.Animations.Reload +-- weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty +-- end +-- } + +-- MW_ATT_KEYS["attachment_vm_sh_mike26_dbmag"] = { +-- Name = "Default Magazine", +-- Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_dbmag.mdl"), +-- Stats = function(weapon) +-- weapon.Animations.Reload = weapon.Animations.Reload +-- weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty +-- end +-- } + +MW_ATT_KEYS["attachment_vm_sh_mike26_smag"] = { + Name = "4 Round Mags", + Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_smag.mdl"), + Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_smag.vmt"), + Stats = function(weapon) + weapon.Animations.Reload = weapon.Animations.reload_smag + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_smag + weapon.Primary.ClipSize = 4 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_sh_mike26_xmag"] = { + Name = "12 Round Mags", + Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_xmag.mdl"), + Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_xmag.vmt"), + Stats = function(weapon) + weapon.Primary.ClipSize = 12 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Reload = weapon.Animations.reload_xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + end +} + +MW_ATT_KEYS["attachment_vm_sh_mike26_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_stock.mdl"), + Stats = function(weapon) + end +} + +MW_ATT_KEYS["attachment_vm_sh_mike26_pumphandle"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_pumphandle.mdl"), + Stats = function(weapon) + end +} + +MW_ATT_KEYS["attachment_vm_sh_mike26_pumpl"] = { + Name = "XRK Race Grip", + Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_pumpl.mdl"), + Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_pumpl.vmt"), + Stats = function(weapon) + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 1.25 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + end +} + +MW_ATT_KEYS["attachment_vm_sh_mike26_pumph"] = { + Name = "VLK Prime Pump Grip", + Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_pumph.mdl"), + Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_pumph.vmt"), + Stats = function(weapon) + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 0.8 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sh_oscar12.lua b/lua/weapons/mg_base/modules/attachments/attachments_sh_oscar12.lua new file mode 100644 index 0000000..851217b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sh_oscar12.lua @@ -0,0 +1,217 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sh_oscar12_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_barrellong"] = { + Name = "FORGE TAC Impaler", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_barrellong.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_barrellong.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.8 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Cone.Hip = weapon.Cone.Hip * 0.85 + weapon.Cone.Ads = weapon.Cone.Ads * 0.85 + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_barrelmid"] = { + Name = "FORGE TAC Precision", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_barrelmid.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_barrelmid.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_barrelshort"] = { + Name = "FORGE TAC Wideshot", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_barrelshort.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_barrelshort.vmt"), + Stats = function(weapon) + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.03 + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_suppressor"] = { + Name = "Monolithic Suppressor", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_suppressor.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_suppressor.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_silencer02"] = { + Name = "Tactical Suppressor", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_silencer03.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_silencer03.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.99 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.98 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + + + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_silencer03"] = { + Name = "Lightweight Suppressor", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_silencer02.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_silencer02.vmt"), + Stats = function(weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.02 + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_mag.mdl"), + Stats = function(weapon) + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_slug_mag"] = { + Name = "8 Round Slug Mags", --not worth the hassle as it's just an elastic band with the word "SLUGS" on it + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_slug_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_slug_mag.vmt"), + Stats = function(weapon) + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_drummag"] = { + Name = "26 Round Drum Mags", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_drummag.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_drummag.vmt"), + Stats = function(weapon) + weapon.Primary.ClipSize = 26 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.7 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.7 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.7 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.7 + weapon.Animations.Reload = weapon.Animations.reload_drum + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_drum + weapon.Animations.Equip = weapon.Animations.Equip_Drum + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.8 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_xmags"] = { + Name = "12 Round Mags", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_xmags.vmt"), + Stats = function(weapon) + weapon.Primary.ClipSize = 12 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Equip = weapon.Animations.Equip_Drum + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + end +} + + +MW_ATT_KEYS["attachment_vm_sh_oscar12_sidegrip"] = { + Name = "attachment_vm_sh_oscar12_sidegrip", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_sidegrip.mdl"), + Stats = function(weapon) + end +} + + +MW_ATT_KEYS["attachment_vm_sh_oscar12_sidegrip_long"] = { + Name = "Merc Foregrip", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_sidegrip_long.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_sidegrip_long.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_sidegripang"] = { + Name = "Commando Foregrip", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_sidegripang.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_sidegripang.vmt"), + Stats = function(weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.11 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.13 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.13 + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_stock.mdl"), + Stats = function(weapon) + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_stockhvy"] = { + Name = "FTAC Hunter", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_stockhvy.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_stockhvy.vmt"), + Stats = function(weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.91 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.91 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.91 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.91 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.87 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.87 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_stocklgt"] = { + Name = "FORGE TAC Dart", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_stocklgt.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_stocklgt.vmt"), + Stats = function(weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.13 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.13 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.13 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.13 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_sh_oscar12_stockno"] = { + Name = "No Stock", + Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_no.vmt"), + Stats = function(weapon) + weapon.Recoil.AdsMultiplier = 0.75 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 + weapon.Recoil.ViewModelMultiplier = 2.25 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sh_romeo870.lua b/lua/weapons/mg_base/modules/attachments/attachments_sh_romeo870.lua new file mode 100644 index 0000000..72cb680 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sh_romeo870.lua @@ -0,0 +1,167 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sh_romeo870_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_pi_mike1911_v1_slide.vmt") +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_heatguard_mp"] = { + Name = "XRK 18.0 Liberator", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_heatguard_mp.mdl"), + Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_heatguard.vmt"), + Stats = function(weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 1.2 + weapon.Cone.Ads = weapon.Cone.Ads * 1.2 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_barrel_long"] = { + Name = "XRK 30.0 Sport", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_barrel_long.mdl"), + Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_barrel_long.vmt"), + Stats = function(weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + weapon.Primary.ClipSize = 10 + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_barrel_sawn"] = { + Name = "XRK 14.0 SWAT", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_barrel_sawn.mdl"), + Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_barrel_sawn.vmt"), + Stats = function(weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 1.5 + weapon.Cone.Ads = weapon.Cone.Ads * 1.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Primary.ClipSize = 5 + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_shtgnsilencer"] = { + Name = "Lightweight Suppressor", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_shtgnsilencer.mdl"), + Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_shtgnsilencer.vmt"), + Stats = function(weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.02 + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_silencer02"] = { + Name = "Monolithic Suppressor", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_silencer03.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_silencer03.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_silencer03"] = { + Name = "Tactical Suppressor", + Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_silencer02.mdl"), + Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_silencer02.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.99 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.98 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_pump_custom"] = { + Name = "XRK Truegrip Tactical", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_pump_custom.mdl"), + Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_pump_custom.vmt"), + Stats = function(weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_pump_wood"] = { + Name = "Lockwood Precision Series", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_pump_wood.mdl"), + Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_pump_wood.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_stock.mdl"), + Stats = function(weapon) + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_stock_pistolgrip"] = { + Name = "No Stock", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_stock_pistolgrip.mdl"), + Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_stock_pistolgrip.vmt"), + Stats = function(weapon) + weapon.Recoil.AdsMultiplier = 0.75 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_stock_wood"] = { + Name = "Lockwood Precision Series", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_stock_wood.mdl"), + Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_stock_wood.vmt"), + Stats = function(weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_mag"] = { + Name = "6-R Mags", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_mag.vmt"), + Stats = function(weapon) + weapon.Primary.ClipSize = 6 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sh_romeo870_6rbar"] = { + Name = "XKX Eagle's Claw", + Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_foreendlight"), + Stats = function(weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.03 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sm_augolf.lua b/lua/weapons/mg_base/modules/attachments/attachments_sm_augolf.lua new file mode 100644 index 0000000..0eaa3df --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sm_augolf.lua @@ -0,0 +1,182 @@ +AddCSLuaFile() + +local function fivefivesixConversion(self) + weapon.Primary.RPM = 680 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.195 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.195 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.2 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.2 + weapon.Bullet.Penetration.Thickness = weapon.Bullet.Penetration.Thickness * 2 + weapon.Bullet.Range = weapon.Bullet.Range * 1.5 + weapon.Cone.Increase = weapon.Cone.Increase * 2 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.5 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.5 +end + +MW_ATT_KEYS["attachment_vm_sm_augolf_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_smgmag.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_ar_augolf_lightstock.vmt"), + Stats = function(self) + weapon.Primary.ClipSize = 25 + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sm_augolf_armag"] = { + Name = "5.56 NATO 30-Round Mags", + Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_armag.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_armag.vmt"), + Stats = function(self) + weapon.Primary.ClipSize = 30 + fivefivesixConversion(self) + weapon.Animations.Reload = weapon.Animations.Reload_ARmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_ARmag + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.96 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.96 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_sm_augolf_drummag"] = { + Name = "5.56 NATO 60-Round Drum", + Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_drummag.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_drummag.vmt"), + Stats = function(self) + weapon.Primary.ClipSize = 60 + fivefivesixConversion(self) + weapon.Animations.Reload = weapon.Animations.Reload_DrumMag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_DrumMag + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.8 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_sm_augolf_smg_xmag"] = { + Name = "32 Round Mags", + Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_smg_xmag.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_smg_xmag.vmt"), + Stats = function(self) + weapon.Primary.ClipSize = 32 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + end +} + +MW_ATT_KEYS["attachment_vm_sm_augolf_smgbarrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_smgbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_ar_augolf_lightstock.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_augolf_arbarrel"] = { + Name = "407mm Lightweight", + Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_arbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_arbarrel.vmt"), + Stats = function(self) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.07 + end +} + +MW_ATT_KEYS["attachment_vm_sm_augolf_arrail"] = { + Name = "AR Rail", + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_arrail.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_augolf_lmgbarrel"] = { + Name = "622mm Long Barrel", + Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_lmgbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_lmgbarrel.vmt"), + Stats = function(self) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.14 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.14 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sm_augolf_lmgrail"] = { + Name = "Integral 3.0x Optic", + Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_lmgrail.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_lmgrail.vmt"), + Optic = { + LensHideMaterial = Material("viper/mw/weapons/augolf/weapon_vm_sm_augolf_scope_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 20, --a value of zero means 1:1 size with the end of the optic + Thermal = false + }, + Reticle = { + Material = Material("viper/mw/reticles/reticle_aug.vmt"), + Size = 800, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" + }, + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Zoom.ViewModelFovMultiplier = 0.95 + weapon.Zoom.FovMultiplier = 0.7 + --Scout Combat Optic reskin + end +} + +MW_ATT_KEYS["attachment_vm_sm_augolf_stock_tactical"] = { + Name = "FFS Heavy Stock Pro", + Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_stock_tactical.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_stock_tactical.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.75 + end +} + +MW_ATT_KEYS["attachment_vm_sm_augolf_stockl"] = { + Name = "Forge TAC CQB Comb", + Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_stockl.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.06 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.06 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_sm_augolf_stocks"] = { + Name = "FTAC Ultralight Hollow", + Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_stocks.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_stocks.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.08 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.1 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.1 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sm_beta.lua b/lua/weapons/mg_base/modules/attachments/attachments_sm_beta.lua new file mode 100644 index 0000000..45f5c3b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sm_beta.lua @@ -0,0 +1,94 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sm_beta_mag"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_mag.mdl"), + Stats = function(self) + self.Primary.ClipSize = 25 + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sm_beta_xmags"] = { + Name = "84 Round Helical Mags", + Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/beta/icon_attachment_sm_beta_xmags.vmt"), + Stats = function(self) + self.Primary.ClipSize = 84 + self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.85 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.85 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.94 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sm_beta_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_barrel.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_beta_barlong"] = { + Name = "8.7 Polygonal", + Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/beta/icon_attachment_sm_beta_barlong.vmt"), + Stats = function(self) + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.99 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.99 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.02 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.02 + end +} + +MW_ATT_KEYS["attachment_vm_sm_beta_barmid"] = { + Name = "8.7 Steel", + Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_barmid.mdl"), + Icon = Material("viper/mw/attachments/icons/beta/icon_attachment_sm_beta_barmid.vmt"), + Stats = function(self) + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.97 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.97 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.91 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.91 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.04 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.04 + end +} + +MW_ATT_KEYS["attachment_vm_sm_beta_barshort"] = { + Name = "8.7 Aluminum", + Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/beta/icon_attachment_sm_beta_barshort.vmt"), + Stats = function(self) + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.08 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.08 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sm_beta_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_beta_stockmrkt"] = { + Name = "Factory Aluminum Stock", + Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_stockmrkt.mdl"), + Icon = Material("viper/mw/attachments/icons/beta/icon_attachment_sm_beta_stockmrkt.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.05 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.05 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.08 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.08 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.15 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sm_charlie9.lua b/lua/weapons/mg_base/modules/attachments/attachments_sm_charlie9.lua new file mode 100644 index 0000000..c73d3ea --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sm_charlie9.lua @@ -0,0 +1,142 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sm_charlie9_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_mag.mdl"), + Stats = function(weapon) + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sm_charlie9_drummag"] = { + Name = "50 Round Drums", + Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_drummag.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_drummag.vmt"), + Stats = function(weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Reload = weapon.Animations.Reload_Drum + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Drum + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.82 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.82 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sm_charlie9_xmag"] = { + Name = "30 Round Mags", + Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_xmag.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_xmag.vmt"), + Stats = function(weapon) + weapon.Primary.ClipSize = 30 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.98 + end +} + +MW_ATT_KEYS["attachment_vm_sm_charlie9_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sm_charlie9_barsil"] = { + Name = "FSS Nightshade", + Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_barsil.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_barsil.vmt"), + Stats = function(weapon) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.2 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.7 + weapon.Cone.Hip = weapon.Cone.Hip * 0.83 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sm_charlie9_longbarrel"] = { + Name = "FSS Revolution", + Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_longbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_longbarrel.vmt"), + Stats = function(weapon) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.09 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.09 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Cone.Hip = weapon.Cone.Hip * 0.91 + end +} + +MW_ATT_KEYS["attachment_vm_sm_charlie9_medbarrel"] = { + Name = "FTAC 225mm Dominator", + Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_medbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_medbarrel_v1.vmt"), + Stats = function(weapon) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.03 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.03 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 + end +} + +MW_ATT_KEYS["attachment_vm_sm_charlie9_shortbarrel"] = { + Name = "ISO 140mm CQB", + Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_shortbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_shortbarrel.vmt"), + Stats = function(weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.94 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.03 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.03 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.09 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.09 + end +} + +MW_ATT_KEYS["attachment_vm_sm_charlie9_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_stock.mdl"), + Stats = function(weapon) + end +} + +MW_ATT_KEYS["attachment_vm_sm_charlie9_fullstock"] = { + Name = "FTAC Vagrant", + Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_fullstock.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_fullstock.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.89 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.89 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_sm_charlie9_nostock"] = { + Name = "ISO Collapsible", + Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_nostock.mdl"), + Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_nostock.vmt"), + Stats = function(weapon) + weapon.Recoil.AdsMultiplier = 0.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 + weapon.Recoil.ViewModelMultiplier = 2.25 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sm_mpapa5.lua b/lua/weapons/mg_base/modules/attachments/attachments_sm_mpapa5.lua new file mode 100644 index 0000000..e077873 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sm_mpapa5.lua @@ -0,0 +1,162 @@ +AddCSLuaFile() + +local function tenmilConversion(self) + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.19 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.1 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.15 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.15 + self.Bullet.Range = self.Bullet.Range * 1.25 + self.Cone.Increase = self.Cone.Increase * 1.35 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.2 +end + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_ar_mpapa5_lightstock.vmt"), + Stats = function(self) + self.Primary.ClipSize = 25 + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_mag_xmag"] = { + Name = "45 Round Mags", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_mag_xmag.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_mag_xmag_clip.vmt"), + Stats = function(self) + self.Primary.ClipSize = 45 + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + --[[self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag]] + self.Animations.Reload.Fps = self.Animations.Reload.Fps * 0.9 + self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_mag_xmag2"] = { + Name = "10mm Auto 30-Round Mags", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_mag_xmag2.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_mag_xmag2.vmt"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + --[[self.Animations.Reload = self.Animations.Reload_Xmag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmag]] + tenmilConversion(self) + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.99 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.99 + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_ar_mpapa5_lightstock.vmt"), + Flashlight = { + FlashlightMaterial = Material("effects/flashlight001.vmt"), + Color = Color(255, 255, 255, 255), + Attachment = "flashlight" + }, + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_barrel_noflash"] = { + Name = "Default (No flashlight)", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_barrel.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_railgrip.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_barshort"] = { + Name = "FSS Mini", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_barshort.vmt"), + Stats = function(self) + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.1 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.1 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.05 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.05 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.92 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.92 + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_barrel_suppressor"] = { + Name = "Subsonic Integral Suppressor", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_barrel_suppressor.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_barrel_suppressor.vmt"), + Stats = function(self) + self.PrintName = "MP5SD" + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.94 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.94 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.1 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_barrel_suppshort"] = { + Name = "Monolithic Integral Suppressor", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_barrel_suppshort.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_barrel_suppressor_v4.vmt"), + Stats = function(self) + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.06 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.06 + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.03 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.03 + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_railgrip"] = { + Name = "FSS Light", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_railgrip.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_railgrip.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.05 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.05 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.1 + end +} + + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_stock"] = { + Name = "Default Stock", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_stock.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_stock_tactical.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_stock_fullstock"] = { + Name = "Classic Straight-line Stock", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_stock_fullstock.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_stock_fullstock.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.94 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.94 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.9 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa5_stock_nostock"] = { + Name = "FTAC Collapsible", + Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_stock_nostock.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_stock_nostock.vmt"), + Stats = function(self) + self.Recoil.AdsMultiplier = 0.5 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.26 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.26 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.26 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.26 + self.Recoil.ViewModelMultiplier = 2.25 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sm_mpapa7.lua b/lua/weapons/mg_base/modules/attachments/attachments_sm_mpapa7.lua new file mode 100644 index 0000000..78a3293 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sm_mpapa7.lua @@ -0,0 +1,124 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sm_mpapa7_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_mag.mdl"), + Stats = function(self) + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa7_mmags"] = { + Name = "50 Round Mags", + Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_mmags.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_mmags.vmt"), + Stats = function(self) + weapon.Primary.ClipSize = 50 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa7_xmags"] = { + Name = "60 Round Mags", + Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_xmags.vmt"), + Stats = function(self) + weapon.Primary.ClipSize = 60 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag2 + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag2 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa7_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa7_barlight"] = { + Name = "FSS SWAT", + Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_barlight.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_barlight.vmt"), + Stats = function(self) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.98 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.98 + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa7_barlong"] = { + Name = "FSS Recon", + Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_barlong.vmt"), + Stats = function(self) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.96 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.96 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.08 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.08 + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa7_barlong2"] = { + Name = "FSS Strike", + Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_barlong2.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_barlong2.vmt"), + Stats = function(self) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.06 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.06 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sm_mpapa7_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["xrk_retractable_stock"] = { + Name = "XRK Retractable Stock", + Model = Model("models/jacob_lhh3_ports/modernwarfare2019/weapons/mp7/attachments/xrk_retractable_stock.mdl"), + Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_stock_v2.vmt"), + Stats = function(self) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.06 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.06 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.09 + end +} + +MW_ATT_KEYS["fss_folding_grip"] = { + Name = "FSS Folding Grip", + Model = Model("models/jacob_lhh3_ports/modernwarfare2019/weapons/mp7/attachments/fss_folding_grip.mdl"), + Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_vertgrip.vmt"), + Stats = function(self) + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.04 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.04 + weapon.Animations.Sprint_Out.Fps = weapon.Animations.Sprint_Out.Fps * 1.1 + weapon.HoldType = "RifleWithVerticalGrip" + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sm_papa90.lua b/lua/weapons/mg_base/modules/attachments/attachments_sm_papa90.lua new file mode 100644 index 0000000..43a4760 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sm_papa90.lua @@ -0,0 +1,99 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sm_papa90_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_mag.mdl"), + Stats = function(self) + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sm_papa90_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_barrel.mdl") +} + +MW_ATT_KEYS["attachment_vm_sm_papa90_longbarrel"] = { + Name = "FSS 10.6 Pro", + Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_longbarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_longbarrel.vmt"), + Stats = function(self) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_sm_papa90_custombarrel"] = { + Name = "FORGE TAC Retribution", + Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_custombarrel.mdl"), + Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_custombarrel.vmt"), + Stats = function(self) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.15 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.94 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sm_papa90_reddotscope"] = { + Name = "FSS Ring Sight", + Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_reddotscope.mdl"), + Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_reddotscope.vmt"), + Reticle = { + Material = Material("viper/shared/reticles/aimpoint_reticle.vmt"), + Size = 140, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" + }, + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_papa90_stock_tactical"] = { + Name = "FORGE TAC CQB Comb", + Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_stock_tactical.mdl"), + Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_stock_tactical.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.91 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.91 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.91 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.91 + end +} + +MW_ATT_KEYS["attachment_vm_sm_papa90_stockl"] = { + Name = "Fly Strap", + Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_stockl.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.18 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.18 + weapon.Animations.Sprint_Out.Fps = weapon.Animations.Sprint_Out.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sm_papa90_stocks"] = { + Name = "FSS Heavy Stock Pro", + Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_stocks.mdl"), + Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_stocks.vmt"), + Stats = function(self) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.8 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sm_secho.lua b/lua/weapons/mg_base/modules/attachments/attachments_sm_secho.lua new file mode 100644 index 0000000..14a4274 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sm_secho.lua @@ -0,0 +1,194 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sm_secho_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_mag.mdl"), + Stats = function(self) + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_smags"] = { + Name = "9mm Hollow Point 12-R Mags", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_smags.mdl"), + Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_smags.vmt"), + Stats = function(self) + weapon.Firemodes[1].Name = "3rnd Burst" + weapon.Primary.Automatic = false + weapon.Primary.BurstRounds = 3 + weapon.Primary.BurstDelay = 0.1 + weapon.Primary.ClipSize = 12 + weapon.Animations.Reload = weapon.Animations.Reload_Smag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Smag + weapon.Animations.Inspect = weapon.Animations.Inspect_Smag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.1 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.25 + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_xmags"] = { + Name = "30 Round Mags", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_xmags.vmt"), + Stats = function(self) + weapon.Primary.ClipSize = 30 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_drummags"] = { + Name = "50 Round Drums", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_drummags.mdl"), + Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_drummags.vmt"), + Stats = function(self) + weapon.Primary.ClipSize = 60 + weapon.Animations.Reload = weapon.Animations.Reload_Drum + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Drum + weapon.Animations.Inspect = weapon.Animations.Inspect_Drum + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sm_secho_barlong"] = { + Name = "CX-38", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_barlong.vmt"), + Stats = function(self) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.12 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.12 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_barshort"] = { + Name = "CX-23", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_barshort.vmt"), + Stats = function(self) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.92 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.92 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.12 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.12 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_barsillong"] = { + Name = "CX-38S", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barsillong.mdl"), + Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_barsillong.vmt"), + Stats = function(self) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.15 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Increase = weapon.Cone.Increase * 0.7 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.91 + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_barsilshort"] = { + Name = "CX-23S", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barsilshort.mdl"), + Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_barsilshort.vmt"), + Stats = function(self) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.94 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_barxlong"] = { + Name = "CX-38E", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barxlong.mdl"), + Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_barxlong.vmt"), + Stats = function(self) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.18 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.18 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.81 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.81 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.91 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_stockh"] = { + Name = "CX-MM", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_stockh.mdl"), + Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_stockh.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.91 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.74 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.74 + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_stockno"] = { + Name = "CX-FR", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_stockno.mdl"), + Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_stockno.vmt"), + Stats = function(self) + weapon.Recoil.AdsMultiplier = 0.65 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 + weapon.Recoil.ViewModelMultiplier = 2.25 + end +} + +MW_ATT_KEYS["attachment_vm_sm_secho_stockskel"] = { + Name = "CX-FA", + Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_stockskel.mdl"), + Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_stockskel.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.81 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.81 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sm_smgolf45.lua b/lua/weapons/mg_base/modules/attachments/attachments_sm_smgolf45.lua new file mode 100644 index 0000000..6a6f17f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sm_smgolf45.lua @@ -0,0 +1,169 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_receiver_v2"] = { + Name = "UMP-45 Receiver", + Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_receiver_v2.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_mag.mdl"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_mag_v2"] = { + Name = "UMP-45 Magazine", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_mag_v2.mdl"), + Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_mag_v2.vmt"), + Stats = function(self) + self.Animations.Reload = self.Animations.Reload + self.Animations.Reload_Empty = self.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_smags"] = { + Name = ".45 Hollow Point 12-R Mags", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_smags.mdl"), + Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_smags.vmt"), + Stats = function(self) + self.Primary.RPM = self.Primary.RPM - 19 + self.Primary.ClipSize = 12 + self.Animations.Reload = self.Animations.Reload_Smag + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Smag + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.14 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.14 + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.25 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.25 + --self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.15 + --self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.15 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 1.35 + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_xmagslrg"] = { + Name = "45 Round Mags", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_xmagslrg.mdl"), + Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_xmagslrg.vmt"), + Stats = function(self) + self.Primary.ClipSize = 45 + self.Animations.Reload = self.Animations.Reload_Xmaglrg + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Xmaglrg + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.93 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.93 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.98 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.98 + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_barlong"] = { + Name = "400mm Stainless Steel", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_barlong.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.13 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.13 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.92 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.92 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.93 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.93 + self.Cone.Hip = self.Cone.Hip * 0.8 + self.Cone.Increase = self.Cone.Increase * 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_barmid"] = { + Name = "300mm Poly Barrel", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_barmid.mdl"), + Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_barmid.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.07 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 1.07 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.92 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.92 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.95 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.95 + self.Recoil.AdsMultiplier = self.Recoil.AdsMultiplier * 0.85 + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_barshort"] = { + Name = "150mm Stainless Steel", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_barrel.vmt"), + Stats = function(self) + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 0.95 + self.Bullet.DropOffStartRange = self.Bullet.DropOffStartRange * 0.95 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.03 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.03 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.05 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.05 + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_stock_v2"] = { + Name = "UMP-45 Stock", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_stock_v2.mdl"), + Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_stock_v2.vmt"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_stockcqb"] = { + Name = "XRK Gen III Survivalist Series", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_stockcqb.mdl"), + Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_stockcqb.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.92 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.92 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.05 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.05 + self.Animations.Sprint_Out.Fps = self.Animations.Sprint_Out.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_stockl"] = { + Name = "FSS Guardian", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_stockl.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.92 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.92 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.98 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.98 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.84 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.84 + end +} + +MW_ATT_KEYS["attachment_vm_sm_smgolf45_stockh"] = { + Name = "FTAC Precision Fixed Stock", + Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_stockh.mdl"), + Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_stockh.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.89 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.89 + self.Animations.Holster.Fps = self.Animations.Holster.Fps * 0.93 + self.Animations.Draw.Fps = self.Animations.Draw.Fps * 0.93 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.74 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.74 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sm_uzulu.lua b/lua/weapons/mg_base/modules/attachments/attachments_sm_uzulu.lua new file mode 100644 index 0000000..906008d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sm_uzulu.lua @@ -0,0 +1,183 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sm_uzulu_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_mag.mdl"), + Stats = function(weapon) + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_xmag2"] = { + Name = "50 Round Mags", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_xmag2.mdl"), + Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_xmag2.vmt"), + Stats = function(weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_magcalcust9mm"] = { + Name = "9x19mm 32-Round Mags", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_mag.vmt"), + Stats = function(weapon) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 0.89 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 0.99 + weapon.Primary.ClipSize = 32 + weapon.Primary.RPM = 960 + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_magcalcust"] = { + Name = ".41 AE 32-Round Mags", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_magcalcust.mdl"), + Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_mag_clip.vmt"), + Stats = function(weapon) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.15 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.15 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.15 + weapon.Primary.ClipSize = 32 + weapon.Primary.RPM = 500 + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_xmags"] = { + Name = "40 Round Mags", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_xmags.vmt"), + Stats = function(weapon) + weapon.Primary.ClipSize = 40 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_suppressor"] = { + Name = "Monolithic Suppressor", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_suppressor.mdl"), + Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_suppressor.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.15 + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_barcust"] = { + Name = "FSS Carbine Pro", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_barcust.mdl"), + Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_barrel_v13.vmt"), + Stats = function(weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.12 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.12 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_barlong"] = { + Name = "16.5 Factory Carbine", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_barlong.vmt"), + Stats = function(weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.07 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.96 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.96 + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_barmid"] = { + Name = "13.1 First Responder", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_barmid.mdl"), + Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_barmid.vmt"), + Stats = function(weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.04 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_barshort"] = { + Name = "8.5 Factory Mini", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_barshort.vmt"), + Stats = function(weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.92 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.92 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_stock.mdl"), + Stats = function(weapon) + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_stock_folded"] = { + Name = "Folded Stock", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_stock_folded.mdl"), + Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_stock.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.25 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.25 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 2 + end +} + +MW_ATT_KEYS["attachment_vm_sm_uzulu_stockh"] = { + Name = "Standard-Issue Wood Stock", + Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_stockh.mdl"), + Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_stockh.vmt"), + Stats = function(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.82 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.82 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Recoil.AdsMultiplier = 0 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sm_victor.lua b/lua/weapons/mg_base/modules/attachments/attachments_sm_victor.lua new file mode 100644 index 0000000..9d47546 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sm_victor.lua @@ -0,0 +1,187 @@ +AddCSLuaFile() + +local function doSuppressorStats(self) + weapon.Primary.Sound = Sound("mw19.victor.fire.s") + weapon.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + weapon.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +end + +MW_ATT_KEYS["attachment_vm_sm_victor_mag"] = { + Name = "Default Magazine", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_mag.mdl"), + Stats = function(self) + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + end +} + +MW_ATT_KEYS["attachment_vm_sm_victor_smags"] = { + Name = "9mm Hollow Point 12-R Mags", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_smags.mdl"), + Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_smags.vmt"), + Stats = function(self) + weapon.Primary.RPM = weapon.Primary.RPM - 511 + weapon.Primary.ClipSize = 12 + weapon.Animations.Reload = weapon.Animations.Reload_Smag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Smag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.7 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.7 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.7 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.7 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.2 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.1 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.1 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sm_victor_drummag"] = { + Name = "40 Round Drums", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_drummag.mdl"), + Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_drummag.vmt"), + Stats = function(self) + weapon.Primary.ClipSize = 40 + weapon.Animations.Reload = weapon.Animations.Reload_Drum + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Drum + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sm_victor_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sm_victor_barlong"] = { + Name = "ZLR 16 Apex", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_barlong.vmt"), + Stats = function(self) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.12 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.12 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sm_victor_barsil"] = { + Name = "ZLR 18 Deadfall", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_barsil.mdl"), + Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_barsil.vmt"), + Stats = function(self) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.14 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.14 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Cone.Hip = weapon.Cone.Hip * 0.75 + weapon.Cone.Increase = weapon.Cone.Increase * 0.75 + doSuppressorStats(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_victor_suppressor"] = { + Name = "ZLR Sabre", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_suppressor.mdl"), + Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_suppressor.vmt"), + Stats = function(self) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.08 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.08 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.95 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.95 + end +} + + +MW_ATT_KEYS["attachment_vm_sm_victor_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sm_victor_stockh"] = { + Name = "FTAC C6 Carbine PRO", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_stockh.mdl"), + Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_stockh.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.95 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.95 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.95 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.95 + --copy of forge tac stalker + end +} + +MW_ATT_KEYS["attachment_vm_sm_victor_stockno"] = { + Name = "No Stock", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_stockno.mdl"), + Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_stockno.vmt"), + Stats = function(self) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 + weapon.Recoil.ViewModelMultiplier = 2.25 + end +} + +MW_ATT_KEYS["attachment_vm_sm_victor_stocks"] = { + Name = "Forge TAC CQS", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_stocks.mdl"), + Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_stocks.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.09 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.09 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.05 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.05 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.05 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.05 + --copy of fss close quarters stock + end +} + +MW_ATT_KEYS["attachment_vm_sm_victor_stocksn"] = { + Name = "ZLR Blade", + Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_stocksn.mdl"), + Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_stocksn.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sn_kilo98.lua b/lua/weapons/mg_base/modules/attachments/attachments_sn_kilo98.lua new file mode 100644 index 0000000..fa1f720 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sn_kilo98.lua @@ -0,0 +1,137 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sn_kilo98_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sn_kilo98_barlong"] = { + Name = "FSS 24.0 Factory", + Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_barlong.vmt"), + Stats = function(self) + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.3 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.3 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.9 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.9 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.9 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.9 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.9 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sn_kilo98_barmid"] = { + Name = "FSS 20.0 Factory", + Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_barmid.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_barmid.vmt"), + Stats = function(self) + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.15 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.15 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.96 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.96 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.96 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.96 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.94 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sn_kilo98_nostrippers"] = { + Name = "No Stripper Clips", + Stats = function(self) + + end +} + +MW_ATT_KEYS["attachment_vm_sn_kilo98_barshort"] = { + Name = "FSS 18.0 Factory", + Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_barshort.vmt"), + Stats = function(self) + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.18 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.075 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 1.1 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 1.1 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 1.1 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 1.1 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.25 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.25 + end +} + +MW_ATT_KEYS["weapon_vm_scope_kilo98"] = { + Name = "Scope", + Model = Model("models/viper/mw/attachments/kilo98/weapon_vm_scope_kilo98.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_scope_kilo98.vmt"), + Optic = { + LensHideMaterial = Material("viper/mw/weapons/kilo98/weapon_vm_sn_kilo98_scopeglass.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 750, --a value of zero means 1:1 size with the end of the optic + Thermal = false + }, + Reticle = { + Material = Material("viper/mw/reticles/reticle_16.vmt"), + Size = 1000, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" + }, + Stats = function(self) + self.Animations.Rechamber = self.Animations.rechamber_scope + self.Bullet.EffectiveRange = self.Bullet.EffectiveRange * 1.5 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.92 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.92 + self.Zoom.ViewModelFovMultiplier = 0.95 + self.Zoom.FovMultiplier = 0.8 + end +} + +MW_ATT_KEYS["attachment_vm_sn_kilo98_stock_tactical"] = { + Name = "MK2 Ultralight Hollow", + Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_stock_tactical.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_stock_tactical.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.92 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.92 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.92 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.92 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.1 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sn_kilo98_stocks"] = { + Name = "FSS MK2 Sport Comb", + Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_stocks.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_stocks.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.85 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.85 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.85 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.85 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.94 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sn_kilo98_stockl"] = { + Name = "FSS MK2 Precision Comb", + Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_stockl.mdl"), + Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_stockl.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.95 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.95 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.95 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.95 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.25 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.25 + end +} + +MW_ATT_KEYS["attachment_vm_sn_kilo98_sling"] = { + Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_sling.vmt"), + Name = "Sling", + Stats = function(self) + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sn_mike14.lua b/lua/weapons/mg_base/modules/attachments/attachments_sn_mike14.lua new file mode 100644 index 0000000..21af6c1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sn_mike14.lua @@ -0,0 +1,148 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sn_mike14_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sn_mike14_barlight"] = { + Name = "FSS 24.0 Factory", + Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_barlight.mdl"), + Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_barlight.vmt"), + Stats = function(self) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.3 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.3 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sn_mike14_barlong"] = { + Name = "FSS 20.0 Factory", + Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_barlong.vmt"), + Stats = function(self) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.15 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.96 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.96 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.96 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.96 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sn_mike14_barlong2"] = { + Name = "FSS 20.0 Factory", + Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_barlong2.mdl"), + Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_barlong2_v2.vmt"), + Stats = function(self) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.15 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.96 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.96 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.96 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.96 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sn_mike14_stock"] = { + Name = "Default", + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sn_mike14_stock_v2_alt"] = { + Name = "MK2 Ultralight Hollow", + Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_stock_v2.vmt"), + Stats = function(self) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.92 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.92 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.92 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.92 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sn_mike14_stock_v3"] = { + Name = "FSS MK2 Sport Comb", + Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_stock_v3.vmt"), + Stats = function(self) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.85 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.85 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sn_mike14_stockcqb_alt"] = { + Name = "FSS MK2 Precision Comb", + Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_stockcqb_alt.mdl"), + Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_stockcqb.vmt"), + Stats = function(self) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.95 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.95 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.95 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.25 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.25 + end +} + +MW_ATT_KEYS["attachment_vm_sn_mike14_stock_tactical"] = { + Name = "FSS MK2 Precision Comb", + Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_stock_tactical.mdl"), + Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_stock_tactical.vmt"), + Stats = function(self) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.95 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.95 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.95 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.25 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.25 + end +} + +MW_ATT_KEYS["attachment_vm_sn_mike14_mag"] = { + Name = "FSS MK2 Sport Comb", + Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_stocks.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sn_mike14_xmags"] = { + Name = "FSS MK2 Precision Comb", + Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_xmags.mdl"), + Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_xmags.vmt"), + Stats = function(self) + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.25 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.25 + end +} + +MW_ATT_KEYS["attachment_vm_sn_mike14_xmags2"] = { + Name = "FSS MK2 Precision Comb", + Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_xmags2.mdl"), + Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_xmags2.vmt"), + Stats = function(self) + weapon.Animations.Reload = weapon.Animations.Reload_Xmag2 + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag2 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.25 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.25 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sn_sbeta.lua b/lua/weapons/mg_base/modules/attachments/attachments_sn_sbeta.lua new file mode 100644 index 0000000..4fd8156 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sn_sbeta.lua @@ -0,0 +1,104 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sh_sbeta_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sn_sbeta_barlong"] = { + Name = "FSS 24.0 Factory", + Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_barlong.vmt"), + Stats = function(self) + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.28 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.28 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.92 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.92 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.92 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.92 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.92 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sbeta_barmid"] = { + Name = "FSS 20.0 Factory", + Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_barmid.mdl"), + Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_barmid.vmt"), + Stats = function(self) + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.17 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.17 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.95 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.95 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.95 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.95 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.94 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sbeta_barshort"] = { + Name = "FSS 18.0 Factory", + Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_barshort.vmt"), + Stats = function(self) + self.Bullet.Damage[1] = self.Bullet.Damage[1] * 1.11 + self.Bullet.Damage[2] = self.Bullet.Damage[2] * 1.11 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.97 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.97 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.97 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.97 + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.96 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.96 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sbeta_rack"] = { + Name = "Cartridge Sleeve", + Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_rack.mdl"), + Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_rack.vmt"), + Stats = function(self) + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.95 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.95 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.95 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.95 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sbeta_stock_light"] = { + Name = "MK2 Ultralight Hollow", + Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_stock_light.mdl"), + Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_stock_light.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.25 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.25 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sbeta_stock_stable"] = { + Name = "FSS MK2 Sport Comb", + Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_stock_stable.mdl"), + Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_stock_stable.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.12 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.12 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.94 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.94 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.93 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.93 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sbeta_stock_tactical"] = { + Name = "FSS MK2 Precision Comb", + Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_stock_tactical.mdl"), + Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_stock_tactical.vmt"), + Stats = function(self) + self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 0.95 + self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 0.95 + self.Recoil.Vertical[1] = self.Recoil.Vertical[1] * 0.9 + self.Recoil.Vertical[2] = self.Recoil.Vertical[2] * 0.9 + self.Recoil.Horizontal[1] = self.Recoil.Horizontal[1] * 0.9 + self.Recoil.Horizontal[2] = self.Recoil.Horizontal[2] * 0.9 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachments/attachments_sn_sksierra.lua b/lua/weapons/mg_base/modules/attachments/attachments_sn_sksierra.lua new file mode 100644 index 0000000..f206721 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachments/attachments_sn_sksierra.lua @@ -0,0 +1,165 @@ +AddCSLuaFile() + +MW_ATT_KEYS["attachment_vm_sn_sksierra_barrel"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_barrel.mdl"), +} + +MW_ATT_KEYS["attachment_vm_sn_sksierra_barlong"] = { + Name = "FSS 24.0 Factory", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_barlong.mdl"), + Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_barlong.vmt"), + Stats = function(self) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.3 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.3 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sksierra_barhvy"] = { + Name = "FSS 20.0 Factory", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_barhvy.mdl"), + Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_barhvy.vmt"), + Stats = function(self) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.15 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.96 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.96 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.96 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.96 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sksierra_barshort"] = { + Name = "FSS 20.0 Factory", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_barshort.mdl"), + Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_barshort.vmt"), + Stats = function(self) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.15 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.96 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.96 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.96 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.96 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sksierra_stock"] = { + Name = "Default", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_stock.mdl"), + Stats = function(self) + end +} + +MW_ATT_KEYS["attachment_vm_sn_sksierra_stockhvy"] = { + Name = "MK2 Ultralight Hollow", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_stockhvy.mdl"), + Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_stockhvy.vmt"), + Stats = function(self) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.92 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.92 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.92 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.92 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sksierra_stockhvy2"] = { + Name = "FSS MK2 Sport Comb", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_stockhvy2.mdl"), + Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_stockhvy2.vmt"), + Stats = function(self) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.85 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.85 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sksierra_stockno"] = { + Name = "FSS MK2 Precision Comb", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_stockno.mdl"), + Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_stockno.vmt"), + Stats = function(self) + weapon.Animations.Melee = weapon.Animations.Melee_Nostock + weapon.Animations.Melee_Hit = weapon.Animations.Melee_Hit_Nostock + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.95 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.95 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.95 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.25 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.25 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sksierra_mag"] = { + Name = "FSS MK2 Sport Comb", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_mag.mdl"), + Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_stocks.vmt"), + Stats = function(self) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sksierra_smag"] = { + Name = "FSS MK2 Precision Comb", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_smag.mdl"), + Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_smag.vmt"), + Stats = function(self) + weapon.Animations.Reload = weapon.Animations.Reload_Smag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Smag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.25 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.25 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sksierra_xmag"] = { + Name = "FSS MK2 Precision Comb", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_xmag.mdl"), + Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_xmag.vmt"), + Stats = function(self) + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.25 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.25 + end +} + +MW_ATT_KEYS["attachment_vm_sn_sksierra_scope"] = { + Name = "PSU Scope", + Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_scope.mdl"), + Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_scope.vmt"), + Optic = { + LensHideMaterial = Material("viper/mw/weapons/sksierra/weapon_vm_sn_sksierra_scopeglass.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 750, --a value of zero means 1:1 size with the end of the optic + Thermal = false + }, + Reticle = { + Material = Material("viper/mw/reticles/reticle_16.vmt"), + Size = 1000, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" + }, + Stats = function(self) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Zoom.ViewModelFovMultiplier = 0.95 + weapon.Zoom.FovMultiplier = 0.8 + end +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barhvy.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barhvy.lua new file mode 100644 index 0000000..8d79fd0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barhvy.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "ZLR J-2800 Influx" +ATTACHMENT.Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_barhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_barhvy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.08 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barlong.lua new file mode 100644 index 0000000..22a78b1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barlong.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "ZLR J-3600 Torrent" +ATTACHMENT.Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_barlong.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Cone.Hip = weapon.Cone.Hip * 0.85 + weapon.Cone.Ads = weapon.Cone.Ads * 0.85 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barrel.lua new file mode 100644 index 0000000..f660b25 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barshort.lua new file mode 100644 index 0000000..13fefe2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/barrels/attachment_vm_sh_aalpha12_barshort.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "JAK Urban King" +ATTACHMENT.Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Cone.Hip = weapon.Cone.Hip * 1.2 + weapon.Cone.Ads = weapon.Cone.Ads * 1.2 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.9 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_angledgrip01.lua new file mode 100644 index 0000000..da07bda --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_angledgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_angledgrip02.lua new file mode 100644 index 0000000..1e3074d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_angledgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_stubbygrip01.lua new file mode 100644 index 0000000..ebb9e70 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_stubbygrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_stubbygrip02.lua new file mode 100644 index 0000000..663d28e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_stubbygrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip01.lua new file mode 100644 index 0000000..82278fb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip02.lua new file mode 100644 index 0000000..6f2dcbe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip03.lua new file mode 100644 index 0000000..9dbd6ae --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/grips/attachment_vm_sh_aalpha12_vertgrip03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser01.lua new file mode 100644 index 0000000..ec2e5bf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser02.lua new file mode 100644 index 0000000..2a6b1ca --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser03.lua new file mode 100644 index 0000000..819d324 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/lasers/attachment_vm_sh_aalpha12_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_drummag.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_drummag.lua new file mode 100644 index 0000000..c4778bb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_drummag.lua @@ -0,0 +1,31 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "32 Round Drum Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_drummag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_drummag.vmt") +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sh_aalpha12_none"} + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_ammoshell1"}, + [1] = {"j_ammoshell2"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 32 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.7 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.7 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.7 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.7 + weapon.Animations.Reload = weapon.Animations.reload_drum + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_drum + weapon.Animations.Inspect = weapon.Animations.inspect_drum + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.8 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.8 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_mag.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_mag.lua new file mode 100644 index 0000000..2979ec2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_mag.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_mag.mdl") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_ammoshell1"}, + [1] = {"j_ammoshell2"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_slugmag.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_slugmag.lua new file mode 100644 index 0000000..659afba --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_slugmag.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "12g Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_slugmag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_slugmag.vmt") +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_ammoshell1"}, + [1] = {"j_ammoshell2"}, +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Shell = "mwb_shelleject_12g_green" + + if (weapon:HasAttachment("att_ammo_flechette")) then + return + end + + weapon.Bullet.NumBullets = 6 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_xmags.lua new file mode 100644 index 0000000..40bd7a9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/mags/attachment_vm_sh_aalpha12_xmags.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "20 Round Drum Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_xmags.vmt") +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_ammoshell1"}, + [1] = {"j_ammoshell2"}, +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 20 + weapon.Animations.Reload = weapon.Animations.reload_drum + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_drum + weapon.Animations.Inspect = weapon.Animations.inspect_drum + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.84 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.84 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/perks/attachment_vm_sh_aalpha12_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/perks/attachment_vm_sh_aalpha12_perk_soh.lua new file mode 100644 index 0000000..f03ce00 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/perks/attachment_vm_sh_aalpha12_perk_soh.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.reload_drum = weapon.Animations.reload_drum_fast + weapon.Animations.reload_empty_drum = weapon.Animations.reload_drum_empty_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stockh.lua new file mode 100644 index 0000000..b8a2654 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stockh.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "ZLR Tsunami" +ATTACHMENT.Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_stockh.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.8 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 +end + diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stockl.lua new file mode 100644 index 0000000..58eb0d3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stockl.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "JAK Rabbit Ultralight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_stockl.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.25 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stocks.lua new file mode 100644 index 0000000..15aedf9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/aalpha12/stock/attachment_vm_sh_aalpha12_stocks.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Power Wrap" +ATTACHMENT.Model = Model("models/viper/mw/attachments/aalpha12/attachment_vm_sh_aalpha12_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/aalpha12/icon_attachment_sh_aalpha12_stocks.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.12 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.12 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_barrel.lua new file mode 100644 index 0000000..049ac7b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_custombarrel.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_custombarrel.lua new file mode 100644 index 0000000..cc35bc8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_custombarrel.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Spetsnaz Elite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_custombarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_custombarrel_akilo47.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Increase = weapon.Cone.Increase * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_lmgbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_lmgbarrel.lua new file mode 100644 index 0000000..db83a28 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_lmgbarrel.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "23.0 RPK Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_lmgbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_lmgbarrel_akilo47.vmt") +ATTACHMENT.Bipod = true +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.06 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.06 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.91 + weapon.PrintName = "RPK" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_lmgbarrel_grip.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_lmgbarrel_grip.lua new file mode 100644 index 0000000..c047331 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_lmgbarrel_grip.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "23.0 Romanian" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_lmgbarrel_grip.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_gripvert_akilo47.vmt") +ATTACHMENT.ExcludedCategories = { + "Grips" +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.06 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.06 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.87 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.87 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.87 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.87 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.93 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.93 + weapon.HoldType = "RifleWithVerticalGrip" + weapon.PrintName = "PM.md 63" +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_smgbarcust.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_smgbarcust.lua new file mode 100644 index 0000000..5f57a8e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_smgbarcust.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "8.1 Compact Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_smgbarcust.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_vertgrip_akilo47.vmt") +ATTACHMENT.ExcludedCategories = { + "Grips" +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.9 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.08 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 + weapon.HoldType = "RifleWithVerticalGrip" + weapon.PrintName = "PM.md 90" +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_pro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_smgbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_smgbarrel.lua new file mode 100644 index 0000000..57b7533 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/barrels/attachment_vm_ar_akilo47_smgbarrel.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "8.1 Compact Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_smgbarrel_akilo47.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_smgbarrel_akilo47.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.9 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_angledgrip01.lua new file mode 100644 index 0000000..228a28c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_angledgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["handguard"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_angledgrip02.lua new file mode 100644 index 0000000..a4fef7c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_angledgrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["handguard"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_bipodgrip.lua new file mode 100644 index 0000000..4041e17 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_bipodgrip.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["handguard"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_stubbygrip01.lua new file mode 100644 index 0000000..dd7706a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_stubbygrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["handguard"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_pro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_stubbygrip02.lua new file mode 100644 index 0000000..8475837 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_stubbygrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["handguard"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_pro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip01.lua new file mode 100644 index 0000000..0bdf90f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["handguard"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip02.lua new file mode 100644 index 0000000..b92b764 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["handguard"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip03.lua new file mode 100644 index 0000000..139b450 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/grips/attachment_vm_ar_akilo47_vertgrip03.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["handguard"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser01.lua new file mode 100644 index 0000000..bf08647 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser01_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser01_cylinder.lua new file mode 100644 index 0000000..eef80fe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser01_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser02.lua new file mode 100644 index 0000000..73c3231 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser02_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser02_cylinder.lua new file mode 100644 index 0000000..c086feb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser02_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser03.lua new file mode 100644 index 0000000..aaa4bd8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser03_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser03_cylinder.lua new file mode 100644 index 0000000..8ad369e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/lasers/attachment_vm_ar_akilo47_laser03_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_drum_mag.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_drum_mag.lua new file mode 100644 index 0000000..2220cdb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_drum_mag.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "75 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_drum_mag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_drums_akilo47.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_drumbullet1"}, + [2] = {"j_drumbullet2"}, + [3] = {"j_drumbullet3"} +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 75 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.81 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.81 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_mag.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_mag.lua new file mode 100644 index 0000000..7088404 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_mag.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_mag.mdl") + +--round, bone name +--im aware its the other way around but the reloads switch mags +ATTACHMENT.BulletList = { + [1] = {"j_bullet_secondary"}, + [2] = {"j_bullet2_secondary"} +} + +ATTACHMENT.ReserveBulletList = { + [1] = {"j_bullet"}, + [2] = {"j_bullet2"} +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_smgmag.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_smgmag.lua new file mode 100644 index 0000000..430a1f0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_smgmag.lua @@ -0,0 +1,44 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "5.45x39mm 30-Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_smgmag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_smgmag_akilo47.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_ammo1_secondary"}, + [2] = {"j_ammo2_secondary"}, + [3] = {"j_ammo3_secondary"}, + [4] = {"j_ammo4_secondary"} +} + +ATTACHMENT.ReserveBulletList = { + [1] = {"j_ammo1"}, + [2] = {"j_ammo2"}, + [3] = {"j_ammo3"}, + [4] = {"j_ammo4"} +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon:doSmgStats() + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 0.98 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 0.98 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.8 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.7 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.8 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.8 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.8 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.8 + weapon.Primary.ClipSize = 30 + weapon.Primary.RPM = 690 + weapon.PrintName = "AK-74" + + if (weapon:HasAttachment("attachment_vm_ar_akilo47_smgbarrel") || weapon:HasAttachment("attachment_vm_ar_akilo47_smgbarcust")) then + weapon.PrintName = "AKS-74U" + end + + if (weapon:HasAttachment("attachment_vm_ar_akilo47_custombarrel")) then + weapon.PrintName = "AK-12" + end + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_xmags.lua new file mode 100644 index 0000000..8d84247 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/mags/attachment_vm_ar_akilo47_xmags.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "40 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_xmags_akilo47_v11.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_ammo3"}, + [2] = {"j_ammo4"} +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 40 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/muzzles/attachment_vm_bayonet_akilo47.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/muzzles/attachment_vm_bayonet_akilo47.lua new file mode 100644 index 0000000..76add58 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/muzzles/attachment_vm_bayonet_akilo47.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Bayonet" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_bayonet_akilo47.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_bayonet_akilo47.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.ExcludedAttachments = {"attachment_vm_ar_akilo47_smgbarrel", "attachment_vm_ar_akilo47_smgbarcust"} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_tip"] = 1, + ["tip"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Melee = weapon.Animations.Melee_Bayonet + weapon.Animations.Melee_Hit = weapon.Animations.Melee_Hit_Bayonet + + weapon.Animations.Melee_Hit_Bayonet.Damage = 100 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/perks/attachment_vm_ar_akilo47_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/perks/attachment_vm_ar_akilo47_perk_soh.lua new file mode 100644 index 0000000..3a99333 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/perks/attachment_vm_ar_akilo47_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/sights/attachment_vm_ar_akilo47_rail.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/sights/attachment_vm_ar_akilo47_rail.lua new file mode 100644 index 0000000..07b1757 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/sights/attachment_vm_ar_akilo47_rail.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_sight" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_receiver_akilo47_v2.vmt") +ATTACHMENT.Name = "VLK Polovoy Appaktiko" +ATTACHMENT.Bodygroups ={ + ["tag_rail"] = 1, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_lmgstock.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_lmgstock.lua new file mode 100644 index 0000000..6cc9321 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_lmgstock.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Field LMG Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_lmgstock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_stocklmg_akilo47.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.91 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.91 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.91 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.91 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_smgstock.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_smgstock.lua new file mode 100644 index 0000000..936747e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_smgstock.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Skeleton Stock Folded" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_smgstock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_smgstock_akilo47.vmt") +ATTACHMENT.VElement = { + Bone = "tag_stock_attach", + Position = Vector(2.5, 0, 0), + Angles = Angle(), + Offsets = {} +} +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 0, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_smgstock_unfolded.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_smgstock_unfolded.lua new file mode 100644 index 0000000..2a7e3a3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_smgstock_unfolded.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Skeleton Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_smgstock_unfolded.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_smgstock_unfolded_akilo47.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.15 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.15 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.15 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock.lua new file mode 100644 index 0000000..d27b24c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_light01.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_light01.lua new file mode 100644 index 0000000..8e25c0f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_light01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stock_light01" +ATTACHMENT.Bodygroups ={ + + ["tag_stock"] = 1 + +} + diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_medium01.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_medium01.lua new file mode 100644 index 0000000..0ff0ec6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_medium01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stock_medium01" +ATTACHMENT.Bodygroups ={ + + ["tag_stock"] = 1 + +} + diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_v12.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_v12.lua new file mode 100644 index 0000000..efef751 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_v12.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "War Saw" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_stock_v12.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_stock_akilo47_v6.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true + diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_v21.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_v21.lua new file mode 100644 index 0000000..12ce1d2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stock_v21.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Resonant" +ATTACHMENT.Model = Model("models/viper/mw/attachments/akilo47/attachment_vm_ar_akilo47_stock_v21.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_stock_akilo47_v6.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.CosmeticChange = true + diff --git a/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stockno.lua new file mode 100644 index 0000000..039f3c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/akilo47/stock/attachment_vm_ar_akilo47_stockno.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "No Stock" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/akilo47/icon_attachment_stockno_akilo47.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barlong.lua new file mode 100644 index 0000000..dcb1d71 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barlong.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "32.0\" Factory Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/alpha50/icon_attachment_sn_alpha50_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.7 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.7 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[1] + weapon.Projectile.Speed = weapon.Projectile.Speed * 1.35 + weapon.Cone.Hip = weapon.Cone.Hip * 0.75 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barmid.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barmid.lua new file mode 100644 index 0000000..906401d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barmid.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Singuard Arms Pro" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_barmid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/alpha50/icon_attachment_sn_alpha50_barmid.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.93 + --weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.1 + weapon.Projectile.Speed = weapon.Projectile.Speed * 1.15 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barrel.lua new file mode 100644 index 0000000..72bd7be --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barshort.lua new file mode 100644 index 0000000..8edbc9b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/barrels/attachment_vm_sn_alpha50_barshort.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "17.0\" Factory Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/alpha50/icon_attachment_sn_alpha50_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 0.7 + weapon.Projectile.Speed = weapon.Projectile.Speed * 0.65 + weapon.Cone.Hip = weapon.Cone.Hip * 1.5 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser01.lua new file mode 100644 index 0000000..ccc46f2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser01.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser02.lua new file mode 100644 index 0000000..2702edc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser02.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser03.lua new file mode 100644 index 0000000..ed36c69 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/lasers/attachment_vm_sn_alpha50_laser03.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_mag.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_mag.lua new file mode 100644 index 0000000..9199894 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_mag.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_mag.mdl") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet_01"}, + [2] = {"j_bullet_02"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_mmags.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_mmags.lua new file mode 100644 index 0000000..6a63467 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_mmags.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "9 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/alpha50/icon_attachment_sn_alpha50_xmags.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet_01"}, + [2] = {"j_bullet_02"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.reload_xmag + weapon.Animations.Reload_Fast = weapon.Animations.reload_xmag_fast + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_xmag + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_xmag_fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 + weapon.Primary.ClipSize = 9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_xmags.lua new file mode 100644 index 0000000..278888b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/mags/attachment_vm_sn_alpha50_xmags.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "7 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_mmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/alpha50/icon_attachment_sn_alpha50_mmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.reload_mmag + weapon.Animations.Reload_Fast = weapon.Animations.reload_mmag_fast + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_mmag + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_mmag_fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 + weapon.Primary.ClipSize = 7 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_compensator01.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_compensator01.lua new file mode 100644 index 0000000..9dd8faa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_compensator01.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_compensator01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_comp.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_flashhider01.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_flashhider01.lua new file mode 100644 index 0000000..96e99d4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_flashhider01.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_flashhider01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_flashhider.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_muzzlebrake01.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_muzzlebrake01.lua new file mode 100644 index 0000000..55716df --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_muzzlebrake01.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_muzzlebrake01" + +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_brake01.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_muzzlebrake02.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_muzzlebrake02.lua new file mode 100644 index 0000000..b42eb99 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_muzzlebrake02.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_muzzlebrake02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_brake02.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer01.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer01.lua new file mode 100644 index 0000000..0f9c73f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer01.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_silencer06" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_silencer01.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer02.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer02.lua new file mode 100644 index 0000000..35b0f13 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer02.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_silencer02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_silencer02.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer03.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer03.lua new file mode 100644 index 0000000..1b25225 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/muzzles/att_vm_alpha50_silencer03.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_silencer01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_silencer03.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/perks/attachment_vm_sn_alpha50_perk_bolt.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/perks/attachment_vm_sn_alpha50_perk_bolt.lua new file mode 100644 index 0000000..3e36d08 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/perks/attachment_vm_sn_alpha50_perk_bolt.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_perk_bolt" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/perks/attachment_vm_sn_alpha50_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/perks/attachment_vm_sn_alpha50_perk_soh.lua new file mode 100644 index 0000000..bb23a9d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/perks/attachment_vm_sn_alpha50_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.reload_xmag = weapon.Animations.reload_xmag_fast + weapon.Animations.reload_empty_xmag = weapon.Animations.reload_empty_xmag_fast + weapon.Animations.reload_mmag = weapon.Animations.reload_mmag_fast + weapon.Animations.reload_empty_mmag = weapon.Animations.reload_empty_mmag_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/sights/attachment_vm_sn_alpha50_scope.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/sights/attachment_vm_sn_alpha50_scope.lua new file mode 100644 index 0000000..4ffd162 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/sights/attachment_vm_sn_alpha50_scope.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_optic_20x" +ATTACHMENT.Name = "AX-50 Scope" + +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/alpha50/icon_attachment_sn_alpha50_scope_v4.vmt") +ATTACHMENT.Bodygroups = { + ["tag_sight"] = 2 +} + +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_scope_hide.mdl"), + LensHideMaterial = Material("viper/MW/weapons/alpha50/weapon_vm_sn_alpha50_hipfire_scope_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 700, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_sniper_new.vmt"), + Size = 2000, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stock.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stock.lua new file mode 100644 index 0000000..888bed4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stockh.lua new file mode 100644 index 0000000..6338b1f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stockh.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Singuard Arms Marksman" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/alpha50/icon_attachment_sn_alpha50_stockh.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.8 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Recoil.Punch = weapon.Recoil.Punch * 0.5 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.5 + weapon.Recoil.AdsShakeMultiplier = weapon.Recoil.AdsShakeMultiplier * 0.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stockl.lua new file mode 100644 index 0000000..5fe3973 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stockl.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Singuard Arms Evader" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/alpha50/icon_attachment_sn_alpha50_stockl.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.12 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.12 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + weapon.Zoom.MovementMultiplier = weapon.Zoom.MovementMultiplier * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stocks.lua new file mode 100644 index 0000000..3ae57f7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/alpha50/stock/attachment_vm_sn_alpha50_stocks.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Singuard Arms Assassin" +ATTACHMENT.Model = Model("models/viper/mw/attachments/alpha50/attachment_vm_sn_alpha50_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/alpha50/icon_attachment_sn_alpha50_stocks.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Recoil.Punch = weapon.Recoil.Punch * 0.85 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.85 + weapon.Recoil.AdsShakeMultiplier = weapon.Recoil.AdsShakeMultiplier * 0.95 + weapon.Zoom.BreathingMultiplier = weapon.Zoom.BreathingMultiplier * 0.8 + weapon.Zoom.MovementMultiplier = weapon.Zoom.MovementMultiplier * 0.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_db.lua b/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_db.lua new file mode 100644 index 0000000..32175a8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_db.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "Dragons Breath" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_caldb.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:OnImpact(weapon, dmgInfo, tr) + BaseClass.OnImpact(self, weapon, dmgInfo, tr) + + if (SERVER && table.HasValue(weapon.FireSurfaces, tr.MatType)) then + tr.Entity:Ignite(2) + end + + ParticleEffect(self.Particle || "mw_fas2_muzzleflash_slug", tr.HitPos, tr.HitNormal:Angle()) + util.Decal("Dark", tr.HitPos + tr.HitNormal, tr.HitPos - (tr.HitNormal * 3), {weapon, weapon:GetOwner()}) + weapon:MakeLight(tr.HitPos, Color(255, 50, 0), 2, CurTime() + 1) + + dmgInfo:SetDamageType(dmgInfo:GetDamageType() + DMG_BURN + DMG_SLOWBURN) +end + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon:doDBStats() +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon.Projectile = nil + weapon.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_slug" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_default.lua b/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_default.lua new file mode 100644 index 0000000..396f19b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_default.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "Default" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_ammo.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon.Projectile = nil + weapon.Primary.TrailingSound = nil +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_flechette.lua b/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_flechette.lua new file mode 100644 index 0000000..ba10668 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_flechette.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "Flechette" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_ammo.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Bullet.NumBullets = 20 +end +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + weapon.Projectile = nil + weapon.Primary.TrailingSound = nil +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_he.lua b/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_he.lua new file mode 100644 index 0000000..720e7e6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_he.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "Explosive Rounds" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_caldb.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:OnImpact(weapon, dmgInfo, tr) + BaseClass.OnImpact(self, weapon, dmgInfo, tr) + + if (SERVER) then + util.BlastDamage(weapon, weapon:GetOwner(), tr.HitPos, self.Radius || 32, weapon.Bullet.Damage[1] / weapon.Bullet.NumBullets) + end + + ParticleEffect(self.Particle || "mw_fas2_muzzleflash_slug", tr.HitPos, tr.HitNormal:Angle()) + util.Decal("FadingScorch", tr.HitPos + tr.HitNormal, tr.HitPos - (tr.HitNormal * 3), {weapon, weapon:GetOwner()}) + sound.Play("MW.ExplosiveRounds", tr.HitPos, SNDLVL_100dB, 100, 1) + weapon:MakeLight(tr.HitPos, Color(255, 150, 0), 1, CurTime() + 0.5) + + dmgInfo:SetDamageType(dmgInfo:GetDamageType() + DMG_BLAST + DMG_AIRBOAT + DMG_ALWAYSGIB) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + weapon.Projectile = nil + weapon.Primary.TrailingSound = nil + weapon.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_slug" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_slugs.lua b/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_slugs.lua new file mode 100644 index 0000000..fcb8ddd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/ammo/att_ammo_slugs.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "Slugs" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_ammo.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Bullet.Damage[1] = 120 + weapon.Bullet.Damage[2] = 40 + weapon.Bullet.EffectiveRange = 35 + weapon.Bullet.NumBullets = 1 + weapon.Cone.Ads = 0.15 + weapon.Projectile = { + Class = "mg_slug", + Speed = 4000, + Gravity = 2 + } +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon.Primary.TrailingSound = nil + weapon.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_slug" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barhvy.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barhvy.lua new file mode 100644 index 0000000..0b8cbbe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barhvy.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "VLK AN-94 Sila" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_barhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_barhvy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.94 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.94 + weapon.Cone.Hip = weapon.Cone.Hip * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barlong.lua new file mode 100644 index 0000000..292800b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barlong.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "AN-94 Factory X-438mm" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.06 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.06 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barrel.lua new file mode 100644 index 0000000..9fe37fa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anovember94_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barshort.lua new file mode 100644 index 0000000..be9172a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/barrels/attachment_vm_ar_anovember94_barshort.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "AN-94 Factory 330mm" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_barshort.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.94 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.94 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_angledgrip01.lua new file mode 100644 index 0000000..d9701b1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_angledgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_angledgrip02.lua new file mode 100644 index 0000000..25ceb70 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_angledgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_bipodgrip.lua new file mode 100644 index 0000000..03e57f3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_bipodgrip.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vertbutawesome_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_stubbygrip01.lua new file mode 100644 index 0000000..2fdab1f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_stubbygrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_stubbygrip02.lua new file mode 100644 index 0000000..45f366c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_stubbygrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip01.lua new file mode 100644 index 0000000..c723737 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vertbutawesome_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip02.lua new file mode 100644 index 0000000..bf6129a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vertbutawesome_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip03.lua new file mode 100644 index 0000000..a8e62d8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/grips/attachment_vm_ar_anovember94_vertgrip03.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vertbutawesome_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser01.lua new file mode 100644 index 0000000..f51568c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser02.lua new file mode 100644 index 0000000..2a6b1ca --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser03.lua new file mode 100644 index 0000000..819d324 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/lasers/attachment_vm_ar_anovember94_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_mag.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_mag.lua new file mode 100644 index 0000000..dac42d2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_mag.lua @@ -0,0 +1,36 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anovember94_mag.mdl") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet01"}, + [2] = {"j_bullet02"}, + [3] = {"j_bullet03"}, + [4] = {"j_bullet04"}, + [5] = {"j_bullet05"}, + [6] = {"j_bullet06"}, + [7] = {"j_bullet07"}, + [8] = {"j_bullet08"}, + [9] = {"j_bullet09"}, + [10] = {"j_bullet010"}, + [11] = {"j_bullet011"}, + [12] = {"j_bullet012"}, + [13] = {"j_bullet013"}, + [14] = {"j_bullet014"}, + [15] = {"j_bullet015"}, + [16] = {"j_bullet016"}, + [17] = {"j_bullet017"}, + [18] = {"j_bullet018"}, + [19] = {"j_bullet019"}, + [20] = {"j_bullet020"}, + [21] = {"j_bullet021"}, + [22] = {"j_bullet022"}, + [23] = {"j_bullet023"}, + [24] = {"j_bullet024"}, + [25] = {"j_bullet025"}, + [26] = {"j_bullet026"}, + [27] = {"j_bullet027"}, + [28] = {"j_bullet028"}, + [29] = {"j_bullet029"}, + [30] = {"j_bullet030"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_xmags.lua new file mode 100644 index 0000000..faac162 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_xmags.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_vm_45rnd_mag_eastern" + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet01"}, + [2] = {"j_bullet02"}, + [3] = {"j_bullet03"}, + [4] = {"j_bullet04"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 45 + weapon.Animations.Reload = weapon.Animations.reload_xmag + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_xmag + weapon.Animations.Reload_Fast = weapon.Animations.reload_xmag_fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_xmag_fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + --weapon.Animations.Reload_Empty.Length = weapon.Animations.Reload_Empty.Length + 0.15 + --weapon.Animations.Reload.Length = weapon.Animations.Reload.Length + 0.05 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_xmagslrg.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_xmagslrg.lua new file mode 100644 index 0000000..8273696 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/mags/attachment_vm_ar_anovember94_xmagslrg.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "60 Round Casket Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_xmagslrg.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_xmagslrg.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet01"}, + [2] = {"j_bullet02"}, + [3] = {"j_bullet03"}, + [4] = {"j_bullet04"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 60 + weapon.Animations.Reload = weapon.Animations.reload_xmaglrg + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_xmaglrg + weapon.Animations.Reload_Fast = weapon.Animations.reload_xmaglrg_fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_xmaglrg_fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/muzzles/attachment_vm_ar_anovember94_muzzlebrake.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/muzzles/attachment_vm_ar_anovember94_muzzlebrake.lua new file mode 100644 index 0000000..d9d2ea3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/muzzles/attachment_vm_ar_anovember94_muzzlebrake.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "AN-94 Sonic Brake" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anovember94_tag_tip_5.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_brake.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/perks/attachment_vm_ar_anovember94_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/perks/attachment_vm_ar_anovember94_perk_soh.lua new file mode 100644 index 0000000..e20cec4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/perks/attachment_vm_ar_anovember94_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.reload_xmaglrg = weapon.Animations.reload_xmaglrg_fast + weapon.Animations.reload_empty_xmaglrg = weapon.Animations.reload_empty_xmaglrg_fast + weapon.Animations.reload_xmag = weapon.Animations.reload_xmag_fast + weapon.Animations.reload_empty_xmag = weapon.Animations.reload_empty_xmag_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/sights/attachment_vm_ar_anovember94_thermal_v3.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/sights/attachment_vm_ar_anovember94_thermal_v3.lua new file mode 100644 index 0000000..76ca8c9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/sights/attachment_vm_ar_anovember94_thermal_v3.lua @@ -0,0 +1,33 @@ +ATTACHMENT.Base = "att_optic" +ATTACHMENT.Name = "POS-M3 Thermal Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anovember94_thermal_v3.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_thermal.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2 +} +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anovember94_thermal_v3_lens_hide.mdl"), + LensHideMaterial = Material("viper/MW/attachments/attachment_vm_4x_east_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 0, --a value of zero means 1:1 size with the end of the optic + Thermal = true +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_acog_default2.vmt"), + Size = 700, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Zoom.ViewModelFovMultiplier = 0.95 + weapon.Zoom.FovMultiplier = 0.7 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stock.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stock.lua new file mode 100644 index 0000000..a50c91f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anovember94_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockh.lua new file mode 100644 index 0000000..e71ddac --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockh.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "AN-94 Factory Heavy" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_stockh.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.88 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.88 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.85 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.85 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockl.lua new file mode 100644 index 0000000..53c32cb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockl.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC Ultralight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_stockl.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.1 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.1 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.1 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockno.lua new file mode 100644 index 0000000..4647c1d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockno.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Folded Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_stockno.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_stockno.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stocks.lua new file mode 100644 index 0000000..3958f9a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stocks.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Close Quarters Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_stocks.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.09 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.09 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.05 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.05 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.05 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockskel.lua b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockskel.lua new file mode 100644 index 0000000..b6420b3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/anovember94/stock/attachment_vm_ar_anovember94_stockskel.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "VLK PX-9 Pero" +ATTACHMENT.Model = Model("models/viper/mw/attachments/anovember94/attachment_vm_ar_anov94_stockskel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/anovember94/icon_attachment_ar_anov94_stockskel.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.15 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.15 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.15 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barlong.lua new file mode 100644 index 0000000..514fb12 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barlong.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Oden Factory 730mm" +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.96 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.96 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barlong2.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barlong2.lua new file mode 100644 index 0000000..4fe2ef8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barlong2.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Oden Factory 810mm" +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_barlong2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_barlong2.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.13 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.13 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barrel.lua new file mode 100644 index 0000000..c684422 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barshort.lua new file mode 100644 index 0000000..67be770 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/barrels/attachment_vm_ar_asierra12_barshort.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Oden Factory 420mm" +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.06 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.06 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_angledgrip01.lua new file mode 100644 index 0000000..d9701b1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_angledgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_angledgrip02.lua new file mode 100644 index 0000000..25ceb70 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_angledgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_bipodgrip.lua new file mode 100644 index 0000000..2640785 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_bipodgrip.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_good_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_stubbygrip01.lua new file mode 100644 index 0000000..2fdab1f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_stubbygrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_stubbygrip02.lua new file mode 100644 index 0000000..45f366c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_stubbygrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip01.lua new file mode 100644 index 0000000..866276f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_good_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip02.lua new file mode 100644 index 0000000..b9bebb5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_good_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip03.lua new file mode 100644 index 0000000..a1a7486 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/grips/attachment_vm_ar_asierra12_vertgrip03.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_good_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser01.lua new file mode 100644 index 0000000..baa6c17 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser01.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_vm_laser01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser02.lua new file mode 100644 index 0000000..388ee55 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser02.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_vm_laser02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser03.lua new file mode 100644 index 0000000..35ca3a5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/lasers/attachment_vm_ar_asierra12_laser03.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_vm_laser03" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_mag.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_mag.lua new file mode 100644 index 0000000..89976e2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_mag_sniper.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_mag_sniper.lua new file mode 100644 index 0000000..ba81792 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_mag_sniper.lua @@ -0,0 +1,31 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "10 TP Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_mag_sniper_v3.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_mag_sniper.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 10 + weapon.Primary.Automatic = false + + weapon.Firemodes[1].Name = "Semi Auto" + + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.35 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.35 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.5 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.03 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.03 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.07 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.07 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.1 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.1 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon.Firemodes[2] = nil + weapon.Primary.RPM = 380 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_xmags.lua new file mode 100644 index 0000000..b8c3e84 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_xmags.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "25 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_xmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 25 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_xxmags.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_xxmags.lua new file mode 100644 index 0000000..946175b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/mags/attachment_vm_ar_asierra12_xxmags.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "30 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_xxmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_xxmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 30 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/muzzles/attachment_vm_ar_asierra12_longsuppressor.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/muzzles/attachment_vm_ar_asierra12_longsuppressor.lua new file mode 100644 index 0000000..5807438 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/muzzles/attachment_vm_ar_asierra12_longsuppressor.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Colossus Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_longsuppressor.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_longsuppressor.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.75 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.75 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.2 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.2 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/perks/attachment_vm_ar_asierra12_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/perks/attachment_vm_ar_asierra12_perk_soh.lua new file mode 100644 index 0000000..3a99333 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/perks/attachment_vm_ar_asierra12_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/sights/attachment_vm_ar_asierra12_scope.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/sights/attachment_vm_ar_asierra12_scope.lua new file mode 100644 index 0000000..c13785a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/sights/attachment_vm_ar_asierra12_scope.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_optic_10x" +ATTACHMENT.Name = "Sniper Scope" +ATTACHMENT.Bodygroups ={ + ["tag_top_rail"] = 1 +} +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_scope.vmt") +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_scope_lens_hide.mdl"), + LensHideMaterial = Material("viper/MW/weapons/asierra12/weapon_vm_ar_asierra12_scopeglass.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 400, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_int_default.vmt"), + Size = 1250, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stock.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stock.lua new file mode 100644 index 0000000..0825bf0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stock.lua @@ -0,0 +1 @@ +ATTACHMENT.Base = "att_stock" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stockh.lua new file mode 100644 index 0000000..6606290 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stockh.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC Ballast Pack" +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_stockh.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.13 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.13 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stockl.lua new file mode 100644 index 0000000..753bc80 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/asierra12/stock/attachment_vm_ar_asierra12_stockl.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Oden Ultralight Hollow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/asierra12/attachment_vm_ar_asierra12_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/asierra12/icon_attachment_ar_asierra12_stockl.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.02 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.02 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.97 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.97 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_arbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_arbarrel.lua new file mode 100644 index 0000000..8082466 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_arbarrel.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "407mm Lightweight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_arbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_arbarrel.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.07 + -- weapon.PrintName = "RPK" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_lmgbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_lmgbarrel.lua new file mode 100644 index 0000000..7f6ecf7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_lmgbarrel.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "622mm Long Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_lmgbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_lmgbarrel.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.14 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.14 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_smgbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_smgbarrel.lua new file mode 100644 index 0000000..2b051d6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/barrels/attachment_vm_sm_augolf_smgbarrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_smgbarrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_angledgrip01.lua new file mode 100644 index 0000000..b686aa1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_angledgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_angledgrip02.lua new file mode 100644 index 0000000..ab538c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_angledgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_bipodgrip.lua new file mode 100644 index 0000000..64dc431 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_bipodgrip.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_stubbygrip01.lua new file mode 100644 index 0000000..0ac0a39 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_stubbygrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +-- weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_stubbygrip02.lua new file mode 100644 index 0000000..a2cc466 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_stubbygrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip01.lua new file mode 100644 index 0000000..98c5c4d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip02.lua new file mode 100644 index 0000000..5d0e9f5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip03.lua new file mode 100644 index 0000000..d9f34e0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/grips/attachment_vm_sm_augolf_vertgrip03.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser01_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser01_cylinder.lua new file mode 100644 index 0000000..eef80fe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser01_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser02_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser02_cylinder.lua new file mode 100644 index 0000000..c086feb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser02_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser03_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser03_cylinder.lua new file mode 100644 index 0000000..8ad369e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/lasers/attachment_vm_sm_augolf_laser03_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_armag.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_armag.lua new file mode 100644 index 0000000..e5fa7e5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_armag.lua @@ -0,0 +1,29 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "5.45x39mm 30-Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_armag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_armag.vmt") +ATTACHMENT.ExcludedAttachments = {"att_perk_rof"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon:doCalConversionStats() + weapon.Primary.ClipSize = 30 + weapon.Animations.Reload = weapon.Animations.Reload_ARmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_ARmag + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.96 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.96 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Primary.RPM = weapon.Primary.RPM + (769 - 680) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.195 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.195 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.2 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.2 + weapon.Bullet.Penetration.Thickness = weapon.Bullet.Penetration.Thickness * 2 + weapon.Bullet.Range = weapon.Bullet.Range * 1.5 + weapon.Cone.Increase = weapon.Cone.Increase * 2 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.5 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.5 + -- weapon.PrintName = "AK-74" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_drummag.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_drummag.lua new file mode 100644 index 0000000..25ffe44 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_drummag.lua @@ -0,0 +1,30 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "5.56 NATO 60-Round Drum" +ATTACHMENT.Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_drummag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_drummag.vmt") +ATTACHMENT.ExcludedAttachments = {"att_perk_rof"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon:doCalConversionStats() + weapon.Primary.ClipSize = 60 + weapon.Animations.Reload = weapon.Animations.Reload_DrumMag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_DrumMag + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.8 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.8 + weapon.Primary.RPM = weapon.Primary.RPM + (769 - 680) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.195 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.195 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.2 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.2 + weapon.Bullet.Penetration.Thickness = weapon.Bullet.Penetration.Thickness * 2 + weapon.Bullet.Range = weapon.Bullet.Range * 1.5 + weapon.Cone.Increase = weapon.Cone.Increase * 2 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.5 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_mag.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_mag.lua new file mode 100644 index 0000000..488381c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_smgmag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_smg_xmag.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_smg_xmag.lua new file mode 100644 index 0000000..dbe5819 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/mags/attachment_vm_sm_augolf_smg_xmag.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "32 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_smg_xmag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_smg_xmag.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 32 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/perks/attachment_vm_sm_augolf_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/perks/attachment_vm_sm_augolf_perk_soh.lua new file mode 100644 index 0000000..080aac2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/perks/attachment_vm_sm_augolf_perk_soh.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_ARmag = weapon.Animations.Reload_ARmag_Fast + weapon.Animations.Reload_Empty_ARmag = weapon.Animations.Reload_Empty_ARmag_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Reload_DrumMag = weapon.Animations.Reload_DrumMag_Fast + weapon.Animations.Reload_Empty_DrumMag = weapon.Animations.Reload_Empty_DrumMag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/rails/attachment_vm_sm_augolf_arrail.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/rails/attachment_vm_sm_augolf_arrail.lua new file mode 100644 index 0000000..55955bd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/rails/attachment_vm_sm_augolf_arrail.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_rail" +ATTACHMENT.Name = "AR Rail" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_arrail.vmt") +ATTACHMENT.Bodygroups = { + ["tag_rail_upper"] = 2, + ["tag_sight"] = 3 +} +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sm_augolf_lmgrail"} +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/sights/attachment_vm_sm_augolf_lmgrail.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/sights/attachment_vm_sm_augolf_lmgrail.lua new file mode 100644 index 0000000..a5f15f2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/sights/attachment_vm_sm_augolf_lmgrail.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_optic_3x" +ATTACHMENT.Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_lmgrail.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_lmgrail.vmt") +ATTACHMENT.Name = "Integral 3.0x Optic" +ATTACHMENT.Bodygroups = { + ["tag_rail_upper"] = 3, + ["tag_sight"] = 2 +} +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_lmgrail_hide.mdl"), + LensHideMaterial = Material("viper/mw/weapons/augolf/weapon_vm_sm_augolf_scope_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 20, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_aug.vmt"), + Size = 800, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stock_tactical.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stock_tactical.lua new file mode 100644 index 0000000..10e89b6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stock_tactical.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FFS Heavy Stock Pro" +ATTACHMENT.Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_stock_tactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_stock_tactical.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.75 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stockl.lua new file mode 100644 index 0000000..35541f4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stockl.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Forge TAC CQB" +ATTACHMENT.Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_stockl.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.06 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.06 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stocks.lua new file mode 100644 index 0000000..0f15888 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/augolf/stock/attachment_vm_sm_augolf_stocks.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Ultralight Hollow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/augolf/attachment_vm_sm_augolf_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_stocks.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.08 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.1 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_accessory.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_accessory.lua new file mode 100644 index 0000000..c8e59d3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_accessory.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default" +ATTACHMENT.Category = "Accessories" +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_ammo.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_ammo.lua new file mode 100644 index 0000000..ca21fbb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_ammo.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default Ammo" +ATTACHMENT.Category = "Ammo" +function ATTACHMENT:OnImpact(weapon, dmgInfo, tr) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_arm.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_arm.lua new file mode 100644 index 0000000..52f8fd3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_arm.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default" +ATTACHMENT.Category = "Arms" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_arrow.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_arrow.lua new file mode 100644 index 0000000..6806bb7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_arrow.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default" +ATTACHMENT.Category = "Arrows" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_barrel.lua new file mode 100644 index 0000000..38627f7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_barrel.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default Barrel" +ATTACHMENT.Category = "Barrels" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_base.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_base.lua new file mode 100644 index 0000000..fa74273 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_base.lua @@ -0,0 +1,84 @@ +ATTACHMENT.Name = "Attachment" +ATTACHMENT.Category = "Attachments" +ATTACHMENT.Icon = Material("mg/genericattachment") +ATTACHMENT.RenderOverride = false +ATTACHMENT.ShowOnWorldModel = true +function ATTACHMENT:Render(weapon) + if (self == weapon.bipod) then + if (IsValid(self.m_Model)) then + self.m_Model:SetPoseParameter("bipod", weapon:HasFlag("BipodDeployed") && 1 || 0) + end + + if (IsValid(self.m_TpModel)) then + self.m_TpModel:SetPoseParameter("bipod", weapon:HasFlag("BipodDeployed") && 1 || 0) + end + end +end +function ATTACHMENT:Stats(weapon) +end +function ATTACHMENT:PostProcess(weapon) +end +function ATTACHMENT:Appearance(model, category) +end +function ATTACHMENT:Init(weapon) +end +function ATTACHMENT:PostInitModels(weapon) +end +function ATTACHMENT:OnRemove(weapon) + if (CLIENT) then + if (IsValid(self.m_Model)) then + self.m_Model:Remove() + end + + if (IsValid(self.m_TpModel)) then + self.m_TpModel:Remove() + end + end +end + +--new functionality to replace materials in model +--if returned path + mat doesn't exist on disk, default material will be applied +function ATTACHMENT:OverrideMaterial(path, mat) + return path, mat +end + +--new functionality to replace materials in weapon (viewmodel / worldmodel) +--if returned path + mat doesn't exist on disk, default material will be applied +function ATTACHMENT:OverrideWeaponMaterial(path, mat) + return path, mat +end + +--new functionality to replace materials in other attachments +--if returned path + mat doesn't exist on disk, default material will be applied +function ATTACHMENT:OverrideAttachmentsMaterial(path, mat) + return path, mat +end + +--playermodel color support for attachment model! +function ATTACHMENT:EnablePlayerColor(weapon) + if (CLIENT) then + if (IsValid(self.m_Model)) then + self.m_Model.plyColor = Vector() + + function self.m_Model:GetPlayerColor() + if (IsValid(weapon) && IsValid(weapon:GetOwner()) && weapon:GetOwner().GetPlayerColor != nil) then + self.plyColor = weapon:GetOwner():GetPlayerColor() + end + + return self.plyColor + end + end + + if (IsValid(self.m_TpModel)) then + self.m_TpModel.plyColor = Vector() + + function self.m_TpModel:GetPlayerColor() + if (IsValid(weapon) && IsValid(weapon:GetOwner()) && weapon:GetOwner().GetPlayerColor != nil) then + self.plyColor = weapon:GetOwner():GetPlayerColor() + end + + return self.plyColor + end + end + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_bolt.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_bolt.lua new file mode 100644 index 0000000..90035bd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_bolt.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default" +ATTACHMENT.Category = "Bolts" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_conversion.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_conversion.lua new file mode 100644 index 0000000..2dbf3c0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_conversion.lua @@ -0,0 +1,100 @@ +require("mw_utils") + +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default" +ATTACHMENT.Category = "Conversions" + +--[[ +you likely noticed this is just a glorified attachment, so everything that works for other types works +here as well (bodygroups, model, etc etc) +structure of a typical conversion goes like this: + +-- +with conversions you completely ditch the original gun's customization slot, +which means you gotta provide a default attachment too (the first one) + +ATTACHMENT.Conversion = { + [2] = {"att_example1", "att_example2"}, + [4] = {"att_example3", "att_example4"}, + [5] = {} <- will remove slot 5 +} + +! note how i skipped some slots (they are the same ones you use in injectors): if you wish to not replace a slot, +you simply omit it ! +-- + +-- +with replacements you handpick some attachments that change with your conversion + +ATTACHMENT.Replacements = { + ["att_original_from_swep1"] = "att_your_new_attachment1", + ["att_original_from_swep2"] = "att_your_new_attachment2" +} +-- + +in injectors, you don't need to specify a slot: base will check if you're trying to add a conversion to the gun. +don't worry about it, just let it manage it for you +this also means you don't have to inject the attachments you use above manually!! they will still show up +if the conversion is trying to load an attachment the player hasn't downloaded it will not get added + +later down the line i plan on adding their own ui to conversions, for now we can live with them just being +an attachment button... + +lastly, please remember the philosophy of our customization. are you sure your set needs to be a conversion? +if you're able to, consider making it part of the gun instead; don't take customization away from the player. +this sytem can easily throw everything out of the window if you're not careful. +enjoy~! +]] + +local function getSlotAndIndex(cust, originalClass) + for slot, atts in pairs(weapon.Customization) do + for index, attClass in pairs(atts) do + if (attClass == originalClass) then + return slot, index + end + end + end + + return -1000, -1000 +end + +local function stripUnknownAttachments(atts) + for i = #atts, 1, -1 do + if (MW_ATTS[atts[i]] == nil) then + table.remove(atts, i) + end + end +end + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + if (self.Conversion != nil) then + for slot, atts in pairs(self.Conversion) do + if (slot <= SLOT_CONVERSIONS) then + continue + end + + if (table.IsEmpty(atts)) then + weapon.Customization[slot] = nil + continue + end + + local strippedAtts = table.Copy(atts) + stripUnknownAttachments(strippedAtts) + + weapon.Customization[slot] = strippedAtts + end + end + + if (self.Replacements != nil) then + for originalClass, newClass in pairs(self.Replacements) do + local rSlot, rIndex = getSlotAndIndex(weapon.Customization, originalClass) + + if (rSlot > SLOT_CONVERSIONS && rIndex > SLOT_CONVERSIONS && MW_ATTS[newClass] != nil) then + weapon.Customization[rSlot][rIndex] = newClass + end + end + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_forend.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_forend.lua new file mode 100644 index 0000000..54283f7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_forend.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default Forend" +ATTACHMENT.Category = "Forends" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_grip.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_grip.lua new file mode 100644 index 0000000..de729e4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_grip.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default" +ATTACHMENT.Category = "Grips" + +function ATTACHMENT:ChangeRecoil(var, mul) + return var < 0 && var / mul || var * mul +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_hybrid.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_hybrid.lua new file mode 100644 index 0000000..2c179d0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_hybrid.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_optic" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Render(weapon) + if (weapon:GetAimModeDelta() > 0.3) then + self.m_Model:SetBodygroup( + self.m_Model:FindBodygroupByName(self.Optic.LensBodygroup), + 1 + ) + self:DoReticleStencil(self.m_Model, self.ReticleHybrid, weapon) + else + BaseClass.Render(self, weapon) + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_laser.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_laser.lua new file mode 100644 index 0000000..83e4559 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_laser.lua @@ -0,0 +1,154 @@ +require("mw_math") +require("mw_utils") + +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default" +ATTACHMENT.Category = "Lasers" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:RemoveFlashlightStuffFromModel(flashModel) + if (IsValid(flashModel)) then + if (flashModel.mw_flashlightProjTexture != nil) then + flashModel.mw_flashlightProjTexture:Remove() + end + + if (flashModel.mw_flashlightParticle != nil) then + flashModel.mw_flashlightParticle:StopEmissionAndDestroyImmediately() + end + end +end + +function ATTACHMENT:DoLaserRender(weapon, laserModel) + if (IsValid(GetViewEntity())) then + if (CurTime() < GetViewEntity():GetNWFloat("MW19_EMPEffect", CurTime())) then + return + end + end + + if (self.Laser == nil) then + return + end + + local att = mw_utils.GetFastAttachment(laserModel, self.Laser.Attachment) + + local tr = util.TraceLine({ + start = att.Pos + att.Ang:Forward() * -10, + endpos = att.Pos + att.Ang:Forward() * 1000, + filter = {weapon, weapon:GetOwner()}, + mask = MASK_SHOT + }) + + if (laserModel.mw_laserTrailPos == nil) then + laserModel.mw_laserTrailPos = tr.HitPos + end + + local distSq = tr.HitPos:DistToSqr(att.Pos) + local beamDelta = math.Clamp(distSq / ((self.Laser.BeamSize * 5) * (self.Laser.BeamSize * 5)), 0, 1) + + local color = self.Laser.Color + + if (GetConVar("mgbase_fx_laser_weaponcolor", 0):GetBool()) then + if (IsValid(weapon:GetOwner()) && weapon:GetOwner():IsPlayer()) then + local c = weapon:GetOwner():GetWeaponColor() + color = Color(c.x * 255, c.y * 255, c.z * 255, 255) + end + end + + local pos = tr.HitPos * 1 + + if (weapon:GetSight() == nil || weapon:GetSight().ReticleHybrid == nil) then + mw_math.SafeLerpVector((weapon:GetAimDelta() * 0.8) * weapon:GetAimModeDelta(), pos, EyePos() + EyeAngles():Forward() * 300) + end + + render.SetMaterial(self.Laser.BeamMaterial) + render.DrawBeam(att.Pos, pos, self.Laser.BeamWidth * math.random(0.5, 1), 0, 1, color) + + local normal = tr.HitNormal * 1 + mw_math.SafeLerpVector(weapon:GetAimDelta(), normal, (EyePos() - pos):GetNormalized()) + + local sens = Lerp(weapon:GetAimDelta(), 50, 150) + mw_math.SafeLerpVector(math.min(sens * FrameTime(), 1), laserModel.mw_laserTrailPos, pos) + + local bCanDrawDistance = tr.HitPos:DistToSqr(att.Pos) > (10 * 10) + + if (!bCanDrawDistance) then + return + end + + render.SetMaterial(self.Laser.DotMaterial) + render.DrawQuadEasy(pos, normal, self.Laser.DotSize, self.Laser.DotSize, color, math.random(179, 180)) + render.DrawBeam(laserModel.mw_laserTrailPos, pos, self.Laser.DotSize * 0.8, 0, 0.5, color) +end + +function ATTACHMENT:DrawFlashlight(weapon, model) + if (IsValid(GetViewEntity())) then + if (CurTime() < GetViewEntity():GetNWFloat("MW19_EMPEffect", CurTime())) then + self:RemoveFlashlightStuffFromModel(model) + return + end + end + + if (self.Flashlight == nil) then + return + end + + if (!weapon:HasFlag("FlashlightOn") || weapon:GetOwner():FlashlightIsOn() || weapon:HasFlag("Holstering")) then + self:RemoveFlashlightStuffFromModel(model) + return + end + + local att = mw_utils.GetFastAttachment(model, self.Flashlight.Attachment) + + if (!IsValid(model.mw_flashlightParticle)) then + model.mw_flashlightParticle = CreateParticleSystem(model, "flashlight_mw19", PATTACH_POINT_FOLLOW, mw_utils.LookupAttachmentCached(model, self.Flashlight.Attachment)) + model.mw_flashlightParticle:StartEmission() + model.mw_flashlightParticle:SetShouldDraw(false) + model.mw_flashlightParticle:SetIsViewModelEffect(model == self.m_Model) + end + + local particle = model.mw_flashlightParticle + particle:SetControlPoint(1, att.Pos) + particle:SetControlPointOrientation(1, att.Ang:Forward(), att.Ang:Right(), att.Ang:Up()) + particle:Render() + + if (!IsValid(model.mw_flashlightProjTexture)) then + model.mw_flashlightProjTexture = ProjectedTexture() + model.mw_flashlightProjTexture:SetFOV(50) + model.mw_flashlightProjTexture:SetTexture(self.Flashlight.FlashlightMaterial:GetTexture("$basetexture")) + end + + local proj = model.mw_flashlightProjTexture + proj:SetPos(att.Pos + att.Ang:Forward() * -3) + proj:SetAngles(att.Ang) + proj:Update() +end + +local bDrewViewModel = false + +function ATTACHMENT:Render(weapon, model) + BaseClass.Render(self, weapon) + + self:DoLaserRender(weapon, model) + + if (model == self.m_Model) then + self:DrawFlashlight(weapon, model) + bDrewViewModel = true + end + + if (model == self.m_TpModel) then + if (!bDrewViewModel) then + self:RemoveFlashlightStuffFromModel(self.m_Model) + end + bDrewViewModel = false + end +end + +function ATTACHMENT:OnRemove(weapon) + if (CLIENT) then + self:RemoveFlashlightStuffFromModel(self.m_Model) + self:RemoveFlashlightStuffFromModel(self.m_TpModel) + end + + BaseClass.OnRemove(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_magazine.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_magazine.lua new file mode 100644 index 0000000..cecfa16 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_magazine.lua @@ -0,0 +1,127 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default Magazine" +ATTACHMENT.Category = "Magazines" + +--for gameplay mag +ATTACHMENT.BulletList = {} + +--for animation mag (offhand) +ATTACHMENT.ReserveBulletList = {} + +ATTACHMENT.PoseParameter = "bullets_offset" --the spring + +local small = Vector() +local normal = Vector(1, 1, 1) + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:SetMagFollowerPoseParam(weapon, val) + local ppid = self.m_Model:LookupPoseParameter(self.PoseParameter) + if (ppid >= 0) then + local min, max = self.m_Model:GetPoseParameterRange(ppid) + self.m_Model:SetPoseParameter(self.PoseParameter, math.Clamp(val, min, max)) + --self.m_Model:InvalidateBoneCache() + end +end + +function ATTACHMENT:Render(weapon) + BaseClass.Render(self, weapon) + + if (!weapon:IsCarriedByLocalPlayer()) then + return + end + + if (!weapon:HasFlag("Reloading")) then + self.m_Model._clip = weapon:Clip1() + self.m_Model._ammo = weapon:Ammo1() + self:SetMagFollowerPoseParam(weapon, weapon:GetMaxClip1() - weapon:Clip1()) + end +end + +local function cacheBones(model, bones) + for _, name in pairs(bones) do + model.cachedBones[name] = {id = model:LookupBone(name), remove = false} + end +end + +function ATTACHMENT:PostInitModels(weapon) + BaseClass.PostInitModels(self, weapon) + + if (SERVER) then + return + end + + if (table.IsEmpty(self.BulletList) && table.IsEmpty(self.ReserveBulletList)) then + return + end + + self.m_Model._requestedReset = false + self.m_Model._clip = -1 + self.m_Model._lastClip = -1 + self.m_Model._ammo = -1 + self.m_Model._lastAmmo = -1 + self.m_Model.BulletList = table.Copy(self.BulletList) + self.m_Model.ReserveBulletList = table.Copy(self.ReserveBulletList) + + self.m_Model:SetupBones() + self.m_Model.cachedBones = {} + for _, bones in pairs(self.m_Model.BulletList) do + cacheBones(self.m_Model, bones) + end + + for _, bones in pairs(self.m_Model.ReserveBulletList) do + cacheBones(self.m_Model, bones) + end + + self.m_Model:AddCallback("BuildBonePositions", function(ent, numbones) + local function scaleBones(ent, bones, bRemove) + for i, bone in pairs(bones) do + ent.cachedBones[bone].remove = bRemove + end + end + + if (ent._lastClip != ent._clip) then + for i, bones in pairs(ent.BulletList) do + scaleBones(ent, bones, ent._clip <= i) + end + + ent._lastClip = ent._clip + end + + if (ent._lastAmmo != ent._ammo + ent._clip) then + for i, bones in pairs(ent.ReserveBulletList) do + scaleBones(ent, bones, weapon:Clip1() + weapon:Ammo1() < i) + end + + ent._lastAmmo = ent._ammo + ent._clip + end + + if (ent._requestedReset) then + for i, bones in pairs(ent.BulletList) do + scaleBones(ent, bones, weapon:Clip1() + weapon:Ammo1() < i) + end + + ent._requestedReset = false + end + + for name, boneStuff in pairs(ent.cachedBones) do + if (!boneStuff.remove) then + continue + end + + local mat = ent:GetBoneMatrix(boneStuff.id) + + if (mat == nil) then + continue + end + + mat:SetScale(small) + ent:SetBoneMatrix(boneStuff.id, mat) + end + end) +end + +function ATTACHMENT:ResetBullets(weapon) + self.m_Model._requestedReset = true + self:SetMagFollowerPoseParam(weapon, weapon:GetMaxClip1() - (weapon:Clip1() + weapon:Ammo1())) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_magazine_dual.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_magazine_dual.lua new file mode 100644 index 0000000..bfb341f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_magazine_dual.lua @@ -0,0 +1,55 @@ +--Class for VElements that have two magazines in their animations +require("mw_utils") +ATTACHMENT.Base = "att_magazine" + +ATTACHMENT.VElement2 = { + Bone = "j_mag2", + Position = Vector(), + Angles = Angle(), + Offsets = {} +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Init(weapon) + BaseClass.Init(self, weapon) + + if (CLIENT) then + self.m_Model2 = ClientsideModel(self.Model, weapon.RenderGroup) + self.m_Model2:SetRenderMode(weapon.RenderMode) + self.m_Model2:SetMoveType(MOVETYPE_NONE) + self.m_Model2:SetOwner(weapon:GetViewModel()) + self.m_Model2.bAttachmentRenderOverride = self.RenderOverride + + self.m_Model2:FollowBone(weapon:GetViewModel(), mw_utils.LookupBoneCached(weapon:GetViewModel(), self.VElement2.Bone)) + + --hack to move element + local oldve = table.Copy(self.VElement) + local oldModel = self.m_Model + + self.VElement = table.Copy(self.VElement2) + self.m_Model = self.m_Model2 + weapon:MoveVElement(weapon:GetViewModel(), self) + + self.VElement = oldve + self.m_Model = oldModel + end +end + +function ATTACHMENT:OnRemove(weapon) + BaseClass.OnRemove(self, weapon) + + if (CLIENT) then + if (IsValid(self.m_Model2)) then + self.m_Model2:Remove() + end + end +end + +function ATTACHMENT:Render(weapon) + BaseClass.Render(self, weapon) + + if (IsValid(self.m_Model2)) then + -- self.m_Model2:DrawModel() + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_miscellaneous.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_miscellaneous.lua new file mode 100644 index 0000000..d1c0e7c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_miscellaneous.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default" +ATTACHMENT.Category = "Misc" +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_muzzle.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_muzzle.lua new file mode 100644 index 0000000..6e51aa9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_muzzle.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default" +ATTACHMENT.Category = "Muzzle Devices" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_optic.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_optic.lua new file mode 100644 index 0000000..76b9b38 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_optic.lua @@ -0,0 +1,269 @@ +require("mw_utils") +ATTACHMENT.Base = "att_sight_reticle" + +if (SERVER) then + return +end + +ATTACHMENT._RTTexture = GetRenderTarget("mw19_rt", 512, 512) + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +local ParallaxMaterial = Material("mw19_parallax.vmt") +local RefractMaterial = Material("mw19_scoperefract.vmt") +local RefractTintMaterial = Material("mw19_refracttint.vmt") +local FishEyeMaterial = Material("mw_fisheyelens") + +local function util_NormalizeAngles(a) + a.p = math.NormalizeAngle(a.p) + a.y = math.NormalizeAngle(a.y) + a.r = math.NormalizeAngle(a.r) + return a +end + +function ATTACHMENT:Init(weapon) + BaseClass.Init(self, weapon) + + self.hideModel = ClientsideModel(self.Optic.HideModel, weapon.RenderGroup) + self.hideModel:SetMoveType(MOVETYPE_NONE) + self.hideModel:SetNoDraw(true) +end + +function ATTACHMENT:OnRemove(weapon) + BaseClass.OnRemove(self, weapon) + + if (IsValid(self.hideModel)) then + self.hideModel:Remove() + end +end + +--https://github.com/Lexicality/stencil-tutorial/blob/master/lua/stencil_tutorial/06_cutting_holes_in_props.lua +function ATTACHMENT:Render(weapon, model) + + local bCanRemoveBodygroup = weapon:GetAimModeDelta() < 0.5 && weapon:GetAimDelta() > 0.9 + + self.m_Model:SetBodygroup( + self.m_Model:FindBodygroupByName(self.Optic.LensBodygroup), + bCanRemoveBodygroup && 0 || 1 + ) + + if (!bCanRemoveBodygroup) then + self.m_Model:DrawModel() + + if (!self.m_bRemovedRT) then + render.PushRenderTarget(self._RTTexture, 0, 0, 1024, 1024) + render.PopRenderTarget() + self.Optic.LensHideMaterial:SetTexture("$basetexture", self._RTTexture) + self.m_bRemovedRT = true + end + + return + end + + self.m_bRemovedRT = false + + render.SetStencilWriteMask(0xFF) + render.SetStencilTestMask(0xFF) + render.SetStencilReferenceValue(0) + render.SetStencilPassOperation(STENCIL_KEEP) + render.SetStencilZFailOperation(STENCIL_KEEP) + render.ClearStencil() + render.SetStencilEnable(true) + render.SetStencilReferenceValue(MWBASE_STENCIL_REFVALUE + 2) + render.SetStencilCompareFunction(STENCIL_NEVER) + render.SetStencilFailOperation(STENCIL_REPLACE) + + --dirty and quick way to make it work with velements and bonemerged + self.m_Model:SetupBones() + self.m_Model:InvalidateBoneCache() + local matrix = self.m_Model:GetBoneMatrix(0) + + self.hideModel:SetPos(matrix:GetTranslation()) + self.hideModel:SetAngles(matrix:GetAngles()) + + self.hideModel:DrawModel() + + render.SetStencilCompareFunction(STENCIL_NOTEQUAL) + render.SetStencilFailOperation(STENCIL_KEEP) + + self.m_Model:DrawModel() + + render.SetStencilCompareFunction(STENCIL_EQUAL) + render.SetStencilFailOperation(STENCIL_KEEP) + + if (self.Optic.Thermal) then + self:DrawThermal(weapon) + end + + render.SetStencilEnable(false) + render.ClearStencil() + + ------------------------------ + + self:DoReticleStencil(self.hideModel, self.Reticle, weapon) + + ------------------------------ + + local att = mw_utils.GetFastAttachment(self.m_Model, self.Reticle.Attachment) + + render.PushRenderTarget(self._RTTexture, 0, 0, 1024, 1024) + cam.Start2D() + render.Clear(0, 0, 0, 0) + --REFTINT: + local tintSize = 400 + surface.SetMaterial(RefractTintMaterial) + surface.SetDrawColor(0, 0, 0, 255) + --for i = 1, 2, 1 do + surface.DrawTexturedRect(tintSize * -0.5, tintSize * -0.5, ScrW() + tintSize, ScrH() + tintSize) + --end + --[[render.SetMaterial(FishEyeMaterial) + render.UpdateScreenEffectTexture() + render.DrawScreenQuad()]] + + ---- + if (!self.Optic.Thermal) then + self:DrawParallax(weapon, att.Ang) + end + cam.End2D() + render.PopRenderTarget() + self.Optic.LensHideMaterial:SetTexture("$basetexture", self._RTTexture) +end + +local thermalCC = { + [ "$pp_colour_addr" ] = 0, + [ "$pp_colour_addg" ] = 0, + [ "$pp_colour_addb" ] = 0, + [ "$pp_colour_brightness" ] = 1.54, + [ "$pp_colour_contrast" ] = 0.1, + [ "$pp_colour_colour" ] = 0, + [ "$pp_colour_mulr" ] = 0, + [ "$pp_colour_mulg" ] = 0, + [ "$pp_colour_mulb" ] = 0 +} + +local ThermalNoiseMaterial = Material("mw19_thermalnoise.vmt") +local sunMaterial = Material("mg/cursorglow") + +local function drawEnt(ent) + if (ent:GetNoDraw()) then + return + end + + ent:DrawModel() +end + +function ATTACHMENT:DrawThermal(weapon) + --DrawColorModify(thermalCC) + + local backgroundColor = self.Optic.ThermalBackgroundColor || Color(50, 50, 50, 240) + local bodyColor = self.Optic.ThermalBodiesColor || Color(255, 255, 255, 150) + + cam.Start2D() + surface.SetDrawColor(backgroundColor.r, backgroundColor.g, backgroundColor.b, backgroundColor.a) + surface.DrawRect(0, 0, ScrW(), ScrH()) + + local sun = util.GetSunInfo() + + if (sun != nil && sun.obstruction > 0) then + local pos = EyePos() + sun.direction * 4096 + pos = pos:ToScreen() + local alpha = 255 * sun.obstruction + local sunSize = 1024 + + surface.SetMaterial(sunMaterial) + surface.SetDrawColor(bodyColor.r, bodyColor.g, bodyColor.b, alpha) + surface.DrawTexturedRect(pos.x - (sunSize * 0.5), pos.y - (sunSize * 0.5), sunSize, sunSize) + end + + surface.SetMaterial(ThermalNoiseMaterial) + surface.SetDrawColor(255, 255, 255, 255) + surface.DrawTexturedRect(ScrW() * 0.25, ScrH() * 0.25, ScrW() * 0.5, ScrH() * 0.5) + cam.End2D() + + render.SetStencilPassOperation(STENCILOPERATION_INCR) + + render.SetBlend(0) + if (IsValid(weapon:GetViewModel().m_CHands)) then + drawEnt(weapon:GetViewModel().m_CHands) + end + + if (IsValid(weapon:GetViewModel().m_Gloves)) then + drawEnt(weapon:GetViewModel().m_Gloves) + end + + cam.Start3D() + for i, e in pairs(ents.GetAll()) do + if (e:IsNPC() || e:IsPlayer() || e:IsNextBot()) then + if (e:Health() <= 0) then + continue + end + + drawEnt(e) + end + end + cam.End3D() + render.SetBlend(1) + + render.SetStencilCompareFunction(STENCIL_LESS) + + cam.Start2D() + surface.SetDrawColor(bodyColor.r, bodyColor.g, bodyColor.b, bodyColor.a) + surface.DrawRect(0, 0, ScrW(), ScrH()) + cam.End2D() + + render.SetStencilEnable(false) + render.ClearStencil() +end + +function ATTACHMENT:DrawParallax(weapon, ang) + ang:Sub(EyeAngles()) + local angDif = util_NormalizeAngles(ang) * 100 + render.SetStencilWriteMask(0xFF) + render.SetStencilTestMask(0xFF) + render.SetStencilReferenceValue(0) + render.SetStencilCompareFunction(STENCIL_ALWAYS) + render.SetStencilPassOperation(STENCIL_REPLACE) + render.SetStencilFailOperation(STENCIL_KEEP) + render.SetStencilZFailOperation(STENCIL_KEEP) + render.SetStencilEnable(true) + render.SetStencilReferenceValue(MWBASE_STENCIL_REFVALUE + 2) + + local pSize = self.Optic.ParallaxSize - (weapon.Camera.Shake * 200) + surface.SetMaterial(ParallaxMaterial) + surface.SetDrawColor(0, 0, 0, 255) + surface.DrawTexturedRect(ScrW() * -0.5 - pSize * 0.5 - angDif.y, ScrH() * -0.5 - pSize * 0.5 + angDif.p, ScrW() * 2 + pSize, ScrH() * 2 + pSize) + + render.SetStencilCompareFunction(STENCIL_NOTEQUAL) + + surface.SetDrawColor(0, 0, 0, 255) + surface.DrawRect(0, 0, ScrW(), ScrH()) + + render.SetStencilEnable(false) + render.ClearStencil() +end + +local glintMaterial = Material("sprites/glow04_noz") + +function ATTACHMENT:WorldModelRender(weapon) + if (weapon:IsCarriedByLocalPlayer()) then + return + end + + local pos, ang = self.m_TpModel:GetBonePosition(0) + local dot = ang:Forward():Dot(EyeAngles():Forward()) + + if (dot > 0) then + return + end + + local dist = EyePos():Distance(pos) + + if (dist < 1024) then + return + end + + local sizeFactor = (dist * 0.01) + local scale = 6 * (0.5 - weapon.Zoom.FovMultiplier) * sizeFactor + local randomSize = math.Rand(0, 2) * sizeFactor + render.SetMaterial(glintMaterial) + render.DrawSprite(pos + ang:Forward() * 10 + ang:Up() * 2, scale + (randomSize * 2), (scale * 0.5) + randomSize, Color(255, 255, 255, 255)) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_perk.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_perk.lua new file mode 100644 index 0000000..3556a5b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_perk.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default" +ATTACHMENT.Category = "Perks" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + if (weapon.Bullet != nil) then + weapon.Bullet.Ricochet = false + end + + weapon.Zoom.MovementMultiplier = 1 + weapon.Zoom.BreathingMultiplier = 1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_pistolgrip.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_pistolgrip.lua new file mode 100644 index 0000000..9b63f37 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_pistolgrip.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default Pistol Grip" +ATTACHMENT.Category = "Pistol Grips" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_pump.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_pump.lua new file mode 100644 index 0000000..5c2b3d2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_pump.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default Pump" +ATTACHMENT.Category = "Pumps" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_rail.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_rail.lua new file mode 100644 index 0000000..ba03e14 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_rail.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default Rail" +ATTACHMENT.Category = "Rails" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_receiver.lua new file mode 100644 index 0000000..aa5a58f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_receiver.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default Receiver" +ATTACHMENT.Category = "Receivers" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_sight.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_sight.lua new file mode 100644 index 0000000..de9e806 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_sight.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default Sight" +ATTACHMENT.Category = "Sights" +ATTACHMENT.BonemergeToCategory = {"Receivers"} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_sight_reticle.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_sight_reticle.lua new file mode 100644 index 0000000..3eac213 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_sight_reticle.lua @@ -0,0 +1,51 @@ +require("mw_utils") +ATTACHMENT.Base = "att_sight" +ATTACHMENT.RenderOverride = true --allows you to control when to draw att's model + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Render(weapon) + BaseClass.Render(self, weapon) + self:DoReticleStencil(self.m_Model, self.Reticle, weapon) +end + +function ATTACHMENT:DoReticleStencil(model, ret, weapon) + if (IsValid(GetViewEntity())) then + if (CurTime() < GetViewEntity():GetNWFloat("MW19_EMPEffect", CurTime())) then + model:DrawModel() + return + end + end + + render.SetStencilWriteMask(0xFF) + render.SetStencilTestMask(0xFF) + render.SetStencilReferenceValue(0) + render.SetStencilCompareFunction(STENCIL_ALWAYS) + render.SetStencilPassOperation(STENCIL_REPLACE) + render.SetStencilFailOperation(STENCIL_KEEP) + render.SetStencilZFailOperation(STENCIL_KEEP) + render.SetStencilEnable(true) + render.SetStencilReferenceValue(MWBASE_STENCIL_REFVALUE + 1) + model:DrawModel() + render.SetStencilCompareFunction(STENCIL_EQUAL) + + local att = mw_utils.GetFastAttachment(self.m_Model, ret.Attachment) + + local size = ret.Size + local color = ret.Color + render.SetMaterial(ret.Material) + --i don't know which one is faster, but the second one has a roll option + --render.DrawSprite(att.Pos + att.Ang:Forward() * 100, size * 0.01, size * 0.01, color) + + local offset = att.Ang:Forward() * 100 + + if (ret.Offset != nil) then + offset = offset + att.Ang:Right() * ret.Offset.x + offset = offset + att.Ang:Up() * ret.Offset.y + end + + render.DrawQuadEasy(att.Pos + offset, att.Ang:Forward():GetNegated(), size * 0.01, size * 0.01, color, -att.Ang.r + 180) + + render.SetStencilEnable(false) + render.ClearStencil() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_stock.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_stock.lua new file mode 100644 index 0000000..e3a16d5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default Stock" +ATTACHMENT.Category = "Stocks" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_suppressor.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_suppressor.lua new file mode 100644 index 0000000..79f2e00 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_suppressor.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Default Suppressor" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_toprail.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_toprail.lua new file mode 100644 index 0000000..8b8d7fe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_toprail.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default Toprail" +ATTACHMENT.Category = "Toprails" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/base/att_wire.lua b/lua/weapons/mg_base/modules/attachmentss/base/att_wire.lua new file mode 100644 index 0000000..a6b5729 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/base/att_wire.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_base" +ATTACHMENT.Name = "Default" +ATTACHMENT.Category = "Cables" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barlong.lua new file mode 100644 index 0000000..d684443 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barlong.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "8.7 Polygonal" +ATTACHMENT.Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/beta/icon_attachment_sm_beta_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.02 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.02 + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barmid.lua b/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barmid.lua new file mode 100644 index 0000000..b2e75d5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barmid.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "8.7 Steel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_barmid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/beta/icon_attachment_sm_beta_barmid.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.04 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barrel.lua new file mode 100644 index 0000000..8240a0f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barshort.lua new file mode 100644 index 0000000..53dab68 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/barrels/attachment_vm_sm_beta_barshort.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "8.7 Aluminum" +ATTACHMENT.Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/beta/icon_attachment_sm_beta_barshort.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.08 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser01.lua new file mode 100644 index 0000000..bd8c142 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser02.lua new file mode 100644 index 0000000..7320dce --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser03.lua new file mode 100644 index 0000000..c81929b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/lasers/attachment_vm_sm_beta_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/mags/attachment_vm_sm_beta_mag.lua b/lua/weapons/mg_base/modules/attachmentss/beta/mags/attachment_vm_sm_beta_mag.lua new file mode 100644 index 0000000..8626651 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/mags/attachment_vm_sm_beta_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/mags/attachment_vm_sm_beta_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/beta/mags/attachment_vm_sm_beta_xmags.lua new file mode 100644 index 0000000..58a6b0a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/mags/attachment_vm_sm_beta_xmags.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "84 Round Helical Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/beta/icon_attachment_sm_beta_xmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 84 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_xmag_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/perks/attachment_vm_sm_beta_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/beta/perks/attachment_vm_sm_beta_perk_soh.lua new file mode 100644 index 0000000..f217d9c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/perks/attachment_vm_sm_beta_perk_soh.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_augolf_stock_v2.lua b/lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_augolf_stock_v2.lua new file mode 100644 index 0000000..5c6e0bb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_augolf_stock_v2.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Corvus Skeleton Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_stock_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/beta/icon_attachment_sm_beta_stock_v2.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.075 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.075 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_beta_stock.lua b/lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_beta_stock.lua new file mode 100644 index 0000000..e6a7933 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_beta_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_beta_stockmrkt.lua b/lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_beta_stockmrkt.lua new file mode 100644 index 0000000..3be6489 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/beta/stock/attachment_vm_sm_beta_stockmrkt.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Factory Aluminum Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/beta/attachment_vm_sm_beta_stockmrkt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/beta/icon_attachment_sm_beta_stockmrkt.vmt") +-- ATTACHMENT.Bodygroups = { +-- ["tag_stock"] = 1 +-- } +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.08 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel.lua new file mode 100644 index 0000000..4d9dc9b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_long.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_long.lua new file mode 100644 index 0000000..ba5952f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_long.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Tempus 32 Competition" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_barrel_long.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_barrel_long.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_mid.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_mid.lua new file mode 100644 index 0000000..ce64245 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_mid.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Tempus Smooth Bore" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_barrel_mid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_barrel_mid.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.05 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.05 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.94 + weapon.Cone.Hip = weapon.Cone.Hip * 1.1 + weapon.Cone.Ads = weapon.Cone.Ads * 1.1 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_sawnoff.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_sawnoff.lua new file mode 100644 index 0000000..ae84c69 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/barrels/attachment_vm_sh_charlie725_barrel_sawnoff.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Sawed-off Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_barrel_sawnoff.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_barrel_sawnoff.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.15 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.15 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.8 + weapon.Cone.Hip = weapon.Cone.Hip * 1.5 + weapon.Cone.Ads = weapon.Cone.Ads * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_foreendlight.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_foreendlight.lua new file mode 100644 index 0000000..816beee --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_foreendlight.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_forend" +ATTACHMENT.Name = "FORGE TAC Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_foreendlight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_foreendlight.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_forendstable.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_forendstable.lua new file mode 100644 index 0000000..a9c701a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_forendstable.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_forend" +ATTACHMENT.Name = "FORGE TAC Steady Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_forendstable.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_forendstable.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_forendtactical.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_forendtactical.lua new file mode 100644 index 0000000..3fda200 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_forendtactical.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_forend" +ATTACHMENT.Name = "FORGE TAC Commander" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_forendtactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_forendtactical.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.05 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.05 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_guard.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_guard.lua new file mode 100644 index 0000000..8589e4c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/forend/attachment_vm_sh_charlie725_guard.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_forend" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_guard.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_angledgrip01.lua new file mode 100644 index 0000000..ac6430e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_angledgrip01.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_angledgrip02.lua new file mode 100644 index 0000000..61e828f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_angledgrip02.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_stubbygrip01.lua new file mode 100644 index 0000000..74d9264 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_stubbygrip01.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_stubbygrip02.lua new file mode 100644 index 0000000..391bab0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_stubbygrip02.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip01.lua new file mode 100644 index 0000000..ad1e8e1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip01.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip02.lua new file mode 100644 index 0000000..e53ea56 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip02.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip03.lua new file mode 100644 index 0000000..94d0e2f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/grips/attachment_vm_sh_charlie725_vertgrip03.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser01.lua new file mode 100644 index 0000000..bd8c142 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser02.lua new file mode 100644 index 0000000..7320dce --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser03.lua new file mode 100644 index 0000000..c81929b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/lasers/attachment_vm_sh_charlie725_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_comp.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_comp.lua new file mode 100644 index 0000000..e4cc278 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_comp.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_compensator_shgn01" +ATTACHMENT.Name = "Compensator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_comp.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_comp.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_flashhider.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_flashhider.lua new file mode 100644 index 0000000..ddfb7a9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_flashhider.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_breacher02_shgn" +ATTACHMENT.Name = "Flash Guard" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_flashhider.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_flashhider.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_muzzlebrake.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_muzzlebrake.lua new file mode 100644 index 0000000..a11f498 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_muzzlebrake.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_muzzlebrake_shgn01" +ATTACHMENT.Name = "Muzzle Brake" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_muzzlebrake.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_muzzlebrake.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_muzzlemelee.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_muzzlemelee.lua new file mode 100644 index 0000000..87820c0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_muzzlemelee.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_breacher02_shgn" +ATTACHMENT.Name = "Breacher Device" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_muzzlemelee.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_muzzlemelee.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer01.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer01.lua new file mode 100644 index 0000000..f8ad697 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer01" +ATTACHMENT.Name = "Lightweight Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_silencer01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_silencer01.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer02.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer02.lua new file mode 100644 index 0000000..e664443 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer02" +ATTACHMENT.Name = "Monolithic Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_silencer02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_silencer02.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer03.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer03.lua new file mode 100644 index 0000000..dc1993d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/muzzles/attachment_vm_sh_charlie725_silencer03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer03" +ATTACHMENT.Name = "Tactical Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_silencer03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_silencer03.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/perks/attachment_vm_sh_charlie725_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/perks/attachment_vm_sh_charlie725_perk_soh.lua new file mode 100644 index 0000000..8ac7cb8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/perks/attachment_vm_sh_charlie725_perk_soh.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.reload_scope = weapon.Animations.reload_scope_fast + weapon.Animations.reload_empty_scope = weapon.Animations.reload_empty_scope_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_2x_west01.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_2x_west01.lua new file mode 100644 index 0000000..83eb9b1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_2x_west01.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_vm_2x_west01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.reload_scope + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_scope +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_scope_mike14.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_scope_mike14.lua new file mode 100644 index 0000000..0a7938b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_scope_mike14.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_vm_scope_mike14" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.reload_scope + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_scope +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_scope_vz.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_scope_vz.lua new file mode 100644 index 0000000..88ba341 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/att_vm_charlie725_scope_vz.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_vm_scope_vz" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.reload_scope + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_scope +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/attachment_vm_sn_charlie725_scope.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/attachment_vm_sn_charlie725_scope.lua new file mode 100644 index 0000000..27f30c1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/sights/attachment_vm_sn_charlie725_scope.lua @@ -0,0 +1,30 @@ +ATTACHMENT.Base = "att_optic_10x" +ATTACHMENT.Name = "Sniper Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_scope.vmt") +ATTACHMENT.Bodygroups = { + ["tag_rail"] = 1, +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/mw/weapons/charlie725/weapon_vm_sh_charlie725_huntingscope_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_scope_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 750, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_sniper_new.vmt"), + Size = 2000, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 0.9 + weapon.Animations.Reload = weapon.Animations.reload_scope + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_scope +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stock.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stock.lua new file mode 100644 index 0000000..a631d96 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stock_sawnoff.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stock_sawnoff.lua new file mode 100644 index 0000000..63673c1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stock_sawnoff.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Sawed-off Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_stock_sawnoff.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_stock_sawnoff.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Recoil.AdsMultiplier = 1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stocklight.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stocklight.lua new file mode 100644 index 0000000..54bbf1c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stocklight.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Cronen Pro Light" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_stocklight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_stocklight.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Recoil.AdsMultiplier = 0.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stockstable.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stockstable.lua new file mode 100644 index 0000000..3bdcfd3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stockstable.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Cronen Equilibrium" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_stockstable.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_stockstable.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stocktactical.lua b/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stocktactical.lua new file mode 100644 index 0000000..9954b54 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie725/stock/attachment_vm_sh_charlie725_stocktactical.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Tempus Sport" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie725/attachment_vm_sh_charlie725_stocktactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie725/icon_attachment_sh_charlie725_stocktactical.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.87 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.87 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_barrel.lua new file mode 100644 index 0000000..86cb97a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_barsil.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_barsil.lua new file mode 100644 index 0000000..b08ef0a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_barsil.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS Nightshade" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_barsil.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_barsil.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.2 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.7 + weapon.Cone.Hip = weapon.Cone.Hip * 0.83 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_longbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_longbarrel.lua new file mode 100644 index 0000000..218a4f8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_longbarrel.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS Revolution" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_longbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_longbarrel.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.09 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.09 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Cone.Hip = weapon.Cone.Hip * 0.91 + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_medbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_medbarrel.lua new file mode 100644 index 0000000..2cf0364 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_medbarrel.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FTAC 225mm Dominator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_medbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_medbarrel_v1.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.03 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.03 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_shortbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_shortbarrel.lua new file mode 100644 index 0000000..a9ea0d1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/barrels/attachment_vm_sm_charlie9_shortbarrel.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "ISO 140mm CQB" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_shortbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_shortbarrel.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.94 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.03 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.03 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.09 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.09 + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_angledgrip01.lua new file mode 100644 index 0000000..8f6aca8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_angledgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip01_smg" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_angledgrip02.lua new file mode 100644 index 0000000..ab538c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_angledgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_bipodgrip.lua new file mode 100644 index 0000000..a6c4925 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_bipodgrip.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_stubbygrip01.lua new file mode 100644 index 0000000..73ff6f7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_stubbygrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +weapon:SetGripPoseParameter("grip_vertpro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_stubbygrip02.lua new file mode 100644 index 0000000..9af141b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_stubbygrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vertpro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip01.lua new file mode 100644 index 0000000..4306c6c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip02.lua new file mode 100644 index 0000000..74e7cae --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip03.lua new file mode 100644 index 0000000..21a2179 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/grips/attachment_vm_sm_charlie9_vertgrip03.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser01.lua new file mode 100644 index 0000000..dce2efc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser02.lua new file mode 100644 index 0000000..bbaa5c6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser03.lua new file mode 100644 index 0000000..f41d6df --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/lasers/attachment_vm_sm_charlie9_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_drummag.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_drummag.lua new file mode 100644 index 0000000..cdc48e9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_drummag.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Drums" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_drummag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_drummag.vmt") +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, + +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Reload = weapon.Animations.Reload_Drum + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Drum + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.82 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.82 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_mag.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_mag.lua new file mode 100644 index 0000000..4e439a3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_mag.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_mag.mdl") +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_xmag.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_xmag.lua new file mode 100644 index 0000000..3b5384f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/mags/attachment_vm_sm_charlie9_xmag.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "30 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_xmag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_xmag.vmt") + +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, + +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 30 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.98 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/perks/attachment_vm_sm_charlie9_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/perks/attachment_vm_sm_charlie9_perk_soh.lua new file mode 100644 index 0000000..bc355e9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/perks/attachment_vm_sm_charlie9_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Reload_Drum = weapon.Animations.Reload_Drum_Fast + weapon.Animations.Reload_Empty_Drum = weapon.Animations.Reload_Empty_Drum_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_fullstock.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_fullstock.lua new file mode 100644 index 0000000..918f7c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_fullstock.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Vagrant" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_fullstock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_fullstock.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.89 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.89 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_nostock.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_nostock.lua new file mode 100644 index 0000000..8252c0a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_nostock.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "ISO Collapsible" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_nostock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/charlie9/icon_attachment_sm_charlie9_nostock.vmt") + ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_stock.lua b/lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_stock.lua new file mode 100644 index 0000000..5b9e83a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/charlie9/stock/attachment_vm_sm_charlie9_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/charlie9/attachment_vm_sm_charlie9_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel01.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel01.lua new file mode 100644 index 0000000..18d8aae --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel01.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_barrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_barrel.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel02.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel02.lua new file mode 100644 index 0000000..371b52b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Silverfield Ordnance .357" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_barrel_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_barrel_v2.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel_long.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel_long.lua new file mode 100644 index 0000000..2fcdcf1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel_long.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = ".357 Long" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_barrel_long.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_barrel_long.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.08 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.08 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel_short.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel_short.lua new file mode 100644 index 0000000..b90c89b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/barrels/att_vm_pi_cpapa_barrel_short.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = ".357 Snub Nose" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_shortbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_shortbarrel.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.13 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.13 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser01.lua new file mode 100644 index 0000000..7548c8a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser01.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_laser01_pstl" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser02.lua new file mode 100644 index 0000000..990c6f2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser02.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_laser02_pstl" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser03.lua new file mode 100644 index 0000000..db1d619 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/lasers/att_vm_pi_cpapa_laser03.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_laser03_pstl" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/mags/attachment_vm_pi_cpapa_loader_snake.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/mags/attachment_vm_pi_cpapa_loader_snake.lua new file mode 100644 index 0000000..4eb01ee --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/mags/attachment_vm_pi_cpapa_loader_snake.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "Snake Shot" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_loader_snake.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_loader_snake.vmt") +ATTACHMENT.ExcludedAttachments = {"att_perk_ricochet"} +ATTACHMENT.ShowOnWorldModel = false + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Bullet.NumBullets = 6 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.5 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.5 + weapon.Bullet.Range = weapon.Bullet.Range * 0.25 + weapon.Bullet.Ricochet = false +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/mags/attachment_vm_pi_cpapa_mag.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/mags/attachment_vm_pi_cpapa_mag.lua new file mode 100644 index 0000000..f27c9b8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/mags/attachment_vm_pi_cpapa_mag.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_mag.mdl") +ATTACHMENT.ShowOnWorldModel = false + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/perks/att_vm_pi_cpapa_soh.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/perks/att_vm_pi_cpapa_soh.lua new file mode 100644 index 0000000..975930d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/perks/att_vm_pi_cpapa_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/sights/attachment_vm_pi_cpapa_scope.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/sights/attachment_vm_pi_cpapa_scope.lua new file mode 100644 index 0000000..5b31745 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/sights/attachment_vm_pi_cpapa_scope.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_optic_4x" +ATTACHMENT.Name = "Lockwood Pistol Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_scope.vmt") +ATTACHMENT.Bodygroups = { + ["rail"] = 1, + ["tag_sight"] = 1, + ["sight"] = 1 +} + +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/weapons/357/weapon_vm_pi_cpapa_scope_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_scope_hide.mdl"), + LensBodygroup = "lens", + FOV = 4, + ParallaxSize = 400, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_sniper_new.vmt"), + Size = 2500, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_grip.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_grip.lua new file mode 100644 index 0000000..03a775d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_grip.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_grip.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_grip.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_stock01.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_stock01.lua new file mode 100644 index 0000000..6ef7ba3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_stock01.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Lockwood .357 Custom Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_grip_stock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_grip_stock.vmt") +ATTACHMENT.Bodygroups = { + ["pgrip"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["pgrip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.8 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.5 + weapon.ViewModelOffsets.Aim.Pos = weapon.ViewModelOffsets.Aim.Pos + Vector(0.15, 0, 0) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + weapon:SetViewModel("models/viper/mw/weapons/v_357_stock.mdl") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_stock02.lua b/lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_stock02.lua new file mode 100644 index 0000000..ad62e49 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/cpapa/stocks/att_vm_pi_cpapa_stock02.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Raider Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_cpapa_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/cpapa/icon_attachment_pi_cpapa_stockl.vmt") +ATTACHMENT.Bodygroups = { + ["pgrip"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["pgrip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.88 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.88 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.88 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.88 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.65 + weapon.ViewModelOffsets.Aim.Pos = weapon.ViewModelOffsets.Aim.Pos + Vector(0.15, 0, 0) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + weapon:SetViewModel("models/viper/mw/weapons/v_357_stock.mdl") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms.lua new file mode 100644 index 0000000..035a96c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_arm" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_arms.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_heavy.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_heavy.lua new file mode 100644 index 0000000..ab0f610 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_heavy.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_arm" +ATTACHMENT.Name = "XRK Thunder 200 Lb" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_arms_heavy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_arms_heavy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Projectile.Speed = weapon.Projectile.Speed * 1.3 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_light.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_light.lua new file mode 100644 index 0000000..4a6fab0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_light.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_arm" +ATTACHMENT.Name = "XRK Quill 100 Lb" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_arms_light.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_arms_light.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Projectile.Speed = weapon.Projectile.Speed * 0.8 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.1 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_tac.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_tac.lua new file mode 100644 index 0000000..0f66ac9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arms/attachment_vm_sn_crossbow_arms_tac.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_arm" +ATTACHMENT.Name = "XRK Carbon Elite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_arms_tac.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_arms_tac.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Projectile.Speed = weapon.Projectile.Speed * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.08 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.15 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.15 + weapon.Cone.Hip = weapon.Cone.Hip * 1.4 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag.lua new file mode 100644 index 0000000..bdfe036 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_arrow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_empbolt.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_empbolt.lua new file mode 100644 index 0000000..304aed5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_empbolt.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_arrow" +ATTACHMENT.Name = "EMP Arrow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_empbolt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_mag_expbolt.vmt") +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sn_crossbow_perk_ammo"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.Damage[1] = 0 + weapon.Bullet.Damage[2] = 0 + weapon.Projectile.Class = "mg_arrow_emp" + weapon.Projectile.Speed = 4000 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_expbolt.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_expbolt.lua new file mode 100644 index 0000000..a0bf759 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_expbolt.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_arrow" +ATTACHMENT.Name = "Semtex Arrow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_expbolt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_mag_expbolt.vmt") +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sn_crossbow_perk_ammo"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.Damage[1] = 0 + weapon.Bullet.Damage[2] = 0 + weapon.Projectile.Class = "mg_arrow_explosive" + weapon.Projectile.Speed = 4000 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_firebolt.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_firebolt.lua new file mode 100644 index 0000000..020b45d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_firebolt.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_arrow" +ATTACHMENT.Name = "Thermite Arrow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_firebolt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_mag_firebolt.vmt") +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sn_crossbow_perk_ammo"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.Damage[1] = 50 + weapon.Bullet.Damage[2] = 25 + weapon.Projectile.Class = "mg_arrow_thermite" + weapon.Projectile.Speed = 6000 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_flashbolt.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_flashbolt.lua new file mode 100644 index 0000000..147ba77 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_flashbolt.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_arrow" +ATTACHMENT.Name = "Flashbang Arrow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_flashbolt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_mag_firebolt.vmt") +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sn_crossbow_perk_ammo"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.Damage[1] = 0 + weapon.Bullet.Damage[2] = 0 + weapon.Projectile.Class = "mg_arrow_flashbang" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_gordonbolt.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_gordonbolt.lua new file mode 100644 index 0000000..0402cea --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_gordonbolt.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_arrow" +ATTACHMENT.Name = "Freeman" +ATTACHMENT.Model = Model("models/crossbow_bolt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_mag_firebolt.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.VElement = { + Bone = "j_mag1", + Position = Vector(0, -10, 0), + Angles = Angle(), +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Projectile.Class = "crossbow_bolt" + weapon.Projectile.Velocity = 3000 + weapon.Primary.TrailingSound = "Weapon_Crossbow.BoltFly" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_knockbolt.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_knockbolt.lua new file mode 100644 index 0000000..85cb212 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_knockbolt.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_arrow" +ATTACHMENT.Name = "Knockback Arrow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_firebolt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_mag_firebolt.vmt") +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sn_crossbow_perk_ammo"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.Damage[1] = 0 + weapon.Bullet.Damage[2] = 0 + weapon.Projectile.Class = "mg_arrow_knockback" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_skullbolt.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_skullbolt.lua new file mode 100644 index 0000000..8a1424f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_skullbolt.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_arrow" +ATTACHMENT.Name = "Aztec Death Whistle" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_magskull.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_mag_firebolt.vmt") +ATTACHMENT.CosmeticChange = true +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.VElement = { + Bone = "j_mag1", + Position = Vector(0, 0, -1.5), + Angles = Angle(), +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Projectile.Class = "mg_arrow_bone" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_smokebolt.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_smokebolt.lua new file mode 100644 index 0000000..cceb595 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_smokebolt.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_arrow" +ATTACHMENT.Name = "Smoke Arrow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_smokebolt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_mag_stunbolt.vmt") +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sn_crossbow_perk_ammo"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.Damage[1] = 0 + weapon.Bullet.Damage[2] = 0 + weapon.Projectile.Class = "mg_arrow_smoke" + weapon.Projectile.Speed = 5000 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_stimbolt.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_stimbolt.lua new file mode 100644 index 0000000..c2af8c4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_stimbolt.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_arrow" +ATTACHMENT.Name = "Stim Arrow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_stimbolt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_mag_firebolt.vmt") +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sn_crossbow_perk_ammo"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.Damage[1] = 0 + weapon.Bullet.Damage[2] = 0 + weapon.Projectile.Class = "mg_arrow_stim" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_stunbolt.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_stunbolt.lua new file mode 100644 index 0000000..17cc70b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/arrows/attachment_vm_sn_crossbow_mag_stunbolt.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_arrow" +ATTACHMENT.Name = "Gas Arrow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_mag_stunbolt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_mag_stunbolt.vmt") +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sn_crossbow_perk_ammo"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.Damage[1] = 0 + weapon.Bullet.Damage[2] = 0 + weapon.Projectile.Class = "mg_arrow_gas" + weapon.Projectile.Speed = 5000 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_angledgrip01.lua new file mode 100644 index 0000000..a0bb959 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_angledgrip01.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Name = "FTAC Speed Grip" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_angledgrip02.lua new file mode 100644 index 0000000..e0c66e3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_angledgrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_stubbygrip01.lua new file mode 100644 index 0000000..60680a3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_stubbygrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Name = "XRK Talon" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + weapon.Animations.Sprint_Out.Fps = weapon.Animations.Sprint_Out.Fps * 1.13 + weapon.Cone.Hip = weapon.Cone.Hip * 1.06 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_stubbygrip02.lua new file mode 100644 index 0000000..15a4989 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_stubbygrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip01.lua new file mode 100644 index 0000000..f613827 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip01.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Name = "XRK Precision Grip" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.98 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Cone.Hip = weapon.Cone.Hip * 0.93 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip02.lua new file mode 100644 index 0000000..9acf44c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip03.lua new file mode 100644 index 0000000..9122729 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/grips/attachment_vm_sn_crossbow_vertgrip03.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser01.lua new file mode 100644 index 0000000..036ba65 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01" + +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1 +} +ATTACHMENT.VElement = { + Bone = "tag_laser_attach", + Position = Vector(0, 0, 0), + Angles = Angle(0, 0, -180), +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser02.lua new file mode 100644 index 0000000..2e1c0bf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser02.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1 +} +ATTACHMENT.VElement = { + Bone = "tag_laser_attach", + Position = Vector(0, 0, 0), + Angles = Angle(0, 0, -180), +} diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser03.lua new file mode 100644 index 0000000..366c221 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/lasers/attachment_vm_sn_crossbow_laser03.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1 +} +ATTACHMENT.VElement = { + Bone = "tag_laser_attach", + Position = Vector(0, 0, 0), + Angles = Angle(0, 0, -180), +} diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_ammo.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_ammo.lua new file mode 100644 index 0000000..fdf0c14 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_ammo.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Resourceful" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_wounding.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Projectile.PickUp = true +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_none.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_none.lua new file mode 100644 index 0000000..42e0cb1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_none.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_perk" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Projectile.PickUp = false +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_soh.lua new file mode 100644 index 0000000..c886db5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/perks/attachment_vm_sn_crossbow_perk_soh.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + -- weapon.ReloadRechambers = false +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/sights/attachment_vm_sn_crossbow_scope.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/sights/attachment_vm_sn_crossbow_scope.lua new file mode 100644 index 0000000..8bbdb27 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/sights/attachment_vm_sn_crossbow_scope.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_optic_4x" +ATTACHMENT.Name = "XRK MidTrak 4.0x Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_scope.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1 +} +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_scope_hide.mdl"), + LensHideMaterial = Material("viper/mw/weapons/crossbow/weapon_vm_sn_crossbow_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 500, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_16.vmt"), + Size = 1000, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock.lua new file mode 100644 index 0000000..e3caa7c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_heavy.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_heavy.lua new file mode 100644 index 0000000..61b0f95 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_heavy.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC Apex" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_stock_heavy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_stock_heavy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.93 + weapon.Cone.Hip = weapon.Cone.Hip * 0.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_light.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_light.lua new file mode 100644 index 0000000..4bf1265 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_light.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC Dart CB" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_stock_light.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_stock_light.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Cone.Hip = weapon.Cone.Hip * 1.3 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_tac.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_tac.lua new file mode 100644 index 0000000..1d6b7fa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/stock/attachment_vm_sn_crossbow_stock_tac.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC SpeedTrak" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_stock_tac.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_stock_tac.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.2 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.2 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.25 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.25 + weapon.Cone.Hip = weapon.Cone.Hip * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire.lua new file mode 100644 index 0000000..b71e3a8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_wire" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_wire.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_heavy.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_heavy.lua new file mode 100644 index 0000000..e340b21 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_heavy.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_wire" +ATTACHMENT.Name = "28-Strand Cable" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_wire_heavy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_wire_heavy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.93 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.93 + weapon.Projectile.Speed = weapon.Projectile.Speed * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_light.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_light.lua new file mode 100644 index 0000000..f5c801a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_light.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_wire" +ATTACHMENT.Name = "16-Strand Cable" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_wire_light.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_wire_light.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.05 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.05 + weapon.Projectile.Speed = weapon.Projectile.Speed * 0.92 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_tac.lua b/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_tac.lua new file mode 100644 index 0000000..5563de1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/crossbow/wires/attachment_vm_sn_crossbow_wire_tac.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_wire" +ATTACHMENT.Name = "Rawhide Cable" +ATTACHMENT.Model = Model("models/viper/mw/attachments/crossbow/attachment_vm_sn_crossbow_wire_tac.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/crossbow/icon_attachment_sn_crossbow_wire_tac.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.1 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.1 + weapon.Cone.Hip = weapon.Cone.Hip * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide.lua b/lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide.lua new file mode 100644 index 0000000..03fa955 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_slide.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide_extended.lua b/lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide_extended.lua new file mode 100644 index 0000000..bb9a508 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide_extended.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Extended" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_slide_extended.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_slide_extended.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.12 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide_extended02.lua b/lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide_extended02.lua new file mode 100644 index 0000000..85b6c5c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/barrels/attachment_vm_pi_decho_slide_extended02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Enforcer" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_slide_extended02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_slide_extended02.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.03 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/grips/attachment_vm_pi_decho_cust_grip.lua b/lua/weapons/mg_base/modules/attachmentss/decho/grips/attachment_vm_pi_decho_cust_grip.lua new file mode 100644 index 0000000..d2e313d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/grips/attachment_vm_pi_decho_cust_grip.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Rubberized Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_cust_grip.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_pistolgrip_tape_v2.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/grips/attachment_vm_pi_decho_grip.lua b/lua/weapons/mg_base/modules/attachmentss/decho/grips/attachment_vm_pi_decho_grip.lua new file mode 100644 index 0000000..f2ddd08 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/grips/attachment_vm_pi_decho_grip.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_grip.mdl") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser01.lua new file mode 100644 index 0000000..bf61a20 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser01.lua @@ -0,0 +1 @@ +ATTACHMENT.Base = "att_vm_laser01_pstl" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser02.lua new file mode 100644 index 0000000..ac8b2b5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser02.lua @@ -0,0 +1 @@ +ATTACHMENT.Base = "att_vm_laser02_pstl" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser03.lua new file mode 100644 index 0000000..cf24aa2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/lasers/att_vm_pi_decho_laser03.lua @@ -0,0 +1 @@ +ATTACHMENT.Base = "att_vm_laser03_pstl" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_mag.lua b/lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_mag.lua new file mode 100644 index 0000000..975bdd8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_mag.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_mag.mdl") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_xmags.lua new file mode 100644 index 0000000..0308137 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_xmags.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "10 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_xmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 10 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_xmags2.lua b/lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_xmags2.lua new file mode 100644 index 0000000..c97a75c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/mags/attachment_vm_pi_decho_xmags2.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "13 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_xmags2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_xmags2.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 13 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/muzzles/attachment_vm_pi_decho_muzzlebrake.lua b/lua/weapons/mg_base/modules/attachmentss/decho/muzzles/attachment_vm_pi_decho_muzzlebrake.lua new file mode 100644 index 0000000..58ffb02 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/muzzles/attachment_vm_pi_decho_muzzlebrake.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Muzzle Brake" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_decho_muzzlebrake.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/decho/icon_attachment_pi_decho_muzzlebrake.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/decho/perks/att_vm_pi_decho_soh.lua b/lua/weapons/mg_base/modules/attachmentss/decho/perks/att_vm_pi_decho_soh.lua new file mode 100644 index 0000000..975930d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/decho/perks/att_vm_pi_decho_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barlong.lua new file mode 100644 index 0000000..8bef23f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barlong.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "660mm Extended Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/delta/icon_attachment_sn_delta_barlong.vmt") +ATTACHMENT.BonemergeToCategory = {"Receivers"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.1 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barrel.lua new file mode 100644 index 0000000..29fcacd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barrel.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_barrel.mdl") +ATTACHMENT.BonemergeToCategory = {"Receivers"} diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barshort.lua new file mode 100644 index 0000000..131189e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/barrels/attachment_vm_sn_delta_barshort.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "510mm Compact Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/delta/icon_attachment_sn_delta_barshort.vmt") +ATTACHMENT.BonemergeToCategory = {"Receivers"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.85 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser01.lua new file mode 100644 index 0000000..9e3faec --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser01.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser02.lua new file mode 100644 index 0000000..d25be7e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser02.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser03.lua new file mode 100644 index 0000000..eeadfa9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/lasers/attachment_vm_sn_delta_laser03.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_mag.lua b/lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_mag.lua new file mode 100644 index 0000000..8e5e956 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_mag.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_mag.mdl") + + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_ammo1"}, + [1] = {"j_ammo2"}, + [2] = {"j_ammo3"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_xmags.lua new file mode 100644 index 0000000..5ecf6a1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_xmags.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "15 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/delta/icon_attachment_sn_delta_xmags.vmt") +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_ammo1"}, + [1] = {"j_ammo2"}, + [2] = {"j_ammo3"}, +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 + weapon.Primary.ClipSize = 15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_xmags2.lua b/lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_xmags2.lua new file mode 100644 index 0000000..9d27d7a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/mags/attachment_vm_sn_delta_xmags2.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "20 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_xmags2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/delta/icon_attachment_sn_delta_xmags2.vmt") +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_ammo1"}, + [1] = {"j_ammo2"}, + [2] = {"j_ammo3"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + weapon.Primary.ClipSize = 20 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/perks/attachment_vm_ar_delta_perk_fullauto.lua b/lua/weapons/mg_base/modules/attachmentss/delta/perks/attachment_vm_ar_delta_perk_fullauto.lua new file mode 100644 index 0000000..e287c34 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/perks/attachment_vm_ar_delta_perk_fullauto.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Full Auto" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_hipaim.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Firemodes[1].Name = "Automatic" + weapon.Firemodes[1].OnSet = function(weapon) + weapon.Primary.Automatic = true + weapon.Primary.RPM = 700 + end + weapon.Primary.Automatic = true + weapon.Primary.RPM = 700 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon.Recoil.AdsMultiplier = 0.8 --deliberate, hidden stat + + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.15 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.15 + + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 2 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 2 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/perks/attachment_vm_sn_delta_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/delta/perks/attachment_vm_sn_delta_perk_soh.lua new file mode 100644 index 0000000..890b876 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/perks/attachment_vm_sn_delta_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Reload_Xmag2 = weapon.Animations.Reload_Xmag2_Fast + weapon.Animations.Reload_Empty_Xmag2 = weapon.Animations.Reload_Empty_Xmag2_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/receivers/attachment_vm_sn_delta_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/delta/receivers/attachment_vm_sn_delta_receiver.lua new file mode 100644 index 0000000..6552d91 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/receivers/attachment_vm_sn_delta_receiver.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_receiver.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/receivers/attachment_vm_sn_delta_receiver_v2.lua b/lua/weapons/mg_base/modules/attachmentss/delta/receivers/attachment_vm_sn_delta_receiver_v2.lua new file mode 100644 index 0000000..5ec7cda --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/receivers/attachment_vm_sn_delta_receiver_v2.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "Plague Sore" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_receiver_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/delta/icon_attachment_sn_delta_receiver_v2.vmt") +ATTACHMENT.CosmeticChange = true +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Customization[7][2] = "attachment_vm_sn_delta_scope_v2" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_irons.lua b/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_irons.lua new file mode 100644 index 0000000..1628552 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_irons.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_sight" +ATTACHMENT.Name = "Ironsights" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.ViewModelOffsets.Aim.Pos:Add(Vector(0, 0, -0.1)) + weapon.ViewModelOffsets.Aim.Angles:Add(Angle(-0.3, 0, 0)) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_scope.lua b/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_scope.lua new file mode 100644 index 0000000..a58b664 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_scope.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_optic_20x" +ATTACHMENT.Name = "Dragunov Scope" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_rail"] = 0 +} +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/delta/icon_attachment_sn_delta_scope.vmt") + +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_scope_hid.mdl"), + LensHideMaterial = Material("viper/MW/weapons/delta/weapon_vm_sn_delta_scope_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 700, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} + +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/po4x_crosshair_new.vmt"), + Size = 1900, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_scope_v2.lua b/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_scope_v2.lua new file mode 100644 index 0000000..6db605d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_sn_delta_scope_v2.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "attachment_vm_sn_delta_scope" +ATTACHMENT.Name = "Plague Sore" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_scope_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/delta/icon_attachment_sn_delta_scope.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY + +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/delta/vm_sn_delta_scope_v2_hide.mdl"), + LensHideMaterial = Material("viper/MW/weapons/delta/weapon_vm_sn_delta_v2_scope_lens.vmt"), +} + +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/po4x_crosshair_new.vmt"), + Size = 2750, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_thermalsnpr_west01_delta_v3.lua b/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_thermalsnpr_west01_delta_v3.lua new file mode 100644 index 0000000..04521a2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/sights/attachment_vm_thermalsnpr_west01_delta_v3.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_vm_thermal_west01" + +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_thermalsnpr_west01_delta_v3_lod0.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/delta/icon_attachment_thermalsnpr_west01_delta_v3.vmt") + +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/delta/thermalsnpr_west01_delta_v3_hide.mdl"), + LensHideMaterial = Material("viper/MW/weapons/delta/attachment_vm_thermalsnpr_west01_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 700, --a value of zero means 1:1 size with the end of the optic + Thermal = true, + ThermalBackgroundColor = Color(50, 100, 75, 223), + ThermalBodiesColor = Color(250, 250, 0, 150) +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock.lua b/lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock.lua new file mode 100644 index 0000000..1693ec6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_stock.mdl") +ATTACHMENT.BonemergeToCategory = {"Receivers"} diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock_light.lua b/lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock_light.lua new file mode 100644 index 0000000..d499f9e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock_light.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Skeleton Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_stock_light.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/delta/icon_attachment_sn_delta_stock_light.vmt") +ATTACHMENT.BonemergeToCategory = {"Receivers"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.2 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.2 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + weapon.Zoom.BreathingMultiplier = weapon.Zoom.BreathingMultiplier * 1.3 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock_short.lua b/lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock_short.lua new file mode 100644 index 0000000..88b2a1e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/delta/stock/attachment_vm_sn_delta_stock_short.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "VLK Lightweight Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/delta/attachment_vm_sn_delta_stock_short.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/delta/icon_attachment_sn_delta_stock_short.vmt") +ATTACHMENT.BonemergeToCategory = {"Receivers"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.03 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.03 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.95 + weapon.Zoom.MovementMultiplier = weapon.Zoom.MovementMultiplier * 1.25 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/ammo/attachment_vm_sh_dpapa12_ammo.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/ammo/attachment_vm_sh_dpapa12_ammo.lua new file mode 100644 index 0000000..d2bf5c1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/ammo/attachment_vm_sh_dpapa12_ammo.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_ammo.mdl") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barlong.lua new file mode 100644 index 0000000..f95aabd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barlong.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Sentry" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_barlong.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barmid.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barmid.lua new file mode 100644 index 0000000..9e08109 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barmid.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Gemini" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_barmid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_barmid.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.06 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barrel.lua new file mode 100644 index 0000000..ccae501 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barshort.lua new file mode 100644 index 0000000..da951fd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/barrels/attachment_vm_sh_dpapa12_barshort.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "attachment_vm_sh_dpapa12_barrel" +ATTACHMENT.Name = "6 Revolt" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_barshort.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_RARE +ATTACHMENT.CosmeticChange = true +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.8 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_grip.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_grip.lua new file mode 100644 index 0000000..d40c0b9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_grip.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_grip.mdl") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_stubbygrip01.lua new file mode 100644 index 0000000..414a79d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_stubbygrip01.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_stubbygrip02.lua new file mode 100644 index 0000000..6aa9ae2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_stubbygrip02.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_vertgrip02.lua new file mode 100644 index 0000000..ee5a1be --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_vertgrip02.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_vertgrip03.lua new file mode 100644 index 0000000..393fd38 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/grips/attachment_vm_sh_dpapa12_vertgrip03.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser01.lua new file mode 100644 index 0000000..a0789a7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser02.lua new file mode 100644 index 0000000..838537f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser03.lua new file mode 100644 index 0000000..1ee03f0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/lasers/attachment_vm_sh_dpapa12_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_choke.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_choke.lua new file mode 100644 index 0000000..4c40f72 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_choke.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Choke" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_choke.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_sh_romeo870_choke.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.88 + weapon.Cone.Ads = weapon.Cone.Ads * 0.88 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_comp.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_comp.lua new file mode 100644 index 0000000..4eeedd3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_comp.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_compensator_shgn01" +ATTACHMENT.Name = "Compensator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_comp.mdl") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_flashhider.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_flashhider.lua new file mode 100644 index 0000000..6f9539f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_flashhider.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_breacher02_shgn" +ATTACHMENT.Name = "Flash Guard" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_flashhider.mdl") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_muzzlebrake.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_muzzlebrake.lua new file mode 100644 index 0000000..ce79887 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_muzzlebrake.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_muzzlebrake_shgn01" +ATTACHMENT.Name = "Muzzle Brake" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_muzzlebrake.mdl") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_muzzlemelee.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_muzzlemelee.lua new file mode 100644 index 0000000..d16f5e0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_muzzlemelee.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_breacher02_shgn" +ATTACHMENT.Name = "Breacher Device" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_muzzlemelee.mdl") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer01.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer01.lua new file mode 100644 index 0000000..0658176 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer01" +ATTACHMENT.Name = "Lightweight Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_silencer01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_silencer02.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer02.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer02.lua new file mode 100644 index 0000000..c6c19f3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer02" +ATTACHMENT.Name = "Monolithic Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_silencer02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_silencer01.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer03.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer03.lua new file mode 100644 index 0000000..24d36b3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/muzzles/attachment_vm_sh_dpapa12_silencer03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer03" +ATTACHMENT.Name = "Tactical Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_silencer03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_silencer03.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/perks/attachment_vm_sh_dpapa12_perk_slamfire.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/perks/attachment_vm_sh_dpapa12_perk_slamfire.lua new file mode 100644 index 0000000..a4a8b5b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/perks/attachment_vm_sh_dpapa12_perk_slamfire.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Slamfire" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_slamfire.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + -- weapon.Animations.Rechamber = weapon.Animations.rechamber_slam + -- weapon.Animations.Fire = weapon.Animations.fire_slam + -- weapon.Animations.Fire_Last = weapon.Animations.fire_last_slam + weapon.Primary.RPM = 450 + weapon.Animations.Rechamber.Length = 0.3 + weapon.Cone.Hip = 1.3 + weapon.Cone.Max = 7.5 + weapon.Primary.Automatic = true +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/perks/attachment_vm_sh_dpapa12_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/perks/attachment_vm_sh_dpapa12_perk_soh.lua new file mode 100644 index 0000000..0fe658d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/perks/attachment_vm_sh_dpapa12_perk_soh.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload_Start.Fps = weapon.Animations.Reload_Start.Fps * 1.25 + weapon.Animations.Reload_Start_Onebullet.Fps = weapon.Animations.Reload_Start_Onebullet.Fps * 1.25 + weapon.Animations.Reload_Loop.Fps = weapon.Animations.Reload_Loop.Fps * 1.25 + weapon.Animations.Reload_End.Fps = weapon.Animations.Reload_End.Fps * 1.25 + weapon.Animations.Reload_End_Empty.Fps = weapon.Animations.Reload_End_Empty.Fps * 1.25 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump.lua new file mode 100644 index 0000000..743be0d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_pump" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_pump.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_light.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_light.lua new file mode 100644 index 0000000..947a28f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_light.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_pump" +ATTACHMENT.Name = "FTAC Ultralight Pump" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_pump_light.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_pump_light.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.15 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_stable.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_stable.lua new file mode 100644 index 0000000..9955d55 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_stable.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_pump" +ATTACHMENT.Name = "FSS R9-0 Bulldog" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_pump_stable.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_pump_stable.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.7 + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 0.85 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + --weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_tactical.lua b/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_tactical.lua new file mode 100644 index 0000000..036962d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/dpapa12/pumps/attachment_vm_sh_dpapa12_pump_tactical.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_pump" +ATTACHMENT.Name = "FTAC Close Quarters" +ATTACHMENT.Model = Model("models/viper/mw/attachments/dpapa12/attachment_vm_sh_dpapa12_pump_tactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/dpapa12/icon_attachment_sh_dpapa12_pump_tactical.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 0.9 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barlong.lua new file mode 100644 index 0000000..0fdc162 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barlong.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "18.0 Ultralight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barrel.lua new file mode 100644 index 0000000..dc8bc7e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barsmg.lua b/lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barsmg.lua new file mode 100644 index 0000000..9c4ca96 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/barrels/attachment_vm_ar_falima_barsmg.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "13.0 OSW Para" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_barsmg.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_barsmg.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.94 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend.lua b/lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend.lua new file mode 100644 index 0000000..6ae252f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_forend" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_forend.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend_v2.lua b/lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend_v2.lua new file mode 100644 index 0000000..a3e0ffc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend_v2.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_forend" +ATTACHMENT.Name = "Smooth Dominator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_forend_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_reciever_v2.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_RARE +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend_v4.lua b/lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend_v4.lua new file mode 100644 index 0000000..0e22ee6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/forend/attachment_vm_ar_falima_forend_v4.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_forend" +ATTACHMENT.Name = "The Aristocrat" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_forend_v4.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_reciever_v4.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_angledgrip01.lua new file mode 100644 index 0000000..d9701b1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_angledgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_angledgrip02.lua new file mode 100644 index 0000000..25ceb70 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_angledgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_bipodgrip.lua new file mode 100644 index 0000000..9aac9d2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_bipodgrip.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_stubbygrip01.lua new file mode 100644 index 0000000..2fdab1f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_stubbygrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_stubbygrip02.lua new file mode 100644 index 0000000..45f366c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_stubbygrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip01.lua new file mode 100644 index 0000000..f9faa0f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip02.lua new file mode 100644 index 0000000..fba7d48 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip03.lua new file mode 100644 index 0000000..7042e81 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/grips/attachment_vm_ar_falima_vertgrip03.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser01.lua new file mode 100644 index 0000000..508cbeb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser01.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.AttachmentBodygroups = { + ["laser"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Forends"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser02.lua new file mode 100644 index 0000000..4b7958e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.AttachmentBodygroups = { + ["laser"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Forends"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser03.lua new file mode 100644 index 0000000..ddfcdc7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/lasers/attachment_vm_ar_falima_laser03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.AttachmentBodygroups = { + ["laser"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Forends"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_mag.lua b/lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_mag.lua new file mode 100644 index 0000000..47ce11f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_mag.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_mag.mdl") + +-- ATTACHMENT.BulletList = { +-- [1] = {"j_bullet_03"}, +-- [2] = {"j_bullet_04"} +-- } + +-- ATTACHMENT.ReserveBulletList = { +-- [1] = {"j_bullet_01"}, +-- [2] = {"j_bullet_02"} +-- } \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_mmags.lua b/lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_mmags.lua new file mode 100644 index 0000000..9049293 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_mmags.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "24 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_mmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_mmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 + weapon.Primary.ClipSize = 24 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_xmags.lua new file mode 100644 index 0000000..f7281d8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/mags/attachment_vm_ar_falima_xmags.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "30 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_xmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 30 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.87 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.87 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/perks/attachment_vm_ar_falima_perk_fullauto.lua b/lua/weapons/mg_base/modules/attachmentss/falima/perks/attachment_vm_ar_falima_perk_fullauto.lua new file mode 100644 index 0000000..d55297e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/perks/attachment_vm_ar_falima_perk_fullauto.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Full Auto" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_hipaim.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Firemodes[1].Name = "Automatic" + weapon.Firemodes[1].OnSet = function(weapon) + weapon.Primary.Automatic = true + weapon.Primary.RPM = 700 + return "Firemode_Auto" + end +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon.Recoil.AdsMultiplier = 0.8 --deliberate, hidden stat +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/perks/attachment_vm_ar_falima_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/falima/perks/attachment_vm_ar_falima_perk_soh.lua new file mode 100644 index 0000000..d0a285d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/perks/attachment_vm_ar_falima_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/receiver/attachment_vm_ar_falima_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/falima/receiver/attachment_vm_ar_falima_receiver.lua new file mode 100644 index 0000000..c9e5c74 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/receiver/attachment_vm_ar_falima_receiver.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_reciever.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/receiver/attachment_vm_ar_falima_receiver_v2.lua b/lua/weapons/mg_base/modules/attachmentss/falima/receiver/attachment_vm_ar_falima_receiver_v2.lua new file mode 100644 index 0000000..52f19b8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/receiver/attachment_vm_ar_falima_receiver_v2.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "Smooth Dominator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_receiver_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_reciever_v2.vmt") +ATTACHMENT.Bodygroups={ + ["receiver"] = 1, + ["tag_sight"] = 2 +} +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_RARE +ATTACHMENT.CosmeticChange = true +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.PrintName = "DSA SA58" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock.lua b/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock.lua new file mode 100644 index 0000000..9813a99 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock_v2.lua b/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock_v2.lua new file mode 100644 index 0000000..dd2f097 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock_v2.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_stock_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_stock_v2.vmt") +ATTACHMENT.Name = "Smooth Dominator" +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_RARE +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock_v4.lua b/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock_v4.lua new file mode 100644 index 0000000..36337c7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stock_v4.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_stock_v4.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_stock_v4.vmt") +ATTACHMENT.Name = "The Aristocrat" +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stockl.lua new file mode 100644 index 0000000..28b4ea1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stockl.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC Ballast Pack" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falima/attachment_vm_ar_falima_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falima/icon_attachment_ar_falima_stockl.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 0 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.06 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.06 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.06 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.06 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.02 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.02 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.02 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.02 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stockno.lua new file mode 100644 index 0000000..fac37ff --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falima/stock/attachment_vm_ar_falima_stockno.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_stock_no" +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barlong2.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barlong2.lua new file mode 100644 index 0000000..32b76fc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barlong2.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "TAC FORGE Ultralight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_barlong2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_barlong2.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.03 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.03 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.02 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.02 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barrel.lua new file mode 100644 index 0000000..2d9e1ea --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barrellong_alt.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barrellong_alt.lua new file mode 100644 index 0000000..e6c7c7a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barrellong_alt.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FR 24.4 Sniper" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_barrellong_alt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_barrellong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.08 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.08 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barshort.lua new file mode 100644 index 0000000..4b10232 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/barrels/attachment_vm_ar_falpha_barshort.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FR 15.9 Commando" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.95 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_angledgrip01.lua new file mode 100644 index 0000000..b65ec47 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_angledgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_angledgrip02.lua new file mode 100644 index 0000000..a93ea79 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_angledgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_bipodgrip.lua new file mode 100644 index 0000000..2640785 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_bipodgrip.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_good_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_stubbygrip01.lua new file mode 100644 index 0000000..4ac87de --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_stubbygrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_stubbygrip02.lua new file mode 100644 index 0000000..797fd37 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_stubbygrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip01.lua new file mode 100644 index 0000000..1254c04 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_good_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip02.lua new file mode 100644 index 0000000..5c4ffa4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_good_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip03.lua new file mode 100644 index 0000000..0b88a02 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/grips/attachment_vm_ar_falpha_vertgrip03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_good_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser01.lua new file mode 100644 index 0000000..9f5dd8b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser01.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["laser"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser02.lua new file mode 100644 index 0000000..7ddcf96 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser02.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["laser"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser03.lua new file mode 100644 index 0000000..765f3de --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/lasers/attachment_vm_ar_falpha_laser03.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["laser"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_mag.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_mag.lua new file mode 100644 index 0000000..db307b2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_xmags.lua new file mode 100644 index 0000000..3759514 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_xmags.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_xmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_xmags2.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_xmags2.lua new file mode 100644 index 0000000..f20d420 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/mags/attachment_vm_ar_falpha_xmags2.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "60 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_xmags2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_xmags2.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 60 + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.89 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.89 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/perks/attachment_vm_ar_falpha_perk_burst.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/perks/attachment_vm_ar_falpha_perk_burst.lua new file mode 100644 index 0000000..8bb234e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/perks/attachment_vm_ar_falpha_perk_burst.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Burst Fire" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_hipaim.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Firemodes[1].Name = "3Rnd Burst" + weapon.Firemodes[1].OnSet = function(weapon) + weapon.Primary.Automatic = false + weapon.Primary.BurstRounds = 3 + weapon.Primary.BurstDelay = 0.2 + return "Firemode_Semi" + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/perks/attachment_vm_ar_falpha_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/perks/attachment_vm_ar_falpha_perk_soh.lua new file mode 100644 index 0000000..21a8a92 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/perks/attachment_vm_ar_falpha_perk_soh.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Railcrust = weapon.Animations.Reload_Fast_Railcrust + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Empty_Railcrust = weapon.Animations.Reload_Empty_Fast_Railcrust + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/receivers/attachment_vm_ar_falpha_railcust.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/receivers/attachment_vm_ar_falpha_railcust.lua new file mode 100644 index 0000000..5a92f7c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/receivers/attachment_vm_ar_falpha_railcust.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "Valorise" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_railcust.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + weapon.WorldModelOffsets.Angles = Angle(0, 95, -90) + weapon.WorldModelOffsets.Pos = Vector(13, -5, -3) + weapon.ViewModelOffsets.Idle.Pos = Vector(-0.5, 0, 1) + weapon.ViewModelOffsets.Aim.Pos = Vector(0, 1, 0) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetWorldModel("models/viper/mw/weapons/w_falpha_valorise.mdl") + weapon:SetViewModel("models/viper/mw/weapons/v_falpha_valorise.mdl") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/sights/attachment_vm_ar_falpha_irons.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/sights/attachment_vm_ar_falpha_irons.lua new file mode 100644 index 0000000..30aab46 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/sights/attachment_vm_ar_falpha_irons.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_sight" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + weapon.ViewModelOffsets.Aim.Angles = Angle(0, 0, 0) + weapon.ViewModelOffsets.Aim.Pos = Vector(0, 1, 1.55) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock.lua new file mode 100644 index 0000000..0825bf0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock.lua @@ -0,0 +1 @@ +ATTACHMENT.Base = "att_stock" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_light.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_light.lua new file mode 100644 index 0000000..124df6f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_light.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FR Ultralight Hollow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_stock_light.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_stock_light_v1.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_stock_attach"] = 1, + ["tag_stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.02 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.02 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.97 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.97 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_stable.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_stable.lua new file mode 100644 index 0000000..8e9ca1c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_stable.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Tac-Wrap" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_stock_stable.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_stock_stable_v1.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_tactical_v1.lua b/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_tactical_v1.lua new file mode 100644 index 0000000..1054395 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/falpha/stock/attachment_vm_ar_falpha_stock_tactical_v1.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC Ballast Pack" +ATTACHMENT.Model = Model("models/viper/mw/attachments/falpha/attachment_vm_ar_falpha_stock_tactical_v1.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/falpha/icon_attachment_ar_falpha_stock_tactical_v1.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.13 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.13 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_carbine.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_carbine.lua new file mode 100644 index 0000000..25bdfca --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_carbine.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/barrel_carbine.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/gamma3/carbine_barrel.vmt") +ATTACHMENT.Name = "Carbine Barrel" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Carbine +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_cqc.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_cqc.lua new file mode 100644 index 0000000..23d4931 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_cqc.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/barrel_cqc.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/gamma3/cqc_barrel.vmt") +ATTACHMENT.Name = "CQC Barrel" +ATTACHMENT.ExcludedCategories = {"Grips", "Lasers"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Carbine +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_cqc") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_default.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_default.lua new file mode 100644 index 0000000..b726669 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_default.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/barrel_default.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_sniper.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_sniper.lua new file mode 100644 index 0000000..7aa159d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/barrels/attachment_vm_ar_g3a3_barrel_sniper.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/barrel_sniper.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/gamma3/sniper_barrel.vmt") +ATTACHMENT.Name = "Sniper Barrel" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_sniper") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_angledgrip01.lua new file mode 100644 index 0000000..b0db264 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_angledgrip01.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.Bodygroups = { + ["foregrip_rail"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["bipod"] = 1, + ["tag_grip_rail"] = 1, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_pro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_angledgrip02.lua new file mode 100644 index 0000000..2b80299 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_angledgrip02.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.Bodygroups = { + ["foregrip_rail"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["bipod"] = 1, + ["tag_grip_rail"] = 1, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_pro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_stubbygrip01.lua new file mode 100644 index 0000000..2a4daea --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_stubbygrip01.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.Bodygroups = { + ["foregrip_rail"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["bipod"] = 1, + ["tag_grip_rail"] = 1, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_pro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_stubbygrip02.lua new file mode 100644 index 0000000..4cfffb2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_stubbygrip02.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.Bodygroups = { + ["foregrip_rail"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["bipod"] = 1, + ["tag_grip_rail"] = 1, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_pro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip01.lua new file mode 100644 index 0000000..db0cf4d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip01.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.Bodygroups = { + ["foregrip_rail"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["bipod"] = 1, + ["tag_grip_rail"] = 1, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip02.lua new file mode 100644 index 0000000..36feb9d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip02.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.Bodygroups = { + ["foregrip_rail"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["bipod"] = 1, + ["tag_grip_rail"] = 1, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip03.lua new file mode 100644 index 0000000..8633596 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/grips/attachment_vm_ar_g3a3_vertgrip03.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.Bodygroups = { + ["foregrip_rail"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["bipod"] = 1, + ["tag_grip_rail"] = 1, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser01_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser01_cylinder.lua new file mode 100644 index 0000000..2540fec --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser01_cylinder.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_laser_rail"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser02_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser02_cylinder.lua new file mode 100644 index 0000000..fe406de --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser02_cylinder.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_laser_rail"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser03_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser03_cylinder.lua new file mode 100644 index 0000000..820e7fb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/lasers/attachment_vm_ar_g3a3_laser03_cylinder.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_laser_rail"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_ar_g3a3_magazine_default.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_ar_g3a3_magazine_default.lua new file mode 100644 index 0000000..97883f3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_ar_g3a3_magazine_default.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/magazine.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_ar_g3a3_magazine_drum.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_ar_g3a3_magazine_drum.lua new file mode 100644 index 0000000..f292d7f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_ar_g3a3_magazine_drum.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/drum.mdl") +ATTACHMENT.Name = "50rnd Drum Mag" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_magazine_ext_g3_custom.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_magazine_ext_g3_custom.lua new file mode 100644 index 0000000..c8767a7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/mags/attachment_vm_magazine_ext_g3_custom.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "30 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_magazine_ext_g3_custom.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_mmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 30 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Cone.Hip = weapon.Cone.Hip * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/perks/attachment_vm_ar_g3a3_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/perks/attachment_vm_ar_g3a3_perk_soh.lua new file mode 100644 index 0000000..3a99333 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/perks/attachment_vm_ar_g3a3_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/pistolgrips/attachment_vm_ar_g3a3_pgrip_default.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/pistolgrips/attachment_vm_ar_g3a3_pgrip_default.lua new file mode 100644 index 0000000..f3c0498 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/pistolgrips/attachment_vm_ar_g3a3_pgrip_default.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_pistolgrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/pgrip_default.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/pistolgrips/attachment_vm_ar_g3a3_pgrip_sniper.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/pistolgrips/attachment_vm_ar_g3a3_pgrip_sniper.lua new file mode 100644 index 0000000..a454edc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/pistolgrips/attachment_vm_ar_g3a3_pgrip_sniper.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_pistolgrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/pgrip_sniper.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/gamma3/pgrip_sniper.vmt") +ATTACHMENT.Name = "Sniper Grip" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/sights/attachment_vm_ar_g3a3_sight.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/sights/attachment_vm_ar_g3a3_sight.lua new file mode 100644 index 0000000..c81a6c4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/sights/attachment_vm_ar_g3a3_sight.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_sight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/sight.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_default.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_default.lua new file mode 100644 index 0000000..b223a7d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_default.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/stock_default.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_fixed.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_fixed.lua new file mode 100644 index 0000000..c9730fc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_fixed.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/stock_fixed.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/gamma3/stock_fixed.vmt") +ATTACHMENT.Name = "Fixed Stock" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_foldable.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_foldable.lua new file mode 100644 index 0000000..0275293 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_foldable.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/stock_foldable.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/gamma3/stock_foldable.vmt") +ATTACHMENT.Name = "CQC Stock" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_no.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_no.lua new file mode 100644 index 0000000..05cffbd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_no.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/stock_no.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/gamma3/stock_no.vmt") +ATTACHMENT.Name = "No Stock" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_retractable.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_retractable.lua new file mode 100644 index 0000000..fa68b9c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_retractable.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/stock_retractable.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/gamma3/stock_retractable.vmt") +ATTACHMENT.Name = "Carbine Stock" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_sniper.lua b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_sniper.lua new file mode 100644 index 0000000..4aabe14 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/g3a3/stocks/attachment_vm_ar_g3a3_stock_sniper.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/gamma3/stock_sniper.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/gamma3/stock_sniper.vmt") +ATTACHMENT.Name = "Sniper Stock" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barlight.lua b/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barlight.lua new file mode 100644 index 0000000..c130e76 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barlight.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS 11.8 Squall" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_barlight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_barrel_02.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.98 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.98 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Increase = weapon.Cone.Increase * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barlong.lua new file mode 100644 index 0000000..1222b7d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barlong.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "XRK Zodiac S440" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.09 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.09 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barrel.lua new file mode 100644 index 0000000..c4336b2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barshort.lua new file mode 100644 index 0000000..672bc74 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/barrels/attachment_vm_ar_galima_barshort.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS 8.3 Intruder" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.9 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_angledgrip01.lua new file mode 100644 index 0000000..aaa400f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_angledgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_angledgrip02.lua new file mode 100644 index 0000000..e5d9793 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_angledgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_bipodgrip.lua new file mode 100644 index 0000000..5bbae3e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_bipodgrip.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.AttachmentBodygroups = { + ["grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_stubbygrip01.lua new file mode 100644 index 0000000..36b4aa7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_stubbygrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_stubbygrip02.lua new file mode 100644 index 0000000..c9c338c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_stubbygrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip01.lua new file mode 100644 index 0000000..abb547d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip02.lua new file mode 100644 index 0000000..9335300 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip03.lua new file mode 100644 index 0000000..311cfb1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/grips/attachment_vm_ar_galima_vertgrip03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups = { + ["grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser01.lua new file mode 100644 index 0000000..65bdba6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser02.lua new file mode 100644 index 0000000..bbaa5c6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser03.lua new file mode 100644 index 0000000..f41d6df --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/lasers/attachment_vm_ar_galima_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_mag.lua b/lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_mag.lua new file mode 100644 index 0000000..43174da --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_smag.lua b/lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_smag.lua new file mode 100644 index 0000000..95659d6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_smag.lua @@ -0,0 +1,32 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "M67 10-R Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_smag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_smag.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Firemodes[1].Name = "Semi Auto" + weapon.Firemodes[1].OnSet = function(weapon) + weapon.Primary.Automatic = false + weapon.Primary.RPM = 700 + return "Firemode_Semi" + end + weapon.Primary.ClipSize = 10 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Animations.Reload = weapon.Animations.reload_smag + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_smag + weapon.Animations.Reload_Fast = weapon.Animations.reload_smag_fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_smag_fast +end + + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon.Firemodes[2] = nil + weapon.Primary.RPM = 450 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_xmag.lua b/lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_xmag.lua new file mode 100644 index 0000000..8bdfa5f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/mags/attachment_vm_ar_galima_xmag.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "45 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_xmag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_xmag.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 45 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/perks/attachment_vm_ar_galima_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/galima/perks/attachment_vm_ar_galima_perk_soh.lua new file mode 100644 index 0000000..ca42a42 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/perks/attachment_vm_ar_galima_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.reload_smag = weapon.Animations.reload_smag_fast + weapon.Animations.reload_empty_smag = weapon.Animations.reload_empty_smag_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stock.lua b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stock.lua new file mode 100644 index 0000000..5d790d7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stock.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stock.mdl") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockh.lua new file mode 100644 index 0000000..29932c0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockh.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Hunter" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stockh.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.91 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.91 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.91 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.91 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.87 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.87 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockl.lua new file mode 100644 index 0000000..5edf4fb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockl.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Close Quarters Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stockl.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.09 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.09 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.05 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.05 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.05 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockno.lua new file mode 100644 index 0000000..b400736 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockno.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "No Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stockno.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stockno.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 0 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stocks.lua new file mode 100644 index 0000000..8c091d5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stocks.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Spartan" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stock_02.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.03 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.03 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.02 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.02 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.02 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.02 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockskel.lua b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockskel.lua new file mode 100644 index 0000000..28a8fd5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stockskel.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "CR-56 EXO" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stockskel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stockskel.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 0 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.12 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.12 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.1 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.1 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.1 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stocksn.lua b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stocksn.lua new file mode 100644 index 0000000..92a42ba --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/galima/stock/attachment_vm_ar_galima_stocksn.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "XRK Gatekeeper" +ATTACHMENT.Model = Model("models/viper/mw/attachments/galima/attachment_vm_ar_galima_stocksn.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/galima/icon_attachment_ar_galima_stocksn.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.84 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.84 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.84 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.84 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.8 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/att_vm_pi_golf21_soh.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/att_vm_pi_golf21_soh.lua new file mode 100644 index 0000000..d0cde7b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/att_vm_pi_golf21_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Reload = weapon.Animations.Reload_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/att_vm_pi_golf21_stock.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/att_vm_pi_golf21_stock.lua new file mode 100644 index 0000000..871e793 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/att_vm_pi_golf21_stock.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "X16 Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_stock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_stock.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.ViewModelOffsets.Aim.Pos = weapon.ViewModelOffsets.Aim.Pos + Vector(0.015, 0, 0.05) + weapon.ViewModelOffsets.Idle.Pos = Vector(-0.15, -0.5, -0.5) + weapon.Zoom.Blur.EyeFocusDistance = 10 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.5 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetViewModel("models/viper/mw/weapons/v_glock_stock.mdl") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/mags/att_vm_pi_golf21_mag.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/mags/att_vm_pi_golf21_mag.lua new file mode 100644 index 0000000..5227189 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/mags/att_vm_pi_golf21_mag.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_mag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_mag.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/mags/att_vm_pi_golf21_mag_xxmags.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/mags/att_vm_pi_golf21_mag_xxmags.lua new file mode 100644 index 0000000..6bb1f25 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/mags/att_vm_pi_golf21_mag_xxmags.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "26 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_mag_xmags2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_mag_xmags2.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Primary.ClipSize = 26 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot01.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot01.lua new file mode 100644 index 0000000..b91ef8a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_minireddot01" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.ViewModelOffsets.Aim.Pos = weapon.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.475) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot02.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot02.lua new file mode 100644 index 0000000..de946d2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_minireddot02" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.ViewModelOffsets.Aim.Pos = weapon.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.45) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot03.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot03.lua new file mode 100644 index 0000000..9ade5f7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/sights/att_vm_pi_golf21_minireddot03.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_minireddot03" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.ViewModelOffsets.Aim.Pos = weapon.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.45) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide.lua new file mode 100644 index 0000000..f818529 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_slide.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_slide.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_auto.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_auto.lua new file mode 100644 index 0000000..d6e1530 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_auto.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Singuard Arms Featherweight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_slide_auto.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_slide_auto.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Firemodes[1].Name = "Full Auto" + weapon.Primary.Automatic = true + weapon.Primary.RPM = 1200 + weapon.Cone.Max = 2 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_black.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_black.lua new file mode 100644 index 0000000..55de1a6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_black.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Vanguard Elite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_slide_v3.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_slide.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Firemodes[1].Name = "3rnd Burst" + weapon.Primary.RPM = 1200 + weapon.Primary.BurstRounds = 3 + weapon.Primary.BurstDelay = 0.2 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_long.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_long.lua new file mode 100644 index 0000000..1580185 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_long.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Singuard Arms Advantage" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_golf21_slide_long.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_slide_long.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.04 + weapon.Primary.RPM = weapon.Primary.RPM + 100 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_v2.lua b/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_v2.lua new file mode 100644 index 0000000..f87a95d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/golf21/slides/att_vm_pi_golf21_slide_v2.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_pi_golf21_slide" +ATTACHMENT.Name = "Urban Defiler" +ATTACHMENT.Model = Model("models/viper/mw/attachments/golf21_slide_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/golf21/icon_attachment_pi_golf21_slide_v2.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip01.lua new file mode 100644 index 0000000..a5d793a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip01.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Commando Foregrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_angledgrip_lod0.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/grips/icon_attachment_angledgrip.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip01_smg.lua b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip01_smg.lua new file mode 100644 index 0000000..28dbffb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip01_smg.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_angledgrip04.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip02.lua new file mode 100644 index 0000000..dc337ef --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_angledgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Tactical Foregrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_angledgrip02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/grips/icon_attachment_angledgrip02.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.08 + weapon.Recoil.Horizontal[1] = self:ChangeRecoil(weapon.Recoil.Horizontal[1], 1.02) + weapon.Recoil.Horizontal[2] = self:ChangeRecoil(weapon.Recoil.Horizontal[2], 1.02) + weapon.Recoil.Vertical[1] = self:ChangeRecoil(weapon.Recoil.Vertical[1], 1.02) + weapon.Recoil.Vertical[2] = self:ChangeRecoil(weapon.Recoil.Vertical[2], 1.02) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_bipodgrip.lua new file mode 100644 index 0000000..30a132d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_bipodgrip.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Bipod Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_bipod_grip.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/grips/icon_attachment_bipod_grip.vmt") +ATTACHMENT.Bipod = true +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Recoil.Vertical[1] = self:ChangeRecoil(weapon.Recoil.Vertical[1], 0.9) + weapon.Recoil.Vertical[2] = self:ChangeRecoil(weapon.Recoil.Vertical[2], 0.9) + weapon.HoldType = "RifleWithVerticalGrip" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_stubbygrip01.lua new file mode 100644 index 0000000..5a8a3bb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_stubbygrip01.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Merc Foregrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_vertgrip_stubby01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/grips/icon_attachment_vertgrip_stubby01.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Recoil.Horizontal[1] = self:ChangeRecoil(weapon.Recoil.Horizontal[1], 0.9) + weapon.Recoil.Horizontal[2] = self:ChangeRecoil(weapon.Recoil.Horizontal[2], 0.9) + weapon.HoldType = "RifleWithVerticalGrip" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_stubbygrip02.lua new file mode 100644 index 0000000..ccca3ff --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_stubbygrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Operator Foregrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_vertgrip_stubby04.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/grips/icon_attachment_vertgrip_stubby04.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Recoil.Horizontal[1] = self:ChangeRecoil(weapon.Recoil.Horizontal[1], 0.85) + weapon.Recoil.Horizontal[2] = self:ChangeRecoil(weapon.Recoil.Horizontal[2], 0.85) + weapon.HoldType = "RifleWithVerticalGrip" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip01.lua new file mode 100644 index 0000000..f9c1da1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip01.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Foregrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_vertgrip02_lod0.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/grips/icon_attachment_vertgrip02.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Recoil.Vertical[1] = self:ChangeRecoil(weapon.Recoil.Vertical[1], 0.95) + weapon.Recoil.Vertical[2] = self:ChangeRecoil(weapon.Recoil.Vertical[2], 0.95) + weapon.HoldType = "RifleWithVerticalGrip" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip02.lua new file mode 100644 index 0000000..ddef125 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Ranger Foregrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_vertgrip03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/grips/icon_attachment_vertgrip03.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.98 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.98 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.98 + weapon.Recoil.Vertical[1] = self:ChangeRecoil(weapon.Recoil.Vertical[1], 0.93) + weapon.Recoil.Vertical[2] = self:ChangeRecoil(weapon.Recoil.Vertical[2], 0.93) + weapon.HoldType = "RifleWithVerticalGrip" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip03.lua new file mode 100644 index 0000000..39fa1b3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/grips/att_vm_vertgrip03.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Scout Foregrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_vertgrip_stubby02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/grips/icon_attachment_vertgrip_stubby02.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Recoil.Vertical[1] = self:ChangeRecoil(weapon.Recoil.Vertical[1], 0.9) + weapon.Recoil.Vertical[2] = self:ChangeRecoil(weapon.Recoil.Vertical[2], 0.9) + weapon.HoldType = "RifleWithVerticalGrip" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_long.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_long.lua new file mode 100644 index 0000000..c340916 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_long.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "26.9\" HDR Pro" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_barrel_long.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/hdromeo/icon_attachment_sn_hdromeo_barrel_long.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.8 + weapon.Recoil.Punch = weapon.Recoil.Punch * 0.8 + weapon.Cone.Hip = weapon.Cone.Hip * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_mid.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_mid.lua new file mode 100644 index 0000000..8dfc848 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_mid.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "26.0\" Bull Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_barrel_mid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/hdromeo/icon_attachment_sn_hdromeo_barrel_mid.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 + weapon.Projectile.Gravity = weapon.Projectile.Gravity * 0.65 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_short.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_short.lua new file mode 100644 index 0000000..4686fdf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_vm_sn_hdromeo_barrel_short.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "17.2\" Bull Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_barrel_short.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/hdromeo/icon_attachment_sn_hdromeo_barrel_short.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Projectile.Speed = weapon.Projectile.Speed * 0.65 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_weapon_vm_sn_hdromeo_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_weapon_vm_sn_hdromeo_barrel.lua new file mode 100644 index 0000000..bd9d50c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/barrels/attachment_weapon_vm_sn_hdromeo_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_weapon_vm_sn_hdromeo_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser01.lua new file mode 100644 index 0000000..b310aae --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser01.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_laser01" + +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser02.lua new file mode 100644 index 0000000..3d1bd7a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser02.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser03.lua new file mode 100644 index 0000000..ed36c69 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/lasers/attachment_vm_sn_hdromeo_laser03.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_vm_sn_hdromeo_xmag.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_vm_sn_hdromeo_xmag.lua new file mode 100644 index 0000000..3f4f980 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_vm_sn_hdromeo_xmag.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "7 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_xmag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/hdromeo/icon_attachment_sn_hdromeo_xmag.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet1"}, + [2] = {"j_bullet2"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.reload_xmag + weapon.Animations.Reload_Fast = weapon.Animations.reload_xmag_fast + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_xmag + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_xmag_fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 + weapon.Primary.ClipSize = 7 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_vm_sn_hdromeo_xmag2.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_vm_sn_hdromeo_xmag2.lua new file mode 100644 index 0000000..1dbcfbc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_vm_sn_hdromeo_xmag2.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "9 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_xmag2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/hdromeo/icon_attachment_sn_hdromeo_xmag2.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet1"}, + [2] = {"j_bullet2"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.reload_xmag + weapon.Animations.Reload_Fast = weapon.Animations.reload_xmag_fast + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_xmag + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_xmag_fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 + weapon.Primary.ClipSize = 9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_weapon_vm_sn_hdromeo_mag.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_weapon_vm_sn_hdromeo_mag.lua new file mode 100644 index 0000000..cc625cb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/mags/attachment_weapon_vm_sn_hdromeo_mag.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_weapon_vm_sn_hdromeo_mag.mdl") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet1"}, + [2] = {"j_bullet2"}, +} diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_compensator01.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_compensator01.lua new file mode 100644 index 0000000..95b5f15 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_compensator01.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_compensator01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_comp.mdl") +ATTACHMENT.BonemergeToCategory = {"Barrels"} diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_flashhider01.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_flashhider01.lua new file mode 100644 index 0000000..3259778 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_flashhider01.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_flashhider01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_flashhider.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_muzzlebrake01.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_muzzlebrake01.lua new file mode 100644 index 0000000..27632d8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_muzzlebrake01.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_muzzlebrake01" + +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_muzzlebrake.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_muzzlebrake02.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_muzzlebrake02.lua new file mode 100644 index 0000000..ea284dd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_muzzlebrake02.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_muzzlebrake02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_muzzlebrake02.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer01.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer01.lua new file mode 100644 index 0000000..91fbbd5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer01.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_silencer01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_silencer.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer02.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer02.lua new file mode 100644 index 0000000..1ad2030 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer02.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_silencer02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_silencer02.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer03.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer03.lua new file mode 100644 index 0000000..d9f14c9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/muzzles/att_vm_hdromeo_silencer03.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_silencer06" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_suppshort.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/perks/attachment_vm_sn_hdromeo_perk_bolt.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/perks/attachment_vm_sn_hdromeo_perk_bolt.lua new file mode 100644 index 0000000..3e36d08 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/perks/attachment_vm_sn_hdromeo_perk_bolt.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_perk_bolt" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/perks/attachment_vm_sn_hdromeo_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/perks/attachment_vm_sn_hdromeo_perk_soh.lua new file mode 100644 index 0000000..223eb84 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/perks/attachment_vm_sn_hdromeo_perk_soh.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.reload_xmag = weapon.Animations.reload_xmag_fast + weapon.Animations.reload_empty_xmag = weapon.Animations.reload_empty_xmag_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/receivers/attachment_weapon_vm_sn_hdromeo_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/receivers/attachment_weapon_vm_sn_hdromeo_receiver.lua new file mode 100644 index 0000000..8c51a04 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/receivers/attachment_weapon_vm_sn_hdromeo_receiver.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_weapon_vm_sn_hdromeo_receiver.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/sights/attachment_vm_sn_hdromeo_snprscope.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/sights/attachment_vm_sn_hdromeo_snprscope.lua new file mode 100644 index 0000000..b856992 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/sights/attachment_vm_sn_hdromeo_snprscope.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_optic_20x" +ATTACHMENT.Name = "HDR Scope" + +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_snprscope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/hdromeo/icon_attachment_sn_hdromeo_snprscope.vmt") +ATTACHMENT.AttachmentBodygroups = { + ["sight"] = 2 +} + +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_snprscope_hide.mdl"), + LensHideMaterial = Material("viper/MW/weapons/hdromeo/weapon_vm_sn_hdromeo_scope_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 700, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_sniper_new.vmt"), + Size = 2000, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_vm_sn_hdromeo_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_vm_sn_hdromeo_stockh.lua new file mode 100644 index 0000000..9e7dce9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_vm_sn_hdromeo_stockh.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Champion" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/hdromeo/icon_attachment_sn_hdromeo_stockh.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.8 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Recoil.Punch = weapon.Recoil.Punch * 0.5 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.5 + weapon.Recoil.AdsShakeMultiplier = weapon.Recoil.AdsShakeMultiplier * 0.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_vm_sn_hdromeo_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_vm_sn_hdromeo_stockl.lua new file mode 100644 index 0000000..8f28db2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_vm_sn_hdromeo_stockl.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Stalker-Scout" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_vm_sn_hdromeo_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/hdromeo/icon_attachment_sn_hdromeo_stockl.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.12 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.12 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + weapon.Zoom.MovementMultiplier = weapon.Zoom.MovementMultiplier * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_weapon_vm_sn_hdromeo_stock.lua b/lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_weapon_vm_sn_hdromeo_stock.lua new file mode 100644 index 0000000..263c574 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/hdromeo/stock/attachment_weapon_vm_sn_hdromeo_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/hdromeo/attachment_weapon_vm_sn_hdromeo_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel.lua new file mode 100644 index 0000000..f99ca64 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo121/attachment_vm_lm_kilo121_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_long.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_long.lua new file mode 100644 index 0000000..2991e85 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_long.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "M91 Heavy" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo121/attachment_vm_lm_kilo121_barrel_long.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo121/icon_attachment_lm_kilo121_barrel_long.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.15 + weapon.Cone.Hip = weapon.Cone.Hip * 0.75 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.86 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.86 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_mid.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_mid.lua new file mode 100644 index 0000000..a123abb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_mid.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "M91 Special Forces" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo121/attachment_vm_lm_kilo121_barrel_mid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo121/icon_attachment_lm_kilo121_barrel_mid.vmt") +ATTACHMENT.Bodygroups = { + ["tag_barrel_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.DecreaseEveryShot = weapon.Recoil.DecreaseEveryShot * 1.15 + weapon.Cone.DecreaseEveryShot = weapon.Cone.DecreaseEveryShot * 1.15 + weapon.Cone.Hip = weapon.Cone.Hip * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.88 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.88 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_short.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_short.lua new file mode 100644 index 0000000..9fe6629 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/barrels/attachment_vm_lm_kilo121_barrel_short.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "M91 Infantry" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo121/attachment_vm_lm_kilo121_barrel_short.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo121/icon_attachment_lm_kilo121_barrel_short.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.9 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 1.2 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.11 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.11 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_angledgrip01.lua new file mode 100644 index 0000000..70bf4c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_angledgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_angledgrip02.lua new file mode 100644 index 0000000..6258a62 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_angledgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_bipod.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_bipod.lua new file mode 100644 index 0000000..3c71970 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_bipod.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Bipod" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo121/attachment_vm_lm_kilo121_bipod.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo121/icon_attachment_lm_kilo121_bipod.vmt") +ATTACHMENT.Bipod = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_stubbygrip01.lua new file mode 100644 index 0000000..dc6ce78 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_stubbygrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_stubbygrip02.lua new file mode 100644 index 0000000..a3ece9f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_stubbygrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip01.lua new file mode 100644 index 0000000..824b47a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip02.lua new file mode 100644 index 0000000..23bdbb2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip03.lua new file mode 100644 index 0000000..11f9d54 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/grips/attachment_vm_lm_kilo121_vertgrip03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser01_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser01_cylinder.lua new file mode 100644 index 0000000..97c3817 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser01_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 0, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser02_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser02_cylinder.lua new file mode 100644 index 0000000..d8e75c6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser02_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 0, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser03_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser03_cylinder.lua new file mode 100644 index 0000000..e540dfe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/lasers/attachment_vm_lm_kilo121_laser03_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 0, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/mags/attachment_vm_lm_kilo121_mag.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/mags/attachment_vm_lm_kilo121_mag.lua new file mode 100644 index 0000000..38643dc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/mags/attachment_vm_lm_kilo121_mag.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo121/attachment_vm_lm_kilo121_mag.mdl") + +--round, bone name +--im aware its the other way around but the reloads switch mags + + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_b_17"}, + [1] = {"j_b_16"}, + [2] = {"j_b_15"}, + [3] = {"j_b_14"}, + [4] = {"j_b_13"}, + [5] = {"j_b_12"}, + [6] = {"j_b_11"}, + [7] = {"j_b_10"}, + [8] = {"j_b_09"}, + [9] = {"j_b_08"}, + [10] = {"j_b_07"}, + [11] = {"j_b_06"}, + [12] = {"j_b_05"}, + [13] = {"j_b_04"}, + [14] = {"j_b_03"}, + [15] = {"j_b_02"}, + [16] = {"j_b_01"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/mags/attachment_vm_lm_kilo121_mag_ext.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/mags/attachment_vm_lm_kilo121_mag_ext.lua new file mode 100644 index 0000000..05eb504 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/mags/attachment_vm_lm_kilo121_mag_ext.lua @@ -0,0 +1,37 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "150 Round Belt" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo121/attachment_vm_lm_kilo121_mag_ext.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo121/icon_attachment_lm_kilo121_mag_ext.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_b_17"}, + [1] = {"j_b_16"}, + [2] = {"j_b_15"}, + [3] = {"j_b_14"}, + [4] = {"j_b_13"}, + [5] = {"j_b_12"}, + [6] = {"j_b_11"}, + [7] = {"j_b_10"}, + [8] = {"j_b_09"}, + [9] = {"j_b_08"}, + [10] = {"j_b_07"}, + [11] = {"j_b_06"}, + [12] = {"j_b_05"}, + [13] = {"j_b_04"}, + [14] = {"j_b_03"}, + [15] = {"j_b_02"}, + [16] = {"j_b_01"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 150 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.81 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.81 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/perks/attachment_vm_lm_kilo121_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/perks/attachment_vm_lm_kilo121_perk_soh.lua new file mode 100644 index 0000000..da4dc82 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/perks/attachment_vm_lm_kilo121_perk_soh.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_perk_soh" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo121/stock/attachment_vm_lm_kilo121_stock.lua b/lua/weapons/mg_base/modules/attachmentss/kilo121/stock/attachment_vm_lm_kilo121_stock.lua new file mode 100644 index 0000000..2feaf2c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo121/stock/attachment_vm_lm_kilo121_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo121/attachment_vm_lm_kilo121_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barrel.lua new file mode 100644 index 0000000..29e5042 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barshort.lua new file mode 100644 index 0000000..0c5a143 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barshort.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Singuard Arms 16.6 SOCOM" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 + weapon.Cone.Hip = weapon.Cone.Hip * 0.92 + weapon.Cone.Ads = weapon.Cone.Ads * 0.92 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barsil.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barsil.lua new file mode 100644 index 0000000..e766fce --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_barsil.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Singuard Arms Whisper" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_barsil.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_barsil.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.96 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.96 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 + weapon:doSuppressorStats() + weapon.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + if(!weapon:HasAttachment("attachment_vm_ar_kilo433_drum_mag")) then + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_long_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_long_barrel.lua new file mode 100644 index 0000000..c696db7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/barrels/attachment_vm_ar_kilo433_long_barrel.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Singuard Arms 19.8 Prowler" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_long_barrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_long_barrel.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.06 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.06 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.99 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.99 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_angledgrip01.lua new file mode 100644 index 0000000..d9701b1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_angledgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_angledgrip02.lua new file mode 100644 index 0000000..25ceb70 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_angledgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_bipodgrip.lua new file mode 100644 index 0000000..9aac9d2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_bipodgrip.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_stubbygrip01.lua new file mode 100644 index 0000000..2fdab1f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_stubbygrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_stubbygrip02.lua new file mode 100644 index 0000000..45f366c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_stubbygrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip01.lua new file mode 100644 index 0000000..f9faa0f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip02.lua new file mode 100644 index 0000000..fba7d48 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip03.lua new file mode 100644 index 0000000..7042e81 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/grips/attachment_vm_ar_kilo433_vertgrip03.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser01.lua new file mode 100644 index 0000000..1396746 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser02.lua new file mode 100644 index 0000000..62f7e46 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser03.lua new file mode 100644 index 0000000..ded3db3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/lasers/attachment_vm_ar_kilo433_laser03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_drum_mag.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_drum_mag.lua new file mode 100644 index 0000000..3cef730 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_drum_mag.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "100 Round Drums" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_drum_mag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_drum_mag.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 100 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Inspect = weapon.Animations.Inspect_Drum + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_mag.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_mag.lua new file mode 100644 index 0000000..17a9c33 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_xmags.lua new file mode 100644 index 0000000..8def4d3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_xmags.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_xmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.96 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.96 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_xmags2.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_xmags2.lua new file mode 100644 index 0000000..a4ad617 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/mags/attachment_vm_ar_kilo433_xmags2.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "60 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_xmags2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_xmags2.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 60 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/perks/attachment_vm_ar_kilo433_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/perks/attachment_vm_ar_kilo433_perk_soh.lua new file mode 100644 index 0000000..3a99333 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/perks/attachment_vm_ar_kilo433_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock.lua new file mode 100644 index 0000000..43800f6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock_heavy.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock_heavy.lua new file mode 100644 index 0000000..055db63 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock_heavy.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Oden Ultralight Hollow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_stock_heavy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_stock_heavy.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.02 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.02 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.97 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.97 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock_v2.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock_v2.lua new file mode 100644 index 0000000..a4bbdfa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stock_v2.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stock_medium01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_stock_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_stock_v2.vmt") +-- ATTACHMENT.Bodygroups ={ +-- ["tag_stock"] = 1 +-- } + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stockno.lua new file mode 100644 index 0000000..d3bc46c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo433/stock/attachment_vm_ar_kilo433_stockno.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_vm_stock_no" +ATTACHMENT.Bodygroups ={ + ["stock_adapter"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barlong.lua new file mode 100644 index 0000000..0d30fc3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barlong.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Singuard Custom 27.6\"" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_barlong.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.11 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.11 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.84 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.84 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barmid.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barmid.lua new file mode 100644 index 0000000..8cc8d29 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barmid.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Singuard Custom 25.1\"" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_barmid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_barmid.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.93 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barrel.lua new file mode 100644 index 0000000..7d62a76 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barshort.lua new file mode 100644 index 0000000..63fc737 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/barrels/attachment_vm_sn_kilo98_barshort.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Singuard Custom 21.2\"" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.92 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.92 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser01.lua new file mode 100644 index 0000000..b3c60cc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser01.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups = { + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser02.lua new file mode 100644 index 0000000..72494d7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser02.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups = { + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser03.lua new file mode 100644 index 0000000..28dce78 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/lasers/attachment_vm_sn_kilo98_laser03.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups = { + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/perks/attachment_vm_sn_kilo98_perk_bolt.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/perks/attachment_vm_sn_kilo98_perk_bolt.lua new file mode 100644 index 0000000..87bee70 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/perks/attachment_vm_sn_kilo98_perk_bolt.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_bolt" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.rechamber_scope.Fps = weapon.Animations.rechamber_scope.Fps * 1.5 + --weapon.Animations.reload_start_scope.Fps = weapon.Animations.reload_start_scope.Fps * 1.5 + weapon.Animations.reload_end_scope.Fps = weapon.Animations.reload_end_scope.Fps * 1.5 + --weapon.Animations.reload_start_fast_scope.Fps = weapon.Animations.reload_start_fast_scope.Fps * 1.5 + weapon.Animations.reload_end_fast_scope.Fps = weapon.Animations.reload_end_fast_scope.Fps * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/perks/attachment_vm_sn_kilo98_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/perks/attachment_vm_sn_kilo98_perk_soh.lua new file mode 100644 index 0000000..81bb463 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/perks/attachment_vm_sn_kilo98_perk_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.reload_fast + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_fast + weapon.Animations.reload_start_scope = weapon.Animations.reload_start_fast_scope + weapon.Animations.reload_loop_scope = weapon.Animations.reload_loop_fast_scope + weapon.Animations.reload_end_scope = weapon.Animations.reload_end_fast_scope +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/receiver/attachment_vm_sn_kilo98_nostrip.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/receiver/attachment_vm_sn_kilo98_nostrip.lua new file mode 100644 index 0000000..9feb7ee --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/receiver/attachment_vm_sn_kilo98_nostrip.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_miscellaneous" +ATTACHMENT.Name = "No Stripper Clips" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_sling.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload_Start = weapon.Animations.reload_start_scope + weapon.Animations.Reload_Loop = weapon.Animations.reload_loop_scope + weapon.Animations.Reload_End = weapon.Animations.reload_end_scope +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/receiver/attachment_vm_sn_kilo98_sling.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/receiver/attachment_vm_sn_kilo98_sling.lua new file mode 100644 index 0000000..eb5db84 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/receiver/attachment_vm_sn_kilo98_sling.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_accessory" +ATTACHMENT.Name = "Sling" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_sling.vmt") +ATTACHMENT.Bodygroups = { + ["sling"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon.m_slingTarget = 0 + weapon.m_slingLerp = 0 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/sights/att_vm_scope_kilo98.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/sights/att_vm_scope_kilo98.lua new file mode 100644 index 0000000..5f9ad8f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/sights/att_vm_scope_kilo98.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_scope_mike14" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload_Start = weapon.Animations.reload_start_scope + weapon.Animations.Reload_Loop = weapon.Animations.reload_loop_scope + weapon.Animations.Reload_End = weapon.Animations.reload_end_scope + weapon.Animations.Rechamber = weapon.Animations.rechamber_scope +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/sights/att_vm_scope_vz_kilo98.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/sights/att_vm_scope_vz_kilo98.lua new file mode 100644 index 0000000..0666fe6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/sights/att_vm_scope_vz_kilo98.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_scope_vz" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload_Start = weapon.Animations.reload_start_scope + weapon.Animations.Reload_Loop = weapon.Animations.reload_loop_scope + weapon.Animations.Reload_End = weapon.Animations.reload_end_scope + weapon.Animations.Rechamber = weapon.Animations.rechamber_scope +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/sights/weapon_vm_scope_kilo98.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/sights/weapon_vm_scope_kilo98.lua new file mode 100644 index 0000000..58bb88d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/sights/weapon_vm_scope_kilo98.lua @@ -0,0 +1,35 @@ +ATTACHMENT.Base = "att_optic_10x" +ATTACHMENT.Name = "Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo98/weapon_vm_scope_kilo98.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_scope_kilo98.vmt") +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/kilo98/weapon_vm_scope_kilo98_lens_hide.mdl"), + LensHideMaterial = Material("viper/mw/weapons/kilo98/weapon_vm_sn_kilo98_scopeglass.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 750, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} + +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 0, +} + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_sniper_new.vmt"), + Size = 5000, + Color = Color(255, 255, 255, 255), + Attachment = "reticle", + Offset = Vector(-0.09, 0.01, 0) +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload_Start = weapon.Animations.reload_start_scope + weapon.Animations.Reload_Loop = weapon.Animations.reload_loop_scope + weapon.Animations.Reload_End = weapon.Animations.reload_end_scope + weapon.Animations.Rechamber = weapon.Animations.rechamber_scope +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stock_tactical.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stock_tactical.lua new file mode 100644 index 0000000..f72a737 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stock_tactical.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "STVOL Precision Comb" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_stock_tactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_stock_tactical.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.88 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.88 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stockl.lua new file mode 100644 index 0000000..7035d64 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stockl.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Hollow Stock Mod" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_stockl.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.03 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.03 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stocks.lua new file mode 100644 index 0000000..727739b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/kilo98/stock/attachment_vm_sn_kilo98_stocks.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Sport Comb" +ATTACHMENT.Model = Model("models/viper/mw/attachments/kilo98/attachment_vm_sn_kilo98_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo98/icon_attachment_sn_kilo98_stocks.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01.lua new file mode 100644 index 0000000..fd66a0d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_laser" +ATTACHMENT.Name = "Tac Laser" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_laser01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/laser/icon_attachment_laser01.vmt") +ATTACHMENT.Laser = { + BeamMaterial = Material("mw19_laserbeam.vmt"), + DotMaterial = Material("sprites/light_glow02_add.vmt"), + BeamSize = 15, + BeamWidth = 1, + DotSize = 5, + Color = Color(255, 0, 0, 255), + Attachment = "laser" +} +ATTACHMENT.Flashlight = { + FlashlightMaterial = Material("effects/flashlight001.vmt"), + Color = Color(255, 255, 255, 255), + Attachment = "laser" +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + weapon.Cone.Increase = weapon.Cone.Increase * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_cylinder.lua new file mode 100644 index 0000000..5e7aff1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_cylinder.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_laser_cylinder04.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/laser/icon_attachment_laser_cylinder04.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_pstl.lua b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_pstl.lua new file mode 100644 index 0000000..2e73b38 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_pstl.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_laser_pstl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/laser/icon_attachment_laser_pstl.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_shoothouse.lua b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_shoothouse.lua new file mode 100644 index 0000000..9195bfe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser01_shoothouse.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.Name = ".red Swift" +ATTACHMENT.Laser = { + BeamMaterial = Material("mw19_laserbeam.vmt"), + DotMaterial = Material("mg/sprites/shoothouselaser.vmt"), + BeamSize = 15, + BeamWidth = 1, + DotSize = 2, + Color = Color(255, 0, 255, 255), + Attachment = "laser" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02.lua new file mode 100644 index 0000000..5571924 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_laser" +ATTACHMENT.Name = "5mW Laser" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_laser02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/laser/icon_attachment_laser02.vmt") +ATTACHMENT.Laser = { + BeamMaterial = Material("mw19_laserbeam.vmt"), + DotMaterial = Material("sprites/light_glow02_add.vmt"), + BeamSize = 15, + BeamWidth = 1, + DotSize = 5, + Color = Color(0, 255, 255, 255), + Attachment = "laser" +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Cone.Hip = weapon.Cone.Hip * 0.85 + weapon.Cone.Ads = weapon.Cone.Ads * 0.85 + weapon.Cone.Increase = weapon.Cone.Increase * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02_cylinder.lua new file mode 100644 index 0000000..ab978e9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02_cylinder.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_laser_cylinder02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/laser/icon_attachment_laser_cylinder02.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02_pstl.lua b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02_pstl.lua new file mode 100644 index 0000000..b873f78 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser02_pstl.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_laser_pstl03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/laser/icon_attachment_laser_pstl03.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03.lua new file mode 100644 index 0000000..5aaf133 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_laser" +ATTACHMENT.Name = "1mW Laser" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_laser03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/laser/icon_attachment_laser03.vmt") +ATTACHMENT.Laser = { + BeamMaterial = Material("mw19_laserbeam.vmt"), + DotMaterial = Material("sprites/light_glow02_add.vmt"), + BeamSize = 15, + BeamWidth = 0.5, + DotSize = 5, + Color = Color(0, 255, 0, 255), + Attachment = "laser" +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.8 + weapon.Cone.Ads = weapon.Cone.Ads * 0.8 + weapon.Cone.Increase = weapon.Cone.Increase * 0.8 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03_cylinder.lua new file mode 100644 index 0000000..9877727 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03_cylinder.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_laser_cylinder03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/laser/icon_attachment_laser_cylinder03.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03_pstl.lua b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03_pstl.lua new file mode 100644 index 0000000..1c52378 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lasers/att_vm_laser03_pstl.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_laser_pstl04.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/laser/icon_attachment_laser_pstl04.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel.lua new file mode 100644 index 0000000..a63c623 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_long.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_long.lua new file mode 100644 index 0000000..b570cee --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_long.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "SA87 25.4\" Factory" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_barrel_long.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/lima86/icon_attachment_lm_lima86_barrel_long.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.03 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.03 + weapon.Recoil.DecreaseEveryShot = weapon.Recoil.DecreaseEveryShot * 1.1 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.98 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.96 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.96 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_mid.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_mid.lua new file mode 100644 index 0000000..cbb92ad --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_mid.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "SA87 18.2\" Factory" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_barrel_mid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/lima86/icon_attachment_lm_lima86_barrel_mid.vmt") +ATTACHMENT.Bodygroups = { + ["tag_barrel_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 1.06 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.96 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.96 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.07 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.07 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_short.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_short.lua new file mode 100644 index 0000000..92c3c7a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/barrels/attachment_vm_lm_lima86_barrel_short.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "SA87 12.4\" Factory" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_barrel_short.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/lima86/icon_attachment_lm_lima86_barrel_short.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Cone.Hip = weapon.Cone.Hip * 1.15 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.9 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_angledgrip01.lua new file mode 100644 index 0000000..70bf4c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_angledgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_angledgrip02.lua new file mode 100644 index 0000000..6258a62 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_angledgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_bipod.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_bipod.lua new file mode 100644 index 0000000..4cf0ea6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_bipod.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Bipod" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_bipod.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/lima86/icon_attachment_lm_lima86_bipod.vmt") +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_stubbygrip01.lua new file mode 100644 index 0000000..dc6ce78 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_stubbygrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_stubbygrip02.lua new file mode 100644 index 0000000..a3ece9f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_stubbygrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip01.lua new file mode 100644 index 0000000..824b47a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip02.lua new file mode 100644 index 0000000..23bdbb2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip03.lua new file mode 100644 index 0000000..11f9d54 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/grips/attachment_vm_lm_lima86_vertgrip03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser01_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser01_cylinder.lua new file mode 100644 index 0000000..dce2efc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser01_cylinder.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser02_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser02_cylinder.lua new file mode 100644 index 0000000..4571d58 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser02_cylinder.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser03_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser03_cylinder.lua new file mode 100644 index 0000000..731044d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/lasers/attachment_vm_lm_lima86_laser03_cylinder.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_mag.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_mag.lua new file mode 100644 index 0000000..c47c463 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_mag.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_mag.mdl") + +--round, bone name +--im aware its the other way around but the reloads switch mags + + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet1"}, + [2] = {"j_bullet2"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_xmags.lua new file mode 100644 index 0000000..b673bf2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_xmags.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_50rnd_mag" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/lima86/icon_attachment_lm_lima86_xmags.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_magextbullet01"}, + [2] = {"j_magextbullet02"}, + [3] = {"j_magextbullet03"}, + [4] = {"j_magextbullet04"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_xmags2.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_xmags2.lua new file mode 100644 index 0000000..468348f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/mags/attachment_vm_lm_lima86_xmags2.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_60rnd_mag" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_xmags2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/lima86/icon_attachment_lm_lima86_xmags2.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_magextbullet02"}, + [2] = {"j_magextbullet03"}, + [3] = {"j_magextbullet04"}, + [4] = {}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/perks/attachment_vm_lm_lima86_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/perks/attachment_vm_lm_lima86_perk_soh.lua new file mode 100644 index 0000000..418ff73 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/perks/attachment_vm_lm_lima86_perk_soh.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/sights/attachment_vm_lm_lima86_4x_west.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/sights/attachment_vm_lm_lima86_4x_west.lua new file mode 100644 index 0000000..df1358c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/sights/attachment_vm_lm_lima86_4x_west.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_optic_4x" +ATTACHMENT.Name = "SUSAT" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_4x_west.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/lima86/icon_attachment_sn_lima86_scope.vmt") +ATTACHMENT.Bodygroups = { + ["sight"] = 1, + ["tag_sight"] = 1 +} +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_4x_west_hide.mdl"), + LensHideMaterial = Material("viper/mw/weapons/lima86/weapon_vm_sn_lima86_scopelens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 750, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_16.vmt"), + Size = 600, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stock_tactical.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stock_tactical.lua new file mode 100644 index 0000000..da5f226 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stock_tactical.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_vm_stock_heavy02" +ATTACHMENT.Name = "XRK SA87 Heavy Stock Pro" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_stock_tactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/lima86/icon_attachment_lm_lima86_stock_tactical.vmt") + +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stockl.lua new file mode 100644 index 0000000..dd48a1f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stockl.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_vm_stock_light01" +ATTACHMENT.Name = "SA87 Ultralight Hollow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/lima86/icon_attachment_lm_lima86_stockl.vmt") + +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stocks.lua new file mode 100644 index 0000000..f9e8374 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/lima86/stock/attachment_vm_lm_lima86_stocks.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_stock_medium01" +ATTACHMENT.Name = "FORGE TAC CQB Comb" +ATTACHMENT.Model = Model("models/viper/mw/attachments/lima86/attachment_vm_lm_lima86_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/lima86/icon_attachment_lm_lima86_stocks.vmt") + diff --git a/lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_45rnd_mag_eastern.lua b/lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_45rnd_mag_eastern.lua new file mode 100644 index 0000000..2719db4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_45rnd_mag_eastern.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "45 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_anov94_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/icon_attachment_ar_anov94_xmags.vmt") + +--bullets arent rigged + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 45 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + weapon:doSmgStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_50rnd_mag.lua b/lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_50rnd_mag.lua new file mode 100644 index 0000000..9c98ebb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_50rnd_mag.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_mcharlie_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/icon_attachment_ar_mcharlie_xmags.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_bullet_01"}, + [2] = {"j_bullet_02"}, + [3] = {"j_bullet_03"}, + [4] = {"j_bullet_04"} +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.96 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.96 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_60rnd_mag.lua b/lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_60rnd_mag.lua new file mode 100644 index 0000000..ae40425 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/magazines/att_vm_60rnd_mag.lua @@ -0,0 +1,29 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "60 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_mcharlie_xmags2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/icon_attachment_ar_mcharlie_xmags2_clip.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_bullet_02"}, + [2] = {"j_bullet_03"}, + [3] = {"j_bullet_04"} +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Primary.ClipSize = 60 + + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg || weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg || weapon.Animations.Reload_Empty + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast || weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast || weapon.Animations.Reload_Empty_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + --weapon.Animations.Reload_Empty.Length = weapon.Animations.Reload_Empty.Length + 0.2 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_barrel.lua new file mode 100644 index 0000000..0018a5f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_barrel_v17.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_barrel_v17.lua new file mode 100644 index 0000000..5d59441 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_barrel_v17.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Slaying Moon" +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.CosmeticChange = true +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_barrel_v17.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_barrel.vmt") diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_longbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_longbarrel.lua new file mode 100644 index 0000000..27a3b88 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_longbarrel.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Tempus Marksman" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_longbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_longbarrel.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.1 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_shortbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_shortbarrel.lua new file mode 100644 index 0000000..ad8f819 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_shortbarrel.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Tempus Mini" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_shortbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_shortbarrel.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.85 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.08 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_barshort_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_suppressorbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_suppressorbarrel.lua new file mode 100644 index 0000000..4a499c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/barrels/attachment_vm_ar_mcharlie_suppressorbarrel.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Singuard Arms Whisper" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_suppressorbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_suppressorbarrel.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.08 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Cone.Hip = weapon.Cone.Hip * 0.95 + weapon:doSuppressorStats() + weapon.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_barshort_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_angledgrip01.lua new file mode 100644 index 0000000..3aa2002 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_angledgrip01.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon:HasAttachment("attachment_vm_ar_mcharlie_shortbarrel")) then + weapon:SetGripPoseParameter("grip_ang_barshort_offset") + else + weapon:SetGripPoseParameter("grip_gripang_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_angledgrip02.lua new file mode 100644 index 0000000..38e70ac --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_angledgrip02.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon:HasAttachment("attachment_vm_ar_mcharlie_shortbarrel")) then + weapon:SetGripPoseParameter("grip_ang_barshort_offset") + else + weapon:SetGripPoseParameter("grip_gripang_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_bipodgrip.lua new file mode 100644 index 0000000..dea872d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_bipodgrip.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon:HasAttachment("attachment_vm_ar_mcharlie_shortbarrel")) then + weapon:SetGripPoseParameter("grip_vert_barshort_offset") + else + weapon:SetGripPoseParameter("grip_gripvert_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_stubbygrip01.lua new file mode 100644 index 0000000..3aec8ee --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_stubbygrip01.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon:HasAttachment("attachment_vm_ar_mcharlie_shortbarrel")) then + weapon:SetGripPoseParameter("grip_vertpro_barshort_offset") + else + weapon:SetGripPoseParameter("grip_gripvert_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_stubbygrip02.lua new file mode 100644 index 0000000..d7b6a81 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_stubbygrip02.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon:HasAttachment("attachment_vm_ar_mcharlie_shortbarrel")) then + weapon:SetGripPoseParameter("grip_vertpro_barshort_offset") + else + weapon:SetGripPoseParameter("grip_gripvert_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip01.lua new file mode 100644 index 0000000..4b79d57 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip01.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon:HasAttachment("attachment_vm_ar_mcharlie_shortbarrel")) then + weapon:SetGripPoseParameter("grip_vert_barshort_offset") + else + weapon:SetGripPoseParameter("grip_gripvert_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip02.lua new file mode 100644 index 0000000..d12ff21 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip02.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon:HasAttachment("attachment_vm_ar_mcharlie_shortbarrel")) then + weapon:SetGripPoseParameter("grip_vert_barshort_offset") + else + weapon:SetGripPoseParameter("grip_gripvert_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip03.lua new file mode 100644 index 0000000..76b178b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/grips/attachment_vm_ar_mcharlie_vertgrip03.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon:HasAttachment("attachment_vm_ar_mcharlie_shortbarrel")) then + weapon:SetGripPoseParameter("grip_vert_barshort_offset") + else + weapon:SetGripPoseParameter("grip_gripvert_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser01.lua new file mode 100644 index 0000000..8467033 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser01.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} + +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser02.lua new file mode 100644 index 0000000..75c2119 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser02.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} + +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser03.lua new file mode 100644 index 0000000..6376c3d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/lasers/attachment_vm_ar_mcharlie_laser03.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} + +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_mag.lua new file mode 100644 index 0000000..7cfbc21 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_mag.lua @@ -0,0 +1,36 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_mag.mdl") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet_01"}, + [2] = {"j_bullet_02"}, + [3] = {"j_bullet_03"}, + [4] = {"j_bullet_04"}, + [5] = {"j_bullet_05"}, + [6] = {"j_bullet_06"}, + [7] = {"j_bullet_07"}, + [8] = {"j_bullet_08"}, + [9] = {"j_bullet_09"}, + [10] = {"j_bullet_10"}, + [11] = {"j_bullet_11"}, + [12] = {"j_bullet_12"}, + [13] = {"j_bullet_13"}, + [14] = {"j_bullet_14"}, + [15] = {"j_bullet_15"}, + [16] = {"j_bullet_16"}, + [17] = {"j_bullet_17"}, + [18] = {"j_bullet_18"}, + [19] = {"j_bullet_19"}, + [20] = {"j_bullet_20"}, + [21] = {"j_bullet_21"}, + [22] = {"j_bullet_22"}, + [23] = {"j_bullet_23"}, + [24] = {"j_bullet_24"}, + [25] = {"j_bullet_25"}, + [26] = {"j_bullet_26"}, + [27] = {"j_bullet_27"}, + [28] = {"j_bullet_28"}, + [29] = {"j_bullet_29"}, + [30] = {"j_bullet_30"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_mag_v17.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_mag_v17.lua new file mode 100644 index 0000000..755b682 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_mag_v17.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "attachment_vm_ar_mcharlie_mag" +ATTACHMENT.Name = "Slaying Moon" +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.CosmeticChange = true +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_mag_v17.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_mag.vmt") diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_magsub.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_magsub.lua new file mode 100644 index 0000000..854adeb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_magsub.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = ".300 Blackout 30-Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_magsub.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_magsub.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet_02"}, + [1] = {"j_bullet_02"}, + [2] = {"j_bullet_02"}, + [3] = {"j_bullet_03"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.2 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.2 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.2 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.2 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.1 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.1 + weapon:doCalConversionStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_xmags.lua new file mode 100644 index 0000000..56af367 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_xmags.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_kilo433_xmags.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet_01"}, + [2] = {"j_bullet_02"}, + [3] = {"j_bullet_03"}, + [4] = {"j_bullet_04"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_xmags2.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_xmags2.lua new file mode 100644 index 0000000..ad4bf75 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/mags/attachment_vm_ar_mcharlie_xmags2.lua @@ -0,0 +1,29 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "60 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_xmags2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_xmags2_clip.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet_02"}, + [2] = {"j_bullet_02"}, + [3] = {"j_bullet_03"}, + [4] = {"j_bullet_04"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 60 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + weapon.Animations.Reload_Empty.Length = weapon.Animations.Reload_Empty.Length + 0.2 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/perks/attachment_vm_ar_mcharlie_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/perks/attachment_vm_ar_mcharlie_perk_soh.lua new file mode 100644 index 0000000..3a99333 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/perks/attachment_vm_ar_mcharlie_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/receiver/attachment_vm_ar_mcharlie_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/receiver/attachment_vm_ar_mcharlie_receiver.lua new file mode 100644 index 0000000..fb3aa98 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/receiver/attachment_vm_ar_mcharlie_receiver.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_receiver.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/kilo433/icon_attachment_ar_mcharlie_receiver.vmt") +-- ATTACHMENT.Bodygroups ={ +-- ["tag_stock"] = 1 +-- } + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/receiver/attachment_vm_ar_mcharlie_receiver_v17.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/receiver/attachment_vm_ar_mcharlie_receiver_v17.lua new file mode 100644 index 0000000..8ae487b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/receiver/attachment_vm_ar_mcharlie_receiver_v17.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "Slaying Moon" +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.CosmeticChange = true +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_receiver_v17.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_receiver.vmt") + +-- ATTACHMENT.Bodygroups ={ +-- ["tag_stock"] = 1 +-- } + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_lightstock.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_lightstock.lua new file mode 100644 index 0000000..3775dc9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_lightstock.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "M13 Skeleton Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_lightstock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_lightstock.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 0 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.15 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.15 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.15 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_stock.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_stock.lua new file mode 100644 index 0000000..60d3e15 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_stock_v2.lua b/lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_stock_v2.lua new file mode 100644 index 0000000..de9ab7b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mcharlie/stock/attachment_vm_ar_mcharlie_stock_v2.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_vm_stock_medium01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_stock_v3.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mcharlie/icon_attachment_ar_mcharlie_stock_v2.vmt") +-- ATTACHMENT.Bodygroups ={ +-- ["tag_stock"] = 1 +-- } + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.2 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.2 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.2 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.2 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/attachment_vm_lm_mgolf34_ironsight.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/attachment_vm_lm_mgolf34_ironsight.lua new file mode 100644 index 0000000..c1a3293 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/attachment_vm_lm_mgolf34_ironsight.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_sight" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.ViewModelOffsets.Aim.Pos.y = 4 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel.lua new file mode 100644 index 0000000..937fbbb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf34/attachment_vm_lm_mgolf34_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_long.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_long.lua new file mode 100644 index 0000000..1c53e25 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_long.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS Brute" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf34/attachment_vm_lm_mgolf34_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf34/icon_attachment_lm_mgolf34_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.86 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.86 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_mid.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_mid.lua new file mode 100644 index 0000000..74482ac --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_mid.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS Elite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf34/attachment_vm_lm_mgolf34_barmid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf34/icon_attachment_lm_mgolf34_barmid.vmt") +ATTACHMENT.Bodygroups = { + ["tag_barrel_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.75 + weapon.Cone.MinDecreaseEveryShot = weapon.Cone.MinDecreaseEveryShot * 0.75 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.86 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.86 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_short.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_short.lua new file mode 100644 index 0000000..26fa081 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/barrels/attachment_vm_lm_mgolf34_barrel_short.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS Stubby" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf34/attachment_vm_lm_mgolf34_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf34/icon_attachment_lm_mgolf34_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 1.18 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.94 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.12 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.12 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_angledgrip01.lua new file mode 100644 index 0000000..5d6245a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_angledgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_angledgrip02.lua new file mode 100644 index 0000000..c63ab97 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_angledgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_bipod.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_bipod.lua new file mode 100644 index 0000000..a552e04 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_bipod.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Bipod" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf34/attachment_vm_lm_mgolf34_bipod.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf34/icon_attachment_lm_mgolf34_bipod.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.Bipod = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_stubbygrip01.lua new file mode 100644 index 0000000..44349dc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_stubbygrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_stubbygrip02.lua new file mode 100644 index 0000000..e04f031 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_stubbygrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip01.lua new file mode 100644 index 0000000..125bd5a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip02.lua new file mode 100644 index 0000000..5790ff6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip03.lua new file mode 100644 index 0000000..5345aab --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/grips/attachment_vm_lm_mgolf34_vertgrip03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser01_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser01_cylinder.lua new file mode 100644 index 0000000..74dcf27 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser01_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" + +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 5, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser02_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser02_cylinder.lua new file mode 100644 index 0000000..2cb7a5a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser02_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" + +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 5, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser03_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser03_cylinder.lua new file mode 100644 index 0000000..824bd59 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/lasers/attachment_vm_lm_mgolf34_laser03_cylinder.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" + +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 5, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/mags/attachment_vm_lm_mgolf34_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/mags/attachment_vm_lm_mgolf34_mag.lua new file mode 100644 index 0000000..e0ca389 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/mags/attachment_vm_lm_mgolf34_mag.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf34/attachment_vm_lm_mgolf34_mag.mdl") + +--round, bone name +--im aware its the other way around but the reloads switch mags + + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet_01"}, + [1] = {"j_bullet_02"}, + [2] = {"j_bullet_03"}, + [3] = {"j_bullet_04"}, + [4] = {"j_bullet_05"}, +} diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/mags/attachment_vm_lm_mgolf34_mag_xlrg.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/mags/attachment_vm_lm_mgolf34_mag_xlrg.lua new file mode 100644 index 0000000..35cd79a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/mags/attachment_vm_lm_mgolf34_mag_xlrg.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "100 Round Belt" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf34/attachment_vm_lm_mgolf34_mag_xlrg.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf34/icon_attachment_lm_mgolf34_mag.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet_01"}, + [1] = {"j_bullet_02"}, + [2] = {"j_bullet_03"}, + [3] = {"j_bullet_04"}, + [4] = {"j_bullet_05"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 100 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/perks/attachment_vm_lm_mgolf34_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/perks/attachment_vm_lm_mgolf34_perk_soh.lua new file mode 100644 index 0000000..5aca24a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/perks/attachment_vm_lm_mgolf34_perk_soh.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf34/stock/attachment_vm_lm_mgolf34_stock.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf34/stock/attachment_vm_lm_mgolf34_stock.lua new file mode 100644 index 0000000..2ea1790 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf34/stock/attachment_vm_lm_mgolf34_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf34/attachment_vm_lm_mgolf34_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel.lua new file mode 100644 index 0000000..bb26310 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_barrel.mdl") +ATTACHMENT.Bipod = true diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel_med.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel_med.lua new file mode 100644 index 0000000..bbf8e67 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel_med.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FTAC 8.98\" Spitfire" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_barrel_med.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_barrel_med.vmt") +ATTACHMENT.Bodygroups = { + ["tag_barrel_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.95 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.95 + weapon.Cone.Hip = weapon.Cone.Hip * 1.05 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.04 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.04 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel_short.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel_short.lua new file mode 100644 index 0000000..3253350 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/barrels/attachment_vm_lm_mgolf36_barrel_short.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "XRK Ultralight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_barrel_short.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_barrel_short.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.9 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 1.15 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.11 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.11 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_angledgrip01.lua new file mode 100644 index 0000000..5d6245a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_angledgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_angledgrip02.lua new file mode 100644 index 0000000..c63ab97 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_angledgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_stubbygrip01.lua new file mode 100644 index 0000000..44349dc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_stubbygrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_stubbygrip02.lua new file mode 100644 index 0000000..e04f031 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_stubbygrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip01.lua new file mode 100644 index 0000000..125bd5a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip02.lua new file mode 100644 index 0000000..5790ff6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip03.lua new file mode 100644 index 0000000..5345aab --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/grips/attachment_vm_lm_mgolf36_vertgrip03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups ={ + ["tag_grip_show"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser01.lua new file mode 100644 index 0000000..3c0a4d8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser02.lua new file mode 100644 index 0000000..4392f23 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser02.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser03.lua new file mode 100644 index 0000000..d2a9a2e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/lasers/attachment_vm_lm_mgolf36_laser03.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_50mag.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_50mag.lua new file mode 100644 index 0000000..afd0d9f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_50mag.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_50rnd_mag" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + weapon.Animations.Reload = weapon.Animations.Reload_armag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_armag + weapon.Animations.Inspect = weapon.Animations.Inspect_armag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.25 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.25 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.25 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.25 + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_60mag.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_60mag.lua new file mode 100644 index 0000000..c5c0901 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_60mag.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_vm_60rnd_mag" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + weapon.Animations.Reload = weapon.Animations.Reload_armag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_armag + weapon.Animations.Inspect = weapon.Animations.Inspect_armag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.25 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.25 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.25 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.25 + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_drummag.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_drummag.lua new file mode 100644 index 0000000..5ab5a14 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_drummag.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "100 Round Drums" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_drummag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_mag.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet1"}, + [2] = {"j_bullet2"}, + [3] = {"j_bullet3"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 100 --so when putting other mags in they dont show up as negative +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_drummag200.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_drummag200.lua new file mode 100644 index 0000000..0bdcbca --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_drummag200.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "200 Round Drums" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_kilo433_drum_mag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_mag.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 200 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_mag.lua new file mode 100644 index 0000000..abc1f8f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_mag.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "30 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_mag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_mag.vmt") + +--round, bone name +--im aware its the other way around but the reloads switch mags + + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet1"}, + [2] = {"j_bullet2"}, + [3] = {"j_bullet3"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 30 + weapon.Animations.Reload = weapon.Animations.Reload_armag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_armag + weapon.Animations.Inspect = weapon.Animations.Inspect_armag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.25 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.25 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.25 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.25 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_magblackout.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_magblackout.lua new file mode 100644 index 0000000..81d2840 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/mags/attachment_vm_lm_mgolf36_magblackout.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = ".300 Blackout 30-Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mcharlie/attachment_vm_ar_mcharlie_magsub.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_mag.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 30 + weapon.Animations.Reload = weapon.Animations.Reload_armag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_armag + weapon.Animations.Inspect = weapon.Animations.Inspect_armag +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/perks/attachment_vm_lm_mgolf36_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/perks/attachment_vm_lm_mgolf36_perk_soh.lua new file mode 100644 index 0000000..7c748a9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/perks/attachment_vm_lm_mgolf36_perk_soh.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_fast + weapon.Animations.Reload_armag = weapon.Animations.Reload_fast_armag + weapon.Animations.Reload_empty_armag = weapon.Animations.Reload_empty_fast_armag +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/pistolgrips/attachment_vm_lm_mgolf36_pistolgrip.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/pistolgrips/attachment_vm_lm_mgolf36_pistolgrip.lua new file mode 100644 index 0000000..b6cdad0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/pistolgrips/attachment_vm_lm_mgolf36_pistolgrip.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_pistolgrip.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_barshort.vmt") + diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/sights/attachment_vm_lm_mgolf36_4x.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/sights/attachment_vm_lm_mgolf36_4x.lua new file mode 100644 index 0000000..4b3376d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/sights/attachment_vm_lm_mgolf36_4x.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_optic_4x" +ATTACHMENT.Name = "Solozero K498 4.0x Integral" + +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_4x.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_4x.vmt") +ATTACHMENT.Bodygroups = { + ["sight"] = 2 +} +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_4x_hide.mdl"), + LensHideMaterial = Material("viper/MW/weapons/mgolf36/weapon_vm_lm_mgolf36_4x_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 700, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_sniper_new.vmt"), + Size = 2000, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/sights/attachment_vm_lm_mgolf36_reflex.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/sights/attachment_vm_lm_mgolf36_reflex.lua new file mode 100644 index 0000000..de258cf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/sights/attachment_vm_lm_mgolf36_reflex.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_optic_2x" +ATTACHMENT.Name = "FSS Integral Reflex" + +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_reflex.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_reflex.vmt") +ATTACHMENT.Bodygroups = { + ["sight"] = 2 +} + +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_reflex_hide.mdl"), + LensHideMaterial = Material("viper/MW/weapons/mgolf36/weapon_vm_lm_mgolf36_reflex_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 700, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_reflex_default2.vmt"), + Size = 600, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock.lua new file mode 100644 index 0000000..4ed584e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_stock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_barshort.vmt") + diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_heavy.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_heavy.lua new file mode 100644 index 0000000..d774cc8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_heavy.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_stock_heavy01" +ATTACHMENT.Name = "FSS Infantry" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_stock_heavy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_stock_heavy.vmt") + diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_light.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_light.lua new file mode 100644 index 0000000..07c353e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_light.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_stock_light01" +ATTACHMENT.Name = "XRK Axis" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_stock_light.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_stock_light.vmt") + diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_no.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_no.lua new file mode 100644 index 0000000..3ed0d0c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_no.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_stock_no" +ATTACHMENT.RenderOverride = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_tactical.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_tactical.lua new file mode 100644 index 0000000..5a8d987 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/stock/attachment_vm_lm_mgolf36_stock_tactical.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_stock_heavy02" +ATTACHMENT.Name = "FSS Ranger" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_stock_tactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mgolf36/icon_attachment_lm_mgolf36_stock_tactical.vmt") + diff --git a/lua/weapons/mg_base/modules/attachmentss/mgolf36/toprails/attachment_vm_lm_mgolf36_toprail.lua b/lua/weapons/mg_base/modules/attachmentss/mgolf36/toprails/attachment_vm_lm_mgolf36_toprail.lua new file mode 100644 index 0000000..4d5dece --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mgolf36/toprails/attachment_vm_lm_mgolf36_toprail.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_toprail" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mgolf36/attachment_vm_lm_mgolf36_toprail.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barauto.lua b/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barauto.lua new file mode 100644 index 0000000..c621a5a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barauto.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Sorokin 140mm Auto" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_barauto.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_barauto.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Recoil.Shake = weapon.Recoil.Shake * 1.3 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 2 + weapon.Cone.Max = weapon.Cone.Max * 1.5 + weapon.Primary.Automatic = true + weapon.Primary.RPM = 800 + weapon.Firemodes[1].Name = "Full Auto" + weapon.PrintName = "Sorokin" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barlight.lua b/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barlight.lua new file mode 100644 index 0000000..9c5ff3c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barlight.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "SSB 105mm" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_barlight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_barlight.vmt") +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barrel.lua new file mode 100644 index 0000000..a06f588 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_barrel.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barsil.lua b/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barsil.lua new file mode 100644 index 0000000..aa2a36e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/barrels/attachment_vm_pi_mike_barsil.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "SSL 308mm" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_barsil.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_barsil.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_grip.lua b/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_grip.lua new file mode 100644 index 0000000..eed06c9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_grip.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_pistolgrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_grip.mdl") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip01.lua new file mode 100644 index 0000000..c82d262 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip01.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_pistolgrip" +ATTACHMENT.Name = "VLK Spetznaz" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_pistolgrip01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_pistolgrip01.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip02.lua new file mode 100644 index 0000000..df68426 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip02.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_pistolgrip" +ATTACHMENT.Name = "VLK Prizrak" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_pistolgrip02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_pistolgrip02.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip03.lua new file mode 100644 index 0000000..f3c0053 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/grips/attachment_vm_pi_mike_pistolgrip03.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_pistolgrip" +ATTACHMENT.Name = "VLK Elita" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_pistolgrip03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_pistolgrip03.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.08 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser01.lua new file mode 100644 index 0000000..778d326 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser01.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser01_pstl" +ATTACHMENT.Bodygroups = { + ["tag_laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser02.lua new file mode 100644 index 0000000..4491f66 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser02.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser02_pstl" +ATTACHMENT.Bodygroups = { + ["tag_laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser03.lua new file mode 100644 index 0000000..316333a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/lasers/att_vm_pi_mike_laser03.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser03_pstl" +ATTACHMENT.Bodygroups = { + ["tag_laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_drummag.lua b/lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_drummag.lua new file mode 100644 index 0000000..2c65776 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_drummag.lua @@ -0,0 +1,38 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "80 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_drummag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_drummag.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, + [1] = {"j_bullet2"}, + [2] = {"j_bullet3"}, + [3] = {"j_bullet4"}, + [4] = {"j_bullet5"}, + [5] = {"j_bullet6"}, + [6] = {"j_bullet7"}, + [7] = {"j_bullet8"}, + [8] = {"j_bullet9"}, + [9] = {"j_bullet10"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 80 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Inspect = weapon.Animations.Inspect_Drum + weapon.Animations.Equip = weapon.Animations.Equip_Drum + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.65 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.65 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.7 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.7 + weapon.Animations.Reload_XmagLrg.Fps = weapon.Animations.Reload_XmagLrg.Fps * 0.9 + weapon.Animations.Reload_Empty_XmagLrg.Fps = weapon.Animations.Reload_Empty_XmagLrg.Fps * 0.8 + weapon.Animations.Reload_XmagLrg_Fast.Fps = weapon.Animations.Reload_XmagLrg.Fps * 0.9 + weapon.Animations.Reload_Empty_XmagLrg_Fast.Fps = weapon.Animations.Reload_Empty_XmagLrg.Fps * 0.8 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_mag.lua new file mode 100644 index 0000000..40ba063 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_mag.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_mag.mdl") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet1"}, + [2] = {"j_bullet2"}, + [3] = {"j_bullet3"}, + [4] = {"j_bullet4"}, + [5] = {"j_bullet5"}, + [6] = {"j_bullet6"}, + [7] = {"j_bullet7"}, + [8] = {"j_bullet8"}, + [9] = {"j_bullet9"}, + [10] = {"j_bullet10"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_xmags.lua new file mode 100644 index 0000000..44c97d6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/mags/attachment_vm_pi_mike_xmags.lua @@ -0,0 +1,31 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "20 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_xmags.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, + [1] = {"j_bullet2"}, + [2] = {"j_bullet3"}, + [3] = {"j_bullet4"}, + [4] = {"j_bullet5"}, + [5] = {"j_bullet6"}, + [6] = {"j_bullet7"}, + [7] = {"j_bullet8"}, + [8] = {"j_bullet9"}, + [9] = {"j_bullet10"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 20 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Inspect = weapon.Animations.Inspect_Xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/perks/att_vm_pi_mike_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mike/perks/att_vm_pi_mike_soh.lua new file mode 100644 index 0000000..975930d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/perks/att_vm_pi_mike_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/stocks/attachment_vm_pi_mike_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/mike/stocks/attachment_vm_pi_mike_stockh.lua new file mode 100644 index 0000000..ff4d5dc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/stocks/attachment_vm_pi_mike_stockh.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "PP-Karabin" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_stockh.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Equip = weapon.Animations.Equip_Stock + weapon.ViewModelOffsets.Aim.Pos = weapon.ViewModelOffsets.Aim.Pos + Vector(-0.15, 0, 0) + weapon.Recoil.Shake = weapon.Recoil.Shake * 0.74 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.5 + weapon.Zoom.Blur.EyeFocusDistance = 7 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetViewModel("models/viper/mw/weapons/v_makarov_stock.mdl") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike/stocks/attachment_vm_pi_mike_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/mike/stocks/attachment_vm_pi_mike_stockl.lua new file mode 100644 index 0000000..f9111fa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike/stocks/attachment_vm_pi_mike_stockl.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "PP-Skelet" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike/icon_attachment_pi_mike_stockl.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Equip = weapon.Animations.Equip_Stock + weapon.ViewModelOffsets.Aim.Pos = weapon.ViewModelOffsets.Aim.Pos + Vector(-0.15, 0, 0) + weapon.Recoil.Shake = weapon.Recoil.Shake * 0.74 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.5 + weapon.Zoom.Blur.EyeFocusDistance = 7 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetViewModel("models/viper/mw/weapons/v_makarov_stock.mdl") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlight.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlight.lua new file mode 100644 index 0000000..c42eeb2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlight.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Elite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_barlight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_barlight.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + --weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.97 + --weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.97 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlong.lua new file mode 100644 index 0000000..cb6df90 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlong.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Precision 20.0\"" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_barlong.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.04 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.96 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.96 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlong2.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlong2.lua new file mode 100644 index 0000000..66997e9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barlong2.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Precision 22.0\"" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_barlong2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_barlong2_v2.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.08 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.08 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.89 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barrel.lua new file mode 100644 index 0000000..02978e6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/barrels/attachment_vm_sn_mike14_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_angledgrip01.lua new file mode 100644 index 0000000..da066fc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_angledgrip01.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_angledgrip02.lua new file mode 100644 index 0000000..ccaa71a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_angledgrip02.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_bipodgrip.lua new file mode 100644 index 0000000..b7ac139 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_bipodgrip.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_stubbygrip01.lua new file mode 100644 index 0000000..3e04f62 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_stubbygrip01.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_stubbygrip02.lua new file mode 100644 index 0000000..460820a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_stubbygrip02.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip01.lua new file mode 100644 index 0000000..8fc8906 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip01.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip02.lua new file mode 100644 index 0000000..7cbf63e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip02.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip03.lua new file mode 100644 index 0000000..e103944 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/grips/attachment_vm_sn_mike14_vertgrip03.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser01.lua new file mode 100644 index 0000000..212d612 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser01.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, -1) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser02.lua new file mode 100644 index 0000000..1bb29b1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser02.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, -1) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser03.lua new file mode 100644 index 0000000..8554b63 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/lasers/attachment_vm_sn_mike14_laser03.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, -1) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_mag.lua new file mode 100644 index 0000000..4828d45 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_mag.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_xmags.mdl") + +ATTACHMENT.BulletList = { + [1] = {"j_ammo01_mrkt"}, + [2] = {"j_ammo02_mrkt"}, + [3] = {"j_ammo03_mrkt"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_xmags.lua new file mode 100644 index 0000000..7769e8b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_xmags.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "10 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_mag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_xmags.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_ammo01_mrkt"}, + [2] = {"j_ammo02_mrkt"}, + [3] = {"j_ammo03_mrkt"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.04 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.04 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.1 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.1 + weapon.Primary.ClipSize = 10 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_xmags2.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_xmags2.lua new file mode 100644 index 0000000..eab2313 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/mags/attachment_vm_sn_mike14_xmags2.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "20 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_xmags2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_xmags2.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_ammo01_mrkt"}, + [2] = {"j_ammo02_mrkt"}, + [3] = {"j_ammo03_mrkt"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Xmag2 + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag2 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.89 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 + weapon.Primary.ClipSize = 20 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/perks/attachment_vm_sn_mike14_perk_fullauto.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/perks/attachment_vm_sn_mike14_perk_fullauto.lua new file mode 100644 index 0000000..d55297e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/perks/attachment_vm_sn_mike14_perk_fullauto.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Full Auto" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_hipaim.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Firemodes[1].Name = "Automatic" + weapon.Firemodes[1].OnSet = function(weapon) + weapon.Primary.Automatic = true + weapon.Primary.RPM = 700 + return "Firemode_Auto" + end +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon.Recoil.AdsMultiplier = 0.8 --deliberate, hidden stat +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/perks/attachment_vm_sn_mike14_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/perks/attachment_vm_sn_mike14_perk_soh.lua new file mode 100644 index 0000000..890b876 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/perks/attachment_vm_sn_mike14_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Reload_Xmag2 = weapon.Animations.Reload_Xmag2_Fast + weapon.Animations.Reload_Empty_Xmag2 = weapon.Animations.Reload_Empty_Xmag2_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy.lua new file mode 100644 index 0000000..98f79fb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_vm_stock_light01" +ATTACHMENT.Name = "FSS MK2 Sport Comb" +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 2 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.85 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.85 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_pistolgrip_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy01.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy01.lua new file mode 100644 index 0000000..30a8638 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stock_heavy01" +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 2 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_pistolgrip_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy02.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy02.lua new file mode 100644 index 0000000..3e1efd7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_heavy02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stock_heavy02" +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 2 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_pistolgrip_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_light01.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_light01.lua new file mode 100644 index 0000000..5298f41 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_light01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stock_light01" +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 2 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_pistolgrip_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_medium01.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_medium01.lua new file mode 100644 index 0000000..78a0048 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_medium01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stock_medium01" +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 2 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_pistolgrip_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_no.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_no.lua new file mode 100644 index 0000000..dadf034 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_no.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stock_no" +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 2 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_pistolgrip_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_tactical.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_tactical.lua new file mode 100644 index 0000000..4d4f635 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_tactical.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Precision Comb" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_stock_tactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_stock_tactical.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_v2_alt.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_v2_alt.lua new file mode 100644 index 0000000..72c33f6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_v2_alt.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Lightweight Stock" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_stock_v2.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + weapon.Animations.Sprint_In.Fps = weapon.Animations.Sprint_In.Fps * 1.12 + weapon.Animations.Sprint_Out.Fps = weapon.Animations.Sprint_Out.Fps * 1.12 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_v3.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_v3.lua new file mode 100644 index 0000000..e10ab08 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stock_v3.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stock_heavy01" +ATTACHMENT.Name = "MK2 Ultralight Hollow" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_stock_v2.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 2 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_pistolgrip_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stockcqb_alt.lua b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stockcqb_alt.lua new file mode 100644 index 0000000..72f43c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike14/stock/attachment_vm_sn_mike14_stockcqb_alt.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FFS Raider Chassis Elite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike14/attachment_vm_sn_mike14_stockcqb_alt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike14/icon_attachment_sn_mike14_stockcqb.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 3 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.18 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_pistolgrip_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_barlong.lua new file mode 100644 index 0000000..d309b84 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_barlong.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = ".45 Match Grade" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_barlong.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_barshort.lua new file mode 100644 index 0000000..6f531ca --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_barshort.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = ".45 Compact" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_barshort.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.96 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.96 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.07 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.07 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_v1_slide.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_v1_slide.lua new file mode 100644 index 0000000..7ee1cdb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_v1_slide.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_v1_slide.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_v2_slide.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_v2_slide.lua new file mode 100644 index 0000000..5ad9cc9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/barrels/attachment_vm_pi_mike1911_v2_slide.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "1911 Stalker" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_v2_slide.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_v2_slide.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.02 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.02 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser01.lua new file mode 100644 index 0000000..bf61a20 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser01.lua @@ -0,0 +1 @@ +ATTACHMENT.Base = "att_vm_laser01_pstl" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser02.lua new file mode 100644 index 0000000..ac8b2b5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser02.lua @@ -0,0 +1 @@ +ATTACHMENT.Base = "att_vm_laser02_pstl" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser03.lua new file mode 100644 index 0000000..cf24aa2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/lasers/att_vm_pi_mike1911_laser03.lua @@ -0,0 +1 @@ +ATTACHMENT.Base = "att_vm_laser03_pstl" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_mmags.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_mmags.lua new file mode 100644 index 0000000..70b6025 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_mmags.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "10 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_mmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_mmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 10 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.93 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_v1_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_v1_mag.lua new file mode 100644 index 0000000..6918310 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_v1_mag.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_v1_mag.mdl") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_xmags.lua new file mode 100644 index 0000000..8ebe237 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/mags/attachment_vm_pi_mike1911_xmags.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "15 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_xmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 15 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.88 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.88 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/muzzles/attachment_vm_pi_mike1911_muzzlebrake.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/muzzles/attachment_vm_pi_mike1911_muzzlebrake.lua new file mode 100644 index 0000000..d5177c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/muzzles/attachment_vm_pi_mike1911_muzzlebrake.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Muzzle Brake" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike1911_muzzlebrake.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike1911/icon_attachment_pi_mike1911_muzzlebrake.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.98 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.98 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.98 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.98 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike1911/perks/att_vm_pi_mike1911_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mike1911/perks/att_vm_pi_mike1911_soh.lua new file mode 100644 index 0000000..975930d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike1911/perks/att_vm_pi_mike1911_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barheavy.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barheavy.lua new file mode 100644 index 0000000..e24b68d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barheavy.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "VLK Czar" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_barheavy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_barheavy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Cone.Hip = weapon.Cone.Hip * 0.7 + weapon.Cone.Ads = weapon.Cone.Ads * 0.7 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barlong.lua new file mode 100644 index 0000000..88b423d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barlong.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "16 Warlord" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_barlong.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barrel.lua new file mode 100644 index 0000000..df470c8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barshort.lua new file mode 100644 index 0000000..a0a099b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/barrels/attachment_vm_sh_mike26_barshort.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "6 Revolt" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Cone.Hip = weapon.Cone.Hip * 1.5 + weapon.Cone.Ads = weapon.Cone.Ads * 1.5 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser01.lua new file mode 100644 index 0000000..28ddb01 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser_attach"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser02.lua new file mode 100644 index 0000000..dc3d5e2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser_attach"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser03.lua new file mode 100644 index 0000000..ddc4cd7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/lasers/attachment_vm_sh_mike26_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser_attach"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_mag.lua new file mode 100644 index 0000000..9b18568 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_smag.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_smag.lua new file mode 100644 index 0000000..2a049ad --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_smag.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "4 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_smag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_smag.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.reload_smag + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_smag + weapon.Primary.ClipSize = 4 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Shell = "mwb_shelleject_12g" +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_xmag.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_xmag.lua new file mode 100644 index 0000000..624e5ef --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/mags/attachment_vm_sh_mike26_xmag.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "12 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_xmag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_xmag.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 12 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Reload = weapon.Animations.reload_xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Shell = "mwb_shelleject_12g" +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/perks/attachment_vm_sh_mike26_perk_slamfire.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/perks/attachment_vm_sh_mike26_perk_slamfire.lua new file mode 100644 index 0000000..bbe25ff --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/perks/attachment_vm_sh_mike26_perk_slamfire.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Slamfire" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_slamfire.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + -- weapon.Animations.Rechamber = weapon.Animations.rechamber_slam + -- weapon.Animations.Fire = weapon.Animations.fire_slam + -- weapon.Animations.Fire_Last = weapon.Animations.fire_last_slam + weapon.Primary.RPM = 450 + weapon.Animations.Rechamber.Length = 0.2 + weapon.Cone.Hip = 1.3 + weapon.Cone.Max = 7.5 + + local oldOnSet = weapon.Firemodes[1].OnSet + weapon.Firemodes[1].OnSet = function(wpn) + oldOnSet(wpn) + wpn.Primary.Automatic = true + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/perks/attachment_vm_sh_mike26_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/perks/attachment_vm_sh_mike26_perk_soh.lua new file mode 100644 index 0000000..521e398 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/perks/attachment_vm_sh_mike26_perk_soh.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.reload_smag = weapon.Animations.reload_smag_fast + weapon.Animations.reload_empty_smag = weapon.Animations.reload_smag_empty_fast + weapon.Animations.reload_xmag = weapon.Animations.reload_xmag_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumph.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumph.lua new file mode 100644 index 0000000..0e5648b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumph.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_pump" +ATTACHMENT.Name = "VLK Prime Pump Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_pumph.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_pumph.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 0.8 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumphandle.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumphandle.lua new file mode 100644 index 0000000..f5a7eab --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumphandle.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_pump" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_pumphandle.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumpl.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumpl.lua new file mode 100644 index 0000000..42874fb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/pumps/attachment_vm_sh_mike26_pumpl.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_pump" +ATTACHMENT.Name = "XRK Race Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_pumpl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike26/icon_attachment_sh_mike26_pumpl.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 1.25 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_wood_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike26/stock/attachment_vm_sh_mike26_stock.lua b/lua/weapons/mg_base/modules/attachmentss/mike26/stock/attachment_vm_sh_mike26_stock.lua new file mode 100644 index 0000000..200fba7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike26/stock/attachment_vm_sh_mike26_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike26/attachment_vm_sh_mike26_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel.lua new file mode 100644 index 0000000..6d5fb2d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v15.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v15.lua new file mode 100644 index 0000000..ec0bcef --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v15.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Task Force" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_barrel_v15.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_barrel_v15.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.CosmeticChange = true + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.PrintName = "M4 RIS" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v2.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v2.lua new file mode 100644 index 0000000..0019850 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v2.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Zip-Tie" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_barrel_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_barrel_v2.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.PrintName = "LVOA-C" + weapon.AlternateGrips = true +end diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v3_alt.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v3_alt.lua new file mode 100644 index 0000000..791b311 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v3_alt.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS 14.5 Tac Lite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_barrel_v3_alt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_bar_mike4_v03.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.95 + weapon.Cone.Ads = weapon.Cone.Ads * 0.95 + weapon.Cone.Increase = weapon.Cone.Increase * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v7.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v7.lua new file mode 100644 index 0000000..b9f149a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barrel_v7.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "attachment_vm_ar_mike4_barsil" +ATTACHMENT.Name = "XRK" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_barrel_v7.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_barsil.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barsil.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barsil.lua new file mode 100644 index 0000000..7805019 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_barsil.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS 12.4 Predator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_barsil.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_barsil.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.95 + weapon.Cone.Ads = weapon.Cone.Ads * 0.95 + weapon.Cone.Increase = weapon.Cone.Increase * 0.85 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.05 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.04 + weapon:doSuppressorStats() + weapon.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_custombarrel.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_custombarrel.lua new file mode 100644 index 0000000..5942f1c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_custombarrel.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Corvus Custom Marksman" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_custombarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_barcust_mike4.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.1 + weapon.PrintName = "M16A4" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_mike203barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_mike203barrel.lua new file mode 100644 index 0000000..a87f00b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_mike203barrel.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Stock M16 Grenadier" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_mike203barrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_barmid_mike4.vmt") +ATTACHMENT.ExcludedCategories = {"Lasers"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.1 + weapon.PrintName = "M16A4" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_shortbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_shortbarrel.lua new file mode 100644 index 0000000..d95f1a0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/barrels/attachment_vm_ar_mike4_shortbarrel.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS 11.5" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_shortbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_barshort_mike4.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.AlternateGrips = true + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.13 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.13 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.9 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.9 + weapon.PrintName = "MK18 Mod 0" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_angledgrip01.lua new file mode 100644 index 0000000..3423fa9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_angledgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon.AlternateGrips) then + weapon:SetGripPoseParameter("grip_barshort_gripang_offset") + else + weapon:SetGripPoseParameter("grip_gripang_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_angledgrip02.lua new file mode 100644 index 0000000..9021751 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_angledgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon.AlternateGrips) then + weapon:SetGripPoseParameter("grip_barshort_gripang_offset") + else + weapon:SetGripPoseParameter("grip_gripang_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_bipodgrip.lua new file mode 100644 index 0000000..e70f2fe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_bipodgrip.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Barrels"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon.AlternateGrips) then + weapon:SetGripPoseParameter("grip_barshort_gripvert_offset") + else + weapon:SetGripPoseParameter("grip_gripvert_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_stubbygrip01.lua new file mode 100644 index 0000000..73f240f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_stubbygrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon.AlternateGrips) then + weapon:SetGripPoseParameter("grip_barshort_gripvert_offset") + else + weapon:SetGripPoseParameter("grip_gripvertpro_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_stubbygrip02.lua new file mode 100644 index 0000000..1fb0be5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_stubbygrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon.AlternateGrips) then + weapon:SetGripPoseParameter("grip_barshort_gripvert_offset") + else + weapon:SetGripPoseParameter("grip_gripvertpro_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip01.lua new file mode 100644 index 0000000..8ef9810 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon.AlternateGrips) then + weapon:SetGripPoseParameter("grip_barshort_gripvert_offset") + else + weapon:SetGripPoseParameter("grip_gripvert_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip02.lua new file mode 100644 index 0000000..1458785 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_grip_hide"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon.AlternateGrips) then + weapon:SetGripPoseParameter("grip_barshort_gripvert_offset") + else + weapon:SetGripPoseParameter("grip_gripvert_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip03.lua new file mode 100644 index 0000000..7298a4e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/grips/attachment_vm_ar_mike4_vertgrip03.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_grip_hide"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + if (weapon.AlternateGrips) then + weapon:SetGripPoseParameter("grip_barshort_gripvert_offset") + else + weapon:SetGripPoseParameter("grip_gripvert_offset") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser01.lua new file mode 100644 index 0000000..50a3fba --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser01.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser_hide"] = 1 +} + + +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser02.lua new file mode 100644 index 0000000..b31f178 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser02.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser_hide"] = 1 +} + +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser03.lua new file mode 100644 index 0000000..9f3345e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/lasers/attachment_vm_ar_mike4_laser03.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser_hide"] = 1 +} + +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_calsmg.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_calsmg.lua new file mode 100644 index 0000000..942172e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_calsmg.lua @@ -0,0 +1,35 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "9mm Para 32-Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_calsmg.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_calsmg.vmt") +ATTACHMENT.Bodygroups ={ + ["ejection_cover"] = 1, + ["tag_mag_show"] = 1 +} + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_b_017"}, + [2] = {"j_b_016"}, + [3] = {"j_b_014"}, + [4] = {"j_b_015"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 32 + weapon.Animations.Reload = weapon.Animations.Reload_Calsmg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Calsmg + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 0.7 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 0.8 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.6 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.6 + weapon.Primary.RPM = weapon.Primary.RPM * 1.25 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Cone.Increase = weapon.Cone.Increase * 0.5 + weapon:doCalConversionStats() + weapon.PrintName = "Colt 9mm SMG" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag.lua new file mode 100644 index 0000000..d81bf85 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_mag.mdl") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_b_01"}, + [2] = {"j_b_02"}, + [3] = {"j_b_03"}, + [4] = {"j_b_04"}, + [5] = {"j_b_05"}, + [6] = {"j_b_06"}, + [7] = {"j_b_07"}, + [8] = {"j_b_08"}, + [9] = {"j_b_09"}, + [10] = {"j_b_010"}, + [11] = {"j_b_011"}, + [12] = {"j_b_012"}, + [13] = {"j_b_013"}, + [14] = {"j_b_014"}, + [15] = {"j_b_015"}, + [16] = {"j_b_016"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag_v15.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag_v15.lua new file mode 100644 index 0000000..1a59e08 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag_v15.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "Task Force" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_mag_v15.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_mag.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.CosmeticChange = true + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_b_017"}, + [2] = {"j_b_016"}, + [3] = {"j_b_015"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag_v5.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag_v5.lua new file mode 100644 index 0000000..6c2989c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_mag_v5.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = ".458 SOCOM 10-Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_mag_v5.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_mag_v5.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_b_016"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 10 + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Fast + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.25 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.4 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.4 + weapon.Primary.RPM = weapon.Primary.RPM * 0.75 + weapon.Bullet.HeadshotMultiplier = 2 + weapon:doSocomConversionStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_xmags.lua new file mode 100644 index 0000000..181e682 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_xmags.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_xmags.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_b_017"}, + [2] = {"j_b_016"}, + [3] = {"j_b_015"}, + [4] = {"j_b_014"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_xmags2.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_xmags2.lua new file mode 100644 index 0000000..a32e9aa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/mags/attachment_vm_ar_mike4_xmags2.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "60 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_xmags2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_xmags2.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_b_017"}, + [2] = {"j_b_016"}, + [3] = {"j_b_014"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 60 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/perks/attachment_vm_ar_mike4_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/perks/attachment_vm_ar_mike4_perk_soh.lua new file mode 100644 index 0000000..15839e4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/perks/attachment_vm_ar_mike4_perk_soh.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Calsmg = weapon.Animations.Reload_Calsmg_Fast + weapon.Animations.Reload_Empty_Calsmg = weapon.Animations.Reload_Empty_Calsmg_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver.lua new file mode 100644 index 0000000..6256432 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_receiver.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v15.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v15.lua new file mode 100644 index 0000000..a1568d9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v15.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "Task Force" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_receiver_v15.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_receiver.vmt") +ATTACHMENT.Bodygroups={ + ["receiver"] = 1, + ["tag_sight"] = 2 +} +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v2.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v2.lua new file mode 100644 index 0000000..276c686 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v2.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "Zip-Tie" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_receiver_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_receiver_v7.vmt") +ATTACHMENT.Bodygroups={ + ["receiver"] = 1, + ["tag_sight"] = 2 +} +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v7.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v7.lua new file mode 100644 index 0000000..976b850 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/receiver/attachment_vm_ar_mike4_receiver_v7.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "XRK" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_receiver_v7.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_receiver_v7.vmt") +ATTACHMENT.Bodygroups={ + ["receiver"] = 1, + ["tag_sight"] = 2 +} +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/sights/attachment_vm_ar_mike4_carryhandle.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/sights/attachment_vm_ar_mike4_carryhandle.lua new file mode 100644 index 0000000..028cfa8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/sights/attachment_vm_ar_mike4_carryhandle.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_sight" +ATTACHMENT.Name = "Old Faithful" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_carryhandle.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_carryhandle.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups={ + ["sight"] = 2 +} +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.CosmeticChange = true + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_customstock.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_customstock.lua new file mode 100644 index 0000000..f21492d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_customstock.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "M-16 Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_customstock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_stockcust_mike4.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 0 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.86 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.86 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.86 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.86 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock.lua new file mode 100644 index 0000000..1ef59d3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock_v15.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock_v15.lua new file mode 100644 index 0000000..785b13d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock_v15.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Task Force" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_stock_v15.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_stock_light02_mike4_v19.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock_v2.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock_v2.lua new file mode 100644 index 0000000..9ab4836 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stock_v2.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Zip-Tie" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_stock_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike4/icon_attachment_ar_mike4_stock_v2.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stockno.lua new file mode 100644 index 0000000..e59c39b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike4/stock/attachment_vm_ar_mike4_stockno.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stock_medium01" +ATTACHMENT.Name = "No Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mike4/attachment_vm_ar_mike4_stockno.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_no.vmt") +-- ATTACHMENT.Bodygroups ={ +-- ["tag_stock"] = 1 +-- } + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barauto.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barauto.lua new file mode 100644 index 0000000..22a487d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barauto.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Mk3 Burst Mod" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_barauto.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_barauto.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.RPM = 1000 + weapon.Primary.BurstRounds = 3 + weapon.Primary.BurstDelay = 0.2 + weapon.Firemodes[1].Name = "3rnd Burst" + weapon.Recoil.Shake = weapon.Recoil.Shake * 1.3 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 2.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barlight.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barlight.lua new file mode 100644 index 0000000..5f89dda --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barlight.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Mk1 Competition" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_barlight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_barlight.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Cone.Increase = weapon.Cone.Increase * 0.5 + weapon.Cone.Hip = weapon.Cone.Hip * 0.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barlong.lua new file mode 100644 index 0000000..9b7ff13 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barlong.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Mk1 Extended" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_barlong.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.07 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barrel.lua new file mode 100644 index 0000000..2136e62 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_barrel.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barrel_black.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barrel_black.lua new file mode 100644 index 0000000..d3a2aea --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/barrels/attachment_vm_pi_mike9_barrel_black.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "attachment_vm_pi_mike9_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_barrel_black.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_barrel.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_gripvert.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_gripvert.lua new file mode 100644 index 0000000..5b1b7b9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_gripvert.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Folding Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_gripvert.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_pstlgrpcust_v2.vmt") +ATTACHMENT.ExcludedCategories = {"Lasers"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.93 + if (!weapon:HasAttachment("attachment_vm_pi_mike9_stock")) then + weapon.ViewModelOffsets.Aim.Pos = weapon.ViewModelOffsets.Aim.Pos + Vector(-0.15, 0, 0) + end +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pgrip.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pgrip.lua new file mode 100644 index 0000000..c5feb90 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pgrip.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_pistolgrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_pgrip.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pstlgrpcust.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pstlgrpcust.lua new file mode 100644 index 0000000..e3af277 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pstlgrpcust.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_pistolgrip" +ATTACHMENT.Name = "XRK Pro Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_pstlgrpcust.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_pstlgrpcust.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pstlgrplght.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pstlgrplght.lua new file mode 100644 index 0000000..35febd5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/grips/attachment_vm_pi_mike9_pstlgrplght.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_pistolgrip" +ATTACHMENT.Name = "XRK Speed Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_pstlgrplght.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_pstlgrplght.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser01.lua new file mode 100644 index 0000000..5321524 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser01.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_laser01_pstl" +ATTACHMENT.ExcludedCategories = {"Grips"} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser02.lua new file mode 100644 index 0000000..f3c0df0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser02.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_laser02_pstl" +ATTACHMENT.ExcludedCategories = {"Grips"} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser03.lua new file mode 100644 index 0000000..3ac9e0e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/lasers/att_vm_pi_mike9_laser03.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_laser03_pstl" +ATTACHMENT.ExcludedCategories = {"Grips"} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_mag.lua new file mode 100644 index 0000000..eef9b18 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_mag.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_mag.mdl") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_xmags.lua new file mode 100644 index 0000000..7259bbe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_xmags.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "21 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_xmagslrg.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 21 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_xmagslrg.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_xmagslrg.lua new file mode 100644 index 0000000..5be45ed --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/mags/attachment_vm_pi_mike9_xmagslrg.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "27 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_xmagslrg.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_xmagslrg_v2.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 27 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/muzzles/attachment_vm_pi_mike9_compensator.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/muzzles/attachment_vm_pi_mike9_compensator.lua new file mode 100644 index 0000000..0f3c756 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/muzzles/attachment_vm_pi_mike9_compensator.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Compensator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_compensator.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_compensator_v2.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/perks/att_vm_pi_mike9_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/perks/att_vm_pi_mike9_soh.lua new file mode 100644 index 0000000..975930d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/perks/att_vm_pi_mike9_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/sights/attachment_vm_pi_mike9_scope.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/sights/attachment_vm_pi_mike9_scope.lua new file mode 100644 index 0000000..c02f0f6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/sights/attachment_vm_pi_mike9_scope.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_optic_4x" +ATTACHMENT.Name = "XRK 4.0x Pistol Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_scope.vmt") +ATTACHMENT.Bodygroups = { + ["tag_rail"] = 1, + ["tag_sight"] = 1, + ["sight"] = 1 +} + +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/weapons/m9/weapon_vm_sn_crossbow_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_scope_hide.mdl"), + LensBodygroup = "lens", + FOV = 4, + ParallaxSize = 750, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_aug"), + Size = 800, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mike9/stocks/attachment_vm_pi_mike9_stock.lua b/lua/weapons/mg_base/modules/attachmentss/mike9/stocks/attachment_vm_pi_mike9_stock.lua new file mode 100644 index 0000000..e4577b3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mike9/stocks/attachment_vm_pi_mike9_stock.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Satus CS-3" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_stock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mike9/icon_attachment_pi_mike9_stock.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.5 + weapon.Zoom.Blur.EyeFocusDistance = 11 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetViewModel("models/viper/mw/weapons/v_m9_stock.mdl") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barhvy.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barhvy.lua new file mode 100644 index 0000000..83c097c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barhvy.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "XRK Horizon 23.0\"" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mkilo3/attachment_vm_lm_mkilo3_barhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mkilo3/icon_attachment_lm_mkilo3_barhvy.vmt") +ATTACHMENT.Bodygroups = { + ["tag_barrel_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.DecreaseEveryShot = weapon.Recoil.DecreaseEveryShot * 1.22 + weapon.Cone.DecreaseEveryShot = weapon.Cone.DecreaseEveryShot * 0.95 + weapon.Cone.Hip = weapon.Cone.Hip * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barlong.lua new file mode 100644 index 0000000..44b4808 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barlong.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "XRK Summit 26.8\"" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mkilo3/attachment_vm_lm_mkilo3_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mkilo3/icon_attachment_lm_mkilo3_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.06 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.06 + weapon.Cone.Hip = weapon.Cone.Hip * 0.75 + weapon.Cone.MinDecreaseEveryShot = weapon.Cone.MinDecreaseEveryShot * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barrel.lua new file mode 100644 index 0000000..2354380 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mkilo3/attachment_vm_lm_mkilo3_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barshort.lua new file mode 100644 index 0000000..f0dfbff --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/barrels/attachment_vm_lm_mkilo3_barshort.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Bruen 18.0\" Para" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mkilo3/attachment_vm_lm_mkilo3_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mkilo3/icon_attachment_lm_mkilo3_barshort.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.95 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.95 + weapon.Cone.Hip = weapon.Cone.Hip * 1.2 + weapon.Cone.MinDecreaseEveryShot = weapon.Cone.MinDecreaseEveryShot * 1.1 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.11 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.11 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_angledgrip01.lua new file mode 100644 index 0000000..70bf4c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_angledgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_angledgrip02.lua new file mode 100644 index 0000000..6258a62 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_angledgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_bipod.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_bipod.lua new file mode 100644 index 0000000..b9185aa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_bipod.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Bipod" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mkilo3/attachment_vm_lm_mkilo3_bipod.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mkilo3/icon_attachment_lm_mkilo3_bipod.vmt") +ATTACHMENT.Bipod = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_stubbygrip01.lua new file mode 100644 index 0000000..dc6ce78 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_stubbygrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_stubbygrip02.lua new file mode 100644 index 0000000..a3ece9f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_stubbygrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip01.lua new file mode 100644 index 0000000..824b47a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip02.lua new file mode 100644 index 0000000..23bdbb2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip03.lua new file mode 100644 index 0000000..11f9d54 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/grips/attachment_vm_lm_mkilo3_vertgrip03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser01_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser01_cylinder.lua new file mode 100644 index 0000000..f929c5d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser01_cylinder.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(1, 0, -3) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser02_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser02_cylinder.lua new file mode 100644 index 0000000..3e962ca --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser02_cylinder.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(1, 0, -3) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser03_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser03_cylinder.lua new file mode 100644 index 0000000..2ad349e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/lasers/attachment_vm_lm_mkilo3_laser03_cylinder.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(1, 0, -3) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_mag.lua new file mode 100644 index 0000000..692ff0e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_mag.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mkilo3/attachment_vm_lm_mkilo3_mag.mdl") + +--round, bone name +--im aware its the other way around but the reloads switch mags + + +--Current mag +ATTACHMENT.BulletList = { + [15] = {"j_bullet016"}, + [14] = {"j_bullet015"}, + [13] = {"j_bullet014"}, + [12] = {"j_bullet013"}, + [11] = {"j_bullet012"}, + [10] = {"j_bullet011"}, + [9] = {"j_bullet10"}, + [8] = {"j_bullet09"}, + [7] = {"j_bullet08"}, + [6] = {"j_bullet07"}, + [5] = {"j_bullet06"}, + [4] = {"j_bullet05"}, + [3] = {"j_bullet04"}, + [2] = {"j_bullet03"}, + [1] = {"j_bullet02"}, + [0] = {"j_bullet01"}, +} diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_smags.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_smags.lua new file mode 100644 index 0000000..ef5ccaa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_smags.lua @@ -0,0 +1,37 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "60 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mkilo3/attachment_vm_lm_mkilo3_smags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mkilo3/icon_attachment_lm_mkilo3_smags.vmt") + +--Current mag +-- ATTACHMENT.BulletList = { +-- [1] = {"j_b_08"}, +-- [2] = {"j_b_07"}, +-- [3] = {"j_b_06"}, +-- [4] = {"j_b_05"}, +-- [5] = {"j_b_04"}, +-- [6] = {"j_b_03"}, +-- [7] = {"j_b_02"}, +-- [8] = {"j_b_01"}, +-- } + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 60 + weapon.Animations.Fire = weapon.Animations.Fire_smag + weapon.Animations.Melee = weapon.Animations.Melee_smag + weapon.Animations.Melee_Hit = weapon.Animations.Melee_Hit_smag + weapon.Animations.Idle = weapon.Animations.Idle_smag + weapon.Animations.Jump = weapon.Animations.Jump_smag + weapon.Animations.Land = weapon.Animations.Land_smag + weapon.Animations.Jog_Out = weapon.Animations.Jog_Out_smag + weapon.Animations.Sprint_In = weapon.Animations.Sprint_In_smag + weapon.Animations.Sprint_Out = weapon.Animations.Sprint_Out_smag + weapon.Animations.Ads_In = weapon.Animations.Ads_In_smag + weapon.Animations.Ads_Out = weapon.Animations.Ads_Out_smag + weapon.Animations.Reload = weapon.Animations.Reload_smag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_smag + weapon.Animations.Inspect = weapon.Animations.Inspect_smag + weapon.CanDisableAimReload = false +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_xbelt.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_xbelt.lua new file mode 100644 index 0000000..070ebfc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/mags/attachment_vm_lm_mkilo3_xbelt.lua @@ -0,0 +1,36 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "200 Round Belt" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mkilo3/attachment_vm_lm_mkilo3_xbelt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mkilo3/icon_attachment_lm_mkilo3_xbelt.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [15] = {"j_bullet016"}, + [14] = {"j_bullet015"}, + [13] = {"j_bullet014"}, + [12] = {"j_bullet013"}, + [11] = {"j_bullet012"}, + [10] = {"j_bullet011"}, + [9] = {"j_bullet10"}, + [8] = {"j_bullet09"}, + [7] = {"j_bullet08"}, + [6] = {"j_bullet07"}, + [5] = {"j_bullet06"}, + [4] = {"j_bullet05"}, + [3] = {"j_bullet04"}, + [2] = {"j_bullet03"}, + [1] = {"j_bullet02"}, + [0] = {"j_bullet01"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 200 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.8 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.75 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.75 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/perks/attachment_vm_lm_mkilo3_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/perks/attachment_vm_lm_mkilo3_perk_soh.lua new file mode 100644 index 0000000..6b585d4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/perks/attachment_vm_lm_mkilo3_perk_soh.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_fast + weapon.Animations.Reload_smag = weapon.Animations.Reload_fast_smag + weapon.Animations.Reload_empty_smag = weapon.Animations.Reload_empty_fast_smag +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/stock/attachment_vm_lm_mkilo3_stock.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/stock/attachment_vm_lm_mkilo3_stock.lua new file mode 100644 index 0000000..0e3b2f4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/stock/attachment_vm_lm_mkilo3_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mkilo3/attachment_vm_lm_mkilo3_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/mkilo3/stock/attachment_vm_lm_mkilo3_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/mkilo3/stock/attachment_vm_lm_mkilo3_stockl.lua new file mode 100644 index 0000000..50fd2ff --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mkilo3/stock/attachment_vm_lm_mkilo3_stockl.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Skeleton Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mkilo3/attachment_vm_lm_mkilo3_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mkilo3/icon_attachment_lm_mkilo3_stockl.mdl") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.03 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.03 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Sprint_Out.Fps = weapon.Animations.Sprint_Out.Fps * 1.12 + weapon.Recoil.DecreaseEveryShot = weapon.Recoil.DecreaseEveryShot * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel.lua new file mode 100644 index 0000000..1f5b783 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_barrel.mdl") +--[[ATTACHMENT.Flashlight = { + FlashlightMaterial = Material("effects/flashlight001.vmt"), + Color = Color(255, 255, 255, 255), + Attachment = "flashlight" +} +ATTACHMENT.Laser = {} --needed for base to know its a laser + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:DoLaserRender(weapon, laserModel) +end + +function ATTACHMENT:DrawFlashlight(weapon, model) + local grip = weapon:GetAttachmentInUseByCategory("Grips") + local tacLaser = weapon:HasAttachment("attachment_vm_sm_mpapa5_laser01") + + if ((grip != nil && grip.Index > 1) || tacLaser) then + self:RemoveFlashlightStuffFromModel(model) + return + end + + BaseClass.DrawFlashlight(self, weapon, model) +end]] \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_noflash.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_noflash.lua new file mode 100644 index 0000000..bcb26e8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_noflash.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Default (No flashlight)" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_barrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_railgrip.vmt") +ATTACHMENT.AttachmentBodygroups ={ + ["tag_grip_hide"] = 1 +} +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_suppressor.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_suppressor.lua new file mode 100644 index 0000000..c024556 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_suppressor.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Subsonic Integral Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_barrel_suppressor.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_barrel_suppressor.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 0, + ["tag_grip_attach"] = 0 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.PrintName = "MP5SD" + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.1 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_suppshort.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_suppshort.lua new file mode 100644 index 0000000..9d19d32 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barrel_suppshort.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Monolithic Integral Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_barrel_suppshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_barrel_suppressor_v4.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.06 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.06 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.03 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.03 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barshort.lua new file mode 100644 index 0000000..08a5f04 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_barshort.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS Mini" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_barshort.vmt") +ATTACHMENT.ExcludedAttachments = {"att_vm_silencer01"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.92 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.92 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_railgrip.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_railgrip.lua new file mode 100644 index 0000000..ec33d94 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/barrels/attachment_vm_sm_mpapa5_railgrip.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS Light" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_railgrip.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_railgrip.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_angledgrip01.lua new file mode 100644 index 0000000..052cbdb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_angledgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_angledgrip02.lua new file mode 100644 index 0000000..d008f5d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_angledgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_bipodgrip.lua new file mode 100644 index 0000000..b17ab7c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_bipodgrip.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_stubbygrip01.lua new file mode 100644 index 0000000..7fd2cf1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_stubbygrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_stubbygrip02.lua new file mode 100644 index 0000000..7519dd5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_stubbygrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip01.lua new file mode 100644 index 0000000..d8d5a53 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip02.lua new file mode 100644 index 0000000..d7c2f00 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip03.lua new file mode 100644 index 0000000..9cc91c2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/grips/attachment_vm_sm_mpapa5_vertgrip03.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser01.lua new file mode 100644 index 0000000..039f327 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1, + ["tag_rail"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser02.lua new file mode 100644 index 0000000..8206459 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1, + ["tag_rail"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser03.lua new file mode 100644 index 0000000..3e3e791 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/lasers/attachment_vm_sm_mpapa5_laser03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1, + ["tag_rail"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag.lua new file mode 100644 index 0000000..d18980d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag_xmag.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag_xmag.lua new file mode 100644 index 0000000..3633319 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag_xmag.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "45 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_mag_xmag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_mag_xmag_clip.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 45 + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + --[[weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag]] + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag_xmag2.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag_xmag2.lua new file mode 100644 index 0000000..f37788f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/mags/attachment_vm_sm_mpapa5_mag_xmag2.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "10mm Auto 30-Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_mag_xmag2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_mag_xmag2.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon:doCalConversionStats() + weapon.Animations.Reload = weapon.Animations.Reload + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty + --[[weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag]] + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.19 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.1 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.15 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Bullet.Range = weapon.Bullet.Range * 1.25 + weapon.Cone.Increase = weapon.Cone.Increase * 1.35 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/perks/attachment_vm_sm_mpapa5_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/perks/attachment_vm_sm_mpapa5_perk_soh.lua new file mode 100644 index 0000000..061a245 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/perks/attachment_vm_sm_mpapa5_perk_soh.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.CanChamberRound = true +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/receivers/attachment_vm_sm_mpapa5_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/receivers/attachment_vm_sm_mpapa5_receiver.lua new file mode 100644 index 0000000..b949eea --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/receivers/attachment_vm_sm_mpapa5_receiver.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_receiver.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/receivers/attachment_vm_sm_mpapa5_receiver_v2.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/receivers/attachment_vm_sm_mpapa5_receiver_v2.lua new file mode 100644 index 0000000..9d767e5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/receivers/attachment_vm_sm_mpapa5_receiver_v2.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "Strapped" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_receiver_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_reciever_v2.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock.lua new file mode 100644 index 0000000..1202206 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock_fullstock.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock_fullstock.lua new file mode 100644 index 0000000..f9fd585 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock_fullstock.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Classic Straight-line Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_stock_fullstock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_stock_fullstock.vmt") +ATTACHMENT.AttachmentBodygroups = { + ["tag_stock_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock_nostock.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock_nostock.lua new file mode 100644 index 0000000..a1e7548 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa5/stock/attachment_vm_sm_mpapa5_stock_nostock.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Collapsible" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa5/attachment_vm_sm_mpapa5_stock_nostock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa5/icon_attachment_sm_mpapa5_stock_nostock.vmt") +ATTACHMENT.AttachmentBodygroups = { + ["tag_stock_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlight.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlight.lua new file mode 100644 index 0000000..b35808f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlight.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS SWAT" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_barlight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_barlight.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.98 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.98 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlong.lua new file mode 100644 index 0000000..e1f67a7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlong.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS Recon" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_barlong.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.96 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.96 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.08 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.08 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlong2.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlong2.lua new file mode 100644 index 0000000..ae86073 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barlong2.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS Strike" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_barlong2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_barlong2.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.06 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.06 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barrel.lua new file mode 100644 index 0000000..c9699cd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/barrels/attachment_vm_sm_mpapa7_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_barrel.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_angledgrip01.lua new file mode 100644 index 0000000..052cbdb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_angledgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_angledgrip02.lua new file mode 100644 index 0000000..d008f5d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_angledgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_bipodgrip.lua new file mode 100644 index 0000000..b17ab7c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_bipodgrip.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_stubbygrip01.lua new file mode 100644 index 0000000..7fd2cf1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_stubbygrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_stubbygrip02.lua new file mode 100644 index 0000000..7519dd5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_stubbygrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip01.lua new file mode 100644 index 0000000..d8d5a53 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip02.lua new file mode 100644 index 0000000..d7c2f00 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip03.lua new file mode 100644 index 0000000..9cc91c2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/attachment_vm_sm_mpapa7_vertgrip03.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/fss_folding_grip.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/fss_folding_grip.lua new file mode 100644 index 0000000..b8beb01 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/grips/fss_folding_grip.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Name = "FSS Folding Grip" +ATTACHMENT.Model = Model("models/jacob_lhh3_ports/modernwarfare2019/weapons/mp7/attachments/fss_folding_grip.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/augolf/icon_attachment_sm_augolf_vertgrip.vmt") +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} +ATTACHMENT.VElement = { + Bone = "tag_grip_attach", + Position = Vector(3, 0, 0.3), + Angles = Angle(-90, 0, 0), + Offsets = { + ["attachment_vm_sm_mpapa7_receiver_v2"] = {Vector(0, 0, -0.3), Angle()} + } +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser01.lua new file mode 100644 index 0000000..039f327 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1, + ["tag_rail"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser02.lua new file mode 100644 index 0000000..8206459 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1, + ["tag_rail"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser03.lua new file mode 100644 index 0000000..3e3e791 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/lasers/attachment_vm_sm_mpapa7_laser03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1, + ["tag_rail"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_mag.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_mag.lua new file mode 100644 index 0000000..11bc557 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_mmags.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_mmags.lua new file mode 100644 index 0000000..6d9a2f6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_mmags.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_mmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_mmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_xmags.lua new file mode 100644 index 0000000..5498fe4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/mags/attachment_vm_sm_mpapa7_xmags.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "60 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_xmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 60 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag2 + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag2 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.85 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/perks/attachment_vm_sm_mpapa7_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/perks/attachment_vm_sm_mpapa7_perk_soh.lua new file mode 100644 index 0000000..a92a4d6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/perks/attachment_vm_sm_mpapa7_perk_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Empty_Scope = weapon.Animations.Reload_Empty_Fast_Scope + weapon.Animations.Reload_Xmag2 = weapon.Animations.Reload_Xmag2_Fast + weapon.Animations.Reload_Empty_Xmag2 = weapon.Animations.Reload_Empty_Xmag2_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/receivers/attachment_vm_sm_mpapa7_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/receivers/attachment_vm_sm_mpapa7_receiver.lua new file mode 100644 index 0000000..bfb7223 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/receivers/attachment_vm_sm_mpapa7_receiver.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_receiver.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/receivers/attachment_vm_sm_mpapa7_receiver_v2.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/receivers/attachment_vm_sm_mpapa7_receiver_v2.lua new file mode 100644 index 0000000..83b3d12 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/receivers/attachment_vm_sm_mpapa7_receiver_v2.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "Piercer" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_receiver_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_receiver_v2.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/stock/attachment_vm_sm_mpapa7_stock.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/stock/attachment_vm_sm_mpapa7_stock.lua new file mode 100644 index 0000000..8a37f3b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/stock/attachment_vm_sm_mpapa7_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/mpapa7/attachment_vm_sm_mpapa7_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/mpapa7/stock/xrk_retractable_stock.lua b/lua/weapons/mg_base/modules/attachmentss/mpapa7/stock/xrk_retractable_stock.lua new file mode 100644 index 0000000..198ce15 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/mpapa7/stock/xrk_retractable_stock.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "XRK Retractable Stock" +ATTACHMENT.Model = Model("models/jacob_lhh3_ports/modernwarfare2019/weapons/mp7/attachments/xrk_retractable_stock.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/mpapa7/icon_attachment_sm_mpapa7_stock_v2.vmt") +ATTACHMENT.VElement = { + Bone = "tag_stock_attach", + Position = Vector(-13, 0, -1), + Angles = Angle(-90, 0, 0), +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.06 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.06 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.09 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher01.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher01.lua new file mode 100644 index 0000000..bc657bb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher01.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Breacher Device" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_muzzlemelee01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_muzzlemelee01.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Melee_Hit.Damage = weapon.Animations.Melee_Hit.Damage * 1.25 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher02.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher02.lua new file mode 100644 index 0000000..cbe6c02 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher02.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Breacher Device" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_muzzlemelee02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_muzzlemelee02.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Animations.Melee_Hit.Damage = weapon.Animations.Melee_Hit.Damage * 1.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher02_shgn.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher02_shgn.lua new file mode 100644 index 0000000..fe3c0d2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/breacher/att_vm_breacher02_shgn.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_breacher02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/shotgun/attachment_vm_muzzlemelee_shgn01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_muzzlemelee_shgn01.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator01.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator01.lua new file mode 100644 index 0000000..307a4c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator01.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Compensator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_compensator01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_compensator01.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_compensator" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator01_pstl.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator01_pstl.lua new file mode 100644 index 0000000..60482c2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator01_pstl.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_compensator01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_compensator_pstl01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_compensator_pstl01.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator02.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator02.lua new file mode 100644 index 0000000..f1ee730 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator02.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Compensator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_compensator02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_compensator02.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + weapon.Cone.Increase = weapon.Cone.Increase * 0.75 + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_compensator" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator_shgn01.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator_shgn01.lua new file mode 100644 index 0000000..8128a12 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator_shgn01.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Choke" +ATTACHMENT.Model = Model("models/viper/mw/attachments/shotgun/attachment_vm_sh_romeo870_choke.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_sh_romeo870_choke.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Cone.Hip = weapon.Cone.Hip * 0.88 + weapon.Cone.Ads = weapon.Cone.Ads * 0.88 + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_compensator" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator_shgn02.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator_shgn02.lua new file mode 100644 index 0000000..9c37cca --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/compensator/att_vm_compensator_shgn02.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Compensator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/shotgun//attachment_vm_compensator_shgn01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_compensator_shgn01.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Cone.Hip = weapon.Cone.Hip * 0.76 + weapon.Cone.Ads = weapon.Cone.Ads * 0.76 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_compensator" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01.lua new file mode 100644 index 0000000..2c9f228 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Flash Guard" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_flashhider01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_flashhider01.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_flashhider" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01_pstl.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01_pstl.lua new file mode 100644 index 0000000..85277b9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01_pstl.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_flashhider01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_flashhider_psl01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_flashhider_pstl01.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01_shgn.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01_shgn.lua new file mode 100644 index 0000000..f681bdd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider01_shgn.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_flashhider01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/shotgun//attachment_vm_flashhider_shtgn01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_flashhider_shtgn01.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider02.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider02.lua new file mode 100644 index 0000000..0d4a898 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider02.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Flash Guard" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_flashhider02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_flashhider02.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_flashhider" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider03.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider03.lua new file mode 100644 index 0000000..ae08d5d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider03.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Flash Guard" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_flashhider03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_flashhider03.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_flashhider" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider04.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider04.lua new file mode 100644 index 0000000..ea30118 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/flashhider/att_vm_flashhider04.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Flash Guard" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_flashhider05.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_flashhider05.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_flashhider" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake01.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake01.lua new file mode 100644 index 0000000..0de9fb1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake01.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Muzzle Brake" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_muzzlebrake01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_muzzlebrake01.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.98 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.98 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.98 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.98 + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_muzzlebreak" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake01_pstl.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake01_pstl.lua new file mode 100644 index 0000000..67a8c0a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake01_pstl.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_muzzlebrake01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_muzzlebrake_pstl01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_muzzlebrake_pstl01.vmt") diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake02.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake02.lua new file mode 100644 index 0000000..d9cf485 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake02.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Muzzle Brake" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_muzzlebrake02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_muzzlebrake02.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.98 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.98 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.97 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.97 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.97 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.97 + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_muzzlebreak" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake03.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake03.lua new file mode 100644 index 0000000..ed702cb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake03.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Muzzle Brake" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_muzzlebrake03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_muzzlebrake03.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.96 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.96 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.96 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.96 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.96 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.96 + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_muzzlebreak" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake04.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake04.lua new file mode 100644 index 0000000..09d7fe9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake04.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Muzzle Brake" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_muzzlebrake04.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_muzzlebrake04.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.94 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.94 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.94 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_muzzlebreak" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake_shgn01.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake_shgn01.lua new file mode 100644 index 0000000..57517ce --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/muzzlebrake/att_vm_muzzlebrake_shgn01.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "Muzzle Brake" +ATTACHMENT.Model = Model("models/viper/mw/attachments/shotgun//attachment_vm_muzzlebrake_shgn01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_muzzlebrake_shgn01.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + weapon.ParticleEffects.MuzzleFlash = "ac_muzzle_muzzlebreak" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_oil_filter_suppressor.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_oil_filter_suppressor.lua new file mode 100644 index 0000000..7ee2b03 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_oil_filter_suppressor.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_suppressor" +ATTACHMENT.Name = "Oil Can Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_oil_filter_suppressor.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_oil_filter_suppressor.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer01.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer01.lua new file mode 100644 index 0000000..8982c86 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer01.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_suppressor" +ATTACHMENT.Name = "Lightweight Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_silencer_east01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_silencer_east01.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.02 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.02 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer01_pstl.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer01_pstl.lua new file mode 100644 index 0000000..5ed436d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer01_pstl.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_silencer01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_silencerpstl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_silencerpstl.vmt") diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer02.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer02.lua new file mode 100644 index 0000000..2bc8876 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer02.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_suppressor" +ATTACHMENT.Name = "Tactical Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_silencer02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_silencer02.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.99 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.98 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.04 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer02_pstl.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer02_pstl.lua new file mode 100644 index 0000000..c0e4e36 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer02_pstl.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_silencer02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_silencerpstl03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_silencerpstl03.vmt") diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer03.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer03.lua new file mode 100644 index 0000000..c15e6f9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer03.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_suppressor" +ATTACHMENT.Name = "Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_silencer03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_silencer03.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.98 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.98 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer04.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer04.lua new file mode 100644 index 0000000..1b54624 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer04.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_suppressor" +ATTACHMENT.Name = "Monolithic Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_silencer04.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_silencer04.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.07 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer04_pstl.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer04_pstl.lua new file mode 100644 index 0000000..9a28922 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer04_pstl.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_silencer04" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_silencer_pstl_02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_silencer_pstl_02.vmt") diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer05.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer05.lua new file mode 100644 index 0000000..a59f2bf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer05.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_vm_silencer02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_silencer_east02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_silencer_east02.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer06.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer06.lua new file mode 100644 index 0000000..7250b6f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/att_vm_silencer06.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_vm_silencer03" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_silencer_east03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/muzzle/icon_attachment_silencer_east03.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} +ATTACHMENT.Bodygroups = { + ["tag_tip"] = 1, + ["muzzle"] = 1, + ["tip"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_silencer02.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_silencer02.lua new file mode 100644 index 0000000..00253e7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_silencer02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer02" +ATTACHMENT.Name = "Monolithic Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_silencer02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_silencer02.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_silencer03.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_silencer03.lua new file mode 100644 index 0000000..f01d325 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_silencer03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer03" +ATTACHMENT.Name = "Tactical Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_silencer03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_silencer03.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_suppressor.lua b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_suppressor.lua new file mode 100644 index 0000000..2d5cffc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/muzzles/suppressors/attachment_vm_sh_oscar12_suppressor.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer01" +ATTACHMENT.Name = "Lightweight Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_suppressor.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_suppressor.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrel.lua new file mode 100644 index 0000000..87614d8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrellong.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrellong.lua new file mode 100644 index 0000000..4be6087 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrellong.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Impaler" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_barrellong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_barrellong.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.8 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Cone.Hip = weapon.Cone.Hip * 0.85 + weapon.Cone.Ads = weapon.Cone.Ads * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrelmid.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrelmid.lua new file mode 100644 index 0000000..5ce4639 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrelmid.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Wideshot" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_barrelmid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_barrelmid.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrelshort.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrelshort.lua new file mode 100644 index 0000000..3e1803c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/barrels/attachment_vm_sh_oscar12_barrelshort.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Precision" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_barrelshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_barrelmid.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_foreendlight.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_foreendlight.lua new file mode 100644 index 0000000..5dc43f8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_foreendlight.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_forend" +ATTACHMENT.Name = "FORGE TAC Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_foreendlight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_foreendlight.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_forendstable.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_forendstable.lua new file mode 100644 index 0000000..b4179fc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_forendstable.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_forend" +ATTACHMENT.Name = "FORGE TAC Steady Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_forendstable.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_forendstable.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_forendtactical.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_forendtactical.lua new file mode 100644 index 0000000..d69de27 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_forendtactical.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_forend" +ATTACHMENT.Name = "FORGE TAC Commander" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_forendtactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_forendtactical.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.05 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.05 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_guard.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_guard.lua new file mode 100644 index 0000000..482ac89 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/forend/attachment_vm_sh_oscar12_guard.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_forend" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_guard.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_none.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_none.lua new file mode 100644 index 0000000..82443b2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_none.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "No Grip" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_hand.vmt") +ATTACHMENT.CosmeticChange = true + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Melee = weapon.Animations.Melee_Queer + weapon.Animations.Melee_Hit = weapon.Animations.Melee_Hit_Queer +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_queer_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegrip.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegrip.lua new file mode 100644 index 0000000..5655b97 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegrip.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_sidegrip.mdl") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegrip_long.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegrip_long.lua new file mode 100644 index 0000000..4dc726f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegrip_long.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Merc Foregrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_sidegrip_long.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_sidegrip_long.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegripang.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegripang.lua new file mode 100644 index 0000000..6a7676e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/grips/attachment_vm_sh_oscar12_sidegripang.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Commando Foregrip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_sidegripang.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_sidegripang.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.11 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.13 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.13 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser01.lua new file mode 100644 index 0000000..ec2e5bf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser02.lua new file mode 100644 index 0000000..2a6b1ca --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser03.lua new file mode 100644 index 0000000..819d324 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/lasers/attachment_vm_sh_oscar12_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_drummag.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_drummag.lua new file mode 100644 index 0000000..9002400 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_drummag.lua @@ -0,0 +1,53 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "26 Round Drum Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_drummag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_drummag.vmt") +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sh_oscar12_none"} + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_shell1"}, + [2] = {"j_shell2"}, + [3] = {"j_shell3"}, + [4] = {"j_shell4"}, + [5] = {"j_drumshell5"}, + [6] = {"j_drumshell6"}, + [7] = {"j_drumshell7"}, + [8] = {"j_drumshell8"}, + [9] = {"j_drumshell9"}, + [10] = {"j_drumshell10"}, + [11] = {"j_drumshell11"}, + [12] = {"j_drumshell12"}, + [13] = {"j_drumshell13"}, + [14] = {"j_drumshell14"}, + [15] = {"j_drumshell15"}, + [16] = {"j_drumshell16"}, + [17] = {"j_drumshell17"}, + [18] = {"j_drumshell18"}, + [19] = {"j_drumshell19"}, + [20] = {"j_drumshell20"}, + [21] = {"j_drumshell21"}, + [22] = {"j_drumshell22"}, + [23] = {"j_drumshell23"}, + [24] = {"j_drumshell24"}, + [25] = {"j_drumshell25"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 26 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.7 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.7 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.7 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.7 + weapon.Animations.Reload = weapon.Animations.reload_drum + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_drum + weapon.Animations.Equip = weapon.Animations.Equip_Drum + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.8 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.8 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_mag.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_mag.lua new file mode 100644 index 0000000..30d3914 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_mag.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_mag.mdl") + +ATTACHMENT.BulletList = { + [1] = {"j_shell01"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_xmags.lua new file mode 100644 index 0000000..122cf1b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/mags/attachment_vm_sh_oscar12_xmags.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "12 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_xmags.vmt") +ATTACHMENT.BulletList = { + [1] = {"j_shell01"}, +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 12 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Equip = weapon.Animations.Equip_Drum + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/perks/attachment_vm_sh_oscar12_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/perks/attachment_vm_sh_oscar12_perk_soh.lua new file mode 100644 index 0000000..6b72d8e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/perks/attachment_vm_sh_oscar12_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.reload_drum = weapon.Animations.reload_drum_fast + weapon.Animations.reload_empty_drum = weapon.Animations.reload_drum_empty_fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stock.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stock.lua new file mode 100644 index 0000000..411fc70 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stockhvy.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stockhvy.lua new file mode 100644 index 0000000..dfdddb3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stockhvy.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Hunter" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_stockhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_stockhvy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.91 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.91 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.91 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.91 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.87 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.87 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stocklgt.lua b/lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stocklgt.lua new file mode 100644 index 0000000..b11c294 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/oscar12/stock/attachment_vm_sh_oscar12_stocklgt.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC Dart" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_stocklgt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_stocklgt.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.13 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.13 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.13 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.13 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_barrel_ext.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_barrel_ext.lua new file mode 100644 index 0000000..e8db886 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_barrel_ext.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "XRK V Extended" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_barrel_ext.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_barrel_ext.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide.lua new file mode 100644 index 0000000..dbe698c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_slide.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_slide.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide_black.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide_black.lua new file mode 100644 index 0000000..6da787c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide_black.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "attachment_vm_pi_papa320_slide" +ATTACHMENT.Name = "XRK L Super" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_slide_black.mdl") +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide_vented.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide_vented.lua new file mode 100644 index 0000000..be5c593 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/barrels/attachment_vm_pi_papa320_slide_vented.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "A9-16 Lightweight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_slide_vented.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_slide.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.02 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.02 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser01.lua new file mode 100644 index 0000000..bf61a20 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser01.lua @@ -0,0 +1 @@ +ATTACHMENT.Base = "att_vm_laser01_pstl" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser02.lua new file mode 100644 index 0000000..ac8b2b5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser02.lua @@ -0,0 +1 @@ +ATTACHMENT.Base = "att_vm_laser02_pstl" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser03.lua new file mode 100644 index 0000000..cf24aa2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/att_vm_pi_papa320_laser03.lua @@ -0,0 +1 @@ +ATTACHMENT.Base = "att_vm_laser03_pstl" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/attachment_vm_laser_pstl_shoothouse.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/attachment_vm_laser_pstl_shoothouse.lua new file mode 100644 index 0000000..7f9983a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/lasers/attachment_vm_laser_pstl_shoothouse.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_vm_laser01_pstl" +ATTACHMENT.Name = ".red Swift" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_laser_pstl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/laser/icon_attachment_laser_pstl.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_LEGENDARY +ATTACHMENT.Laser = { + BeamMaterial = Material("mw19_laserbeam.vmt"), + DotMaterial = Material("mg/sprites/shoothouselaser.vmt"), + BeamSize = 15, + BeamWidth = 1, + DotSize = 2, + Color = Color(255, 0, 255, 255), + Attachment = "laser" +} +ATTACHMENT.Flashlight = { + FlashlightMaterial = Material("effects/flashlight001.vmt"), + Color = Color(255, 255, 255, 255), + Attachment = "laser" +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + weapon.Cone.Increase = weapon.Cone.Increase * 0.9 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag.lua new file mode 100644 index 0000000..344e3c4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_mag.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag_ext.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag_ext.lua new file mode 100644 index 0000000..ba0b2cd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag_ext.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "21 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_mag_ext.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_mag_ext.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 21 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.93 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag_ext2.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag_ext2.lua new file mode 100644 index 0000000..c90a521 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/mags/attachment_vm_pi_papa320_mag_ext2.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "32 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_mag_ext2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/icon_attachment_pi_papa320_mag_ext2.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 32 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_XmagLrg + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.88 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.88 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/muzzles/attachment_vm_pi_papa320_silencer.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/muzzles/attachment_vm_pi_papa320_silencer.lua new file mode 100644 index 0000000..e212b98 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/muzzles/attachment_vm_pi_papa320_silencer.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_silencer01_pstl" +ATTACHMENT.Name = "Osprey Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_pi_papa320_silencer.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/icon_attachment_sh_oscar12_suppressor.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa320/perks/att_vm_pi_papa320_soh.lua b/lua/weapons/mg_base/modules/attachmentss/papa320/perks/att_vm_pi_papa320_soh.lua new file mode 100644 index 0000000..975930d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa320/perks/att_vm_pi_papa320_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_barrel.lua new file mode 100644 index 0000000..f35bf67 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_barrel.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_custombarrel.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_custombarrel.lua new file mode 100644 index 0000000..3147589 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_custombarrel.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Retribution" +ATTACHMENT.Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_custombarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_custombarrel.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.15 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.94 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.94 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_longbarrel.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_longbarrel.lua new file mode 100644 index 0000000..5e8df5c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/barrels/attachment_vm_sm_papa90_longbarrel.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS 10.6 Pro" +ATTACHMENT.Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_longbarrel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_longbarrel.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser01.lua new file mode 100644 index 0000000..43adf9c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1, + ["tag_rail"] = 1 +} +ATTACHMENT.VElement = { + Bone = "tag_laser_attach", + Position = Vector(0, 0, 0), + Angles = Angle(0, 0, -180), +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser02.lua new file mode 100644 index 0000000..bb49755 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1, + ["tag_rail"] = 1 +} +ATTACHMENT.VElement = { + Bone = "tag_laser_attach", + Position = Vector(0, 0, 0), + Angles = Angle(0, 0, -180), +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser03.lua new file mode 100644 index 0000000..fdcf068 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/lasers/attachment_vm_sm_papa90_laser03.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1, + ["tag_rail"] = 1 +} +ATTACHMENT.VElement = { + Bone = "tag_laser_attach", + Position = Vector(0, 0, 0), + Angles = Angle(0, 0, -180), +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/mags/attachment_vm_sm_papa90_mag.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/mags/attachment_vm_sm_papa90_mag.lua new file mode 100644 index 0000000..b707b3e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/mags/attachment_vm_sm_papa90_mag.lua @@ -0,0 +1,67 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_mag.mdl") + + +--Current mag +ATTACHMENT.BulletList = { + [1] = {"j_bullet_01"}, + [2] = {"j_bullet_02"}, + [3] = {"j_bullet_03"}, + [4] = {"j_bullet_04"}, + [5] = {"j_bullet_05"}, + [6] = {"j_bullet_06"}, + [8] = {"j_bullets_01"}, + [10] = {"j_bullets_02"}, + [12] = {"j_bullets_03"}, + [14] = {"j_bullets_04"}, + [16] = {"j_bullets_05"}, + [18] = {"j_bullets_06"}, + [20] = {"j_bullets_07"}, + [22] = {"j_bullets_08"}, + [24] = {"j_bullets_09"}, + [26] = {"j_bullets_010"}, + [28] = {"j_bullets_011"}, + [30] = {"j_bullets_012"}, + [32] = {"j_bullets_013"}, + [34] = {"j_bullets_014"}, + [36] = {"j_bullets_015"}, + [38] = {"j_bullets_016"}, + [40] = {"j_bullets_017"}, + [42] = {"j_bullets_018"}, + [44] = {"j_bullets_019"}, + [46] = {"j_bullets_020"}, + [48] = {"j_bullets_021"}, + [50] = {"j_bullets_022"} +} + +--New mag +-- ATTACHMENT.ReserveBulletList = { +-- [1] = {"j_bullet_01"}, +-- [2] = {"j_bullet_02"}, +-- [3] = {"j_bullet_03"}, +-- [4] = {"j_bullet_04"}, +-- [5] = {"j_bullet_05"}, +-- [6] = {"j_bullet_06"}, +-- [8] = {"j_bullets_01"}, +-- [10] = {"j_bullets_02"}, +-- [12] = {"j_bullets_03"}, +-- [14] = {"j_bullets_04"}, +-- [16] = {"j_bullets_05"}, +-- [18] = {"j_bullets_06"}, +-- [20] = {"j_bullets_07"}, +-- [22] = {"j_bullets_08"}, +-- [24] = {"j_bullets_09"}, +-- [26] = {"j_bullets_010"}, +-- [28] = {"j_bullets_011"}, +-- [30] = {"j_bullets_012"}, +-- [32] = {"j_bullets_013"}, +-- [34] = {"j_bullets_014"}, +-- [36] = {"j_bullets_015"}, +-- [38] = {"j_bullets_016"}, +-- [40] = {"j_bullets_017"}, +-- [42] = {"j_bullets_018"}, +-- [44] = {"j_bullets_019"}, +-- [46] = {"j_bullets_020"}, +-- [48] = {"j_bullets_021"}, +-- [50] = {"j_bullets_022"} +-- } \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/mags/attachment_vm_sm_papa90_mag_v4.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/mags/attachment_vm_sm_papa90_mag_v4.lua new file mode 100644 index 0000000..3c7455b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/mags/attachment_vm_sm_papa90_mag_v4.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "attachment_vm_sm_papa90_mag" +ATTACHMENT.Name = "Area 51" +ATTACHMENT.Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_mag_v4.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_mag_v4.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/perks/attachment_vm_sm_papa90_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/perks/attachment_vm_sm_papa90_perk_soh.lua new file mode 100644 index 0000000..ab376bf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/perks/attachment_vm_sm_papa90_perk_soh.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/receivers/attachment_vm_sm_papa90_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/receivers/attachment_vm_sm_papa90_receiver.lua new file mode 100644 index 0000000..02bcf51 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/receivers/attachment_vm_sm_papa90_receiver.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_receiver.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/sights/attachment_vm_sm_papa90_reddotscope.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/sights/attachment_vm_sm_papa90_reddotscope.lua new file mode 100644 index 0000000..2ee96ac --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/sights/attachment_vm_sm_papa90_reddotscope.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_sight_reticle" +ATTACHMENT.Name = "FSS Ring Sight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_reddotscope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_reddotscope.vmt") +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/aimpoint_reticle.vmt"), + Size = 140, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} + +ATTACHMENT.Bodygroups = { + ["tag_rail_hide"] = 1, + ["tag_sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["shroud_hide"] = 1, + ["tag_rail_hide"] = 1, + ["tag_sight"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stock_tactical.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stock_tactical.lua new file mode 100644 index 0000000..f3122ff --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stock_tactical.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC CQB Comb" +ATTACHMENT.Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_stock_tactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_stock_tactical.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.91 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.91 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.91 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.91 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stockl.lua new file mode 100644 index 0000000..6fbaf3f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stockl.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Fly Strap" +ATTACHMENT.Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_stockl.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.91 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.91 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.91 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.91 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stocks.lua new file mode 100644 index 0000000..f254afa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/papa90/stock/attachment_vm_sm_papa90_stocks.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Heavy Stock Pro" +ATTACHMENT.Model = Model("models/viper/mw/attachments/papa90/attachment_vm_sm_papa90_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/papa90/icon_attachment_sm_papa90_stocks.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.8 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_bolt.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_bolt.lua new file mode 100644 index 0000000..db41a6a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_bolt.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Bolthead" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_bolt.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + if (weapon.Animations.Rechamber != nil) then + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 1.5 + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_fastswap.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_fastswap.lua new file mode 100644 index 0000000..1d28040 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_fastswap.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Quickdraw" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_fastswap.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.5 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_fmj.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_fmj.lua new file mode 100644 index 0000000..e14b0e0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_fmj.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "FMJ" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_fmj.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.1 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.1 + if (weapon.Bullet.Penetration != nil) then + weapon.Bullet.Penetration.MaxCount = weapon.Bullet.Penetration.MaxCount + 1 + weapon.Bullet.Penetration.Thickness = weapon.Bullet.Penetration.Thickness * 1.2 + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_headshot.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_headshot.lua new file mode 100644 index 0000000..09b545f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_headshot.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Soft-point Rounds" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_flinch.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + if (weapon.Bullet != nil && weapon.Bullet.HeadshotMultiplier != nil) then + weapon.Bullet.HeadshotMultiplier = weapon.Bullet.HeadshotMultiplier * 1.35 + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_hip.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_hip.lua new file mode 100644 index 0000000..1f7ce1f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_hip.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Full Choke" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_range.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Cone.Hip = weapon.Cone.Hip * 0.65 + weapon.Cone.Ads = weapon.Cone.Ads * 0.65 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_launch.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_launch.lua new file mode 100644 index 0000000..d166dea --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_launch.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Hard Launch" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_launch.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Projectile.Speed = weapon.Projectile.Speed * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_launch_dmg.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_launch_dmg.lua new file mode 100644 index 0000000..d896310 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_launch_dmg.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Crowd Control" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_cc.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Explosive.BlastRadius = weapon.Explosive.BlastRadius * 1.25 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_nodrop.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_nodrop.lua new file mode 100644 index 0000000..f1a1bc6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_nodrop.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Rifled Barrel" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_recon.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + if (weapon.Projectile != nil) then + weapon.Projectile.Gravity = 0 + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_ricochet.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_ricochet.lua new file mode 100644 index 0000000..39be806 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_ricochet.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Ricochet" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_ricochet.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + if (weapon.Bullet != nil) then + weapon.Bullet.Ricochet = true + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_rof.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_rof.lua new file mode 100644 index 0000000..048639a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_rof.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Short-stroke" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_rof.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Primary.RPM = weapon.Primary.RPM + 150 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_scopesway.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_scopesway.lua new file mode 100644 index 0000000..e5e410b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_scopesway.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Diazepam" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_adsidle.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Zoom.BreathingMultiplier = 0.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_soh.lua new file mode 100644 index 0000000..5922cb8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_soh.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Sleight of Hand" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_fastreload.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_steadywalk.lua b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_steadywalk.lua new file mode 100644 index 0000000..ed1884c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/perks/att_perk_steadywalk.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Balanced Stance" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_adsmove.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Zoom.MovementMultiplier = 0.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel.lua new file mode 100644 index 0000000..a96d89a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/pkilo/attachment_vm_lm_pkilo_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_heavy.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_heavy.lua new file mode 100644 index 0000000..8a1de3a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_heavy.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "25.9\" Heavy Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/pkilo/attachment_vm_lm_pkilo_barrel_heavy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/pkilo/icon_attachment_lm_pkilo_barrel_heavy.vmt") +ATTACHMENT.Bodygroups = { + ["tag_barrel_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.85 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.86 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.86 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_long.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_long.lua new file mode 100644 index 0000000..3c7a714 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_long.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "26.9\" Extended Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/pkilo/attachment_vm_lm_pkilo_barrel_long.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/pkilo/icon_attachment_lm_pkilo_barrel_long.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.85 + weapon.Cone.MinDecreaseEveryShot = weapon.Cone.MinDecreaseEveryShot * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.09 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.09 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.86 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.86 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_short.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_short.lua new file mode 100644 index 0000000..da802cb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/barrels/attachment_vm_lm_pkilo_barrel_short.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "18.2\" Compact Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/pkilo/attachment_vm_lm_pkilo_barrel_short.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/pkilo/icon_attachment_lm_pkilo_barrel_short.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 1.18 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.94 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.12 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.12 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_angledgrip01.lua new file mode 100644 index 0000000..70bf4c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_angledgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_angledgrip02.lua new file mode 100644 index 0000000..6258a62 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_angledgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_bipod.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_bipod.lua new file mode 100644 index 0000000..244f102 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_bipod.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Bipod" +ATTACHMENT.Model = Model("models/viper/mw/attachments/pkilo/attachment_vm_lm_pkilo_bipod.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/pkilo/icon_attachment_lm_pkilo_bipod.vmt") +ATTACHMENT.Bipod = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_stubbygrip01.lua new file mode 100644 index 0000000..dc6ce78 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_stubbygrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_stubbygrip02.lua new file mode 100644 index 0000000..a3ece9f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_stubbygrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip01.lua new file mode 100644 index 0000000..824b47a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip02.lua new file mode 100644 index 0000000..23bdbb2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip03.lua new file mode 100644 index 0000000..11f9d54 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/grips/attachment_vm_lm_pkilo_vertgrip03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser01_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser01_cylinder.lua new file mode 100644 index 0000000..153062b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser01_cylinder.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 5, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser02_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser02_cylinder.lua new file mode 100644 index 0000000..4827647 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser02_cylinder.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 5, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser03_cylinder.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser03_cylinder.lua new file mode 100644 index 0000000..8a16a97 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/lasers/attachment_vm_lm_pkilo_laser03_cylinder.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 5, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag.lua new file mode 100644 index 0000000..4d380d7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/pkilo/attachment_vm_lm_pkilo_mag.mdl") + +--round, bone name +--im aware its the other way around but the reloads switch mags + + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_b_08"}, + [1] = {"j_b_07"}, + [2] = {"j_b_06"}, + [3] = {"j_b_05"}, + [4] = {"j_b_04"}, + [5] = {"j_b_03"}, + [6] = {"j_b_02"}, + [7] = {"j_b_01"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag_ext.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag_ext.lua new file mode 100644 index 0000000..e3c1722 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag_ext.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "150 Round Belt" +ATTACHMENT.Model = Model("models/viper/mw/attachments/pkilo/attachment_vm_lm_pkilo_mag_ext.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/pkilo/icon_attachment_lm_pkilo_mag.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_b_08"}, + [1] = {"j_b_07"}, + [2] = {"j_b_06"}, + [3] = {"j_b_05"}, + [4] = {"j_b_04"}, + [5] = {"j_b_03"}, + [6] = {"j_b_02"}, + [7] = {"j_b_01"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 150 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag_xlrg.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag_xlrg.lua new file mode 100644 index 0000000..327702d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/mags/attachment_vm_lm_pkilo_mag_xlrg.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "200 Round Belt" +ATTACHMENT.Model = Model("models/viper/mw/attachments/pkilo/attachment_vm_lm_pkilo_mag_xlrg.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/pkilo/icon_attachment_lm_pkilo_mag.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_b_08"}, + [1] = {"j_b_07"}, + [2] = {"j_b_06"}, + [3] = {"j_b_05"}, + [4] = {"j_b_04"}, + [5] = {"j_b_03"}, + [6] = {"j_b_02"}, + [7] = {"j_b_01"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 200 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.81 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.81 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/perks/attachment_vm_lm_pkilo_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/perks/attachment_vm_lm_pkilo_perk_soh.lua new file mode 100644 index 0000000..5aca24a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/perks/attachment_vm_lm_pkilo_perk_soh.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/pkilo/stock/attachment_vm_lm_pkilo_stock.lua b/lua/weapons/mg_base/modules/attachmentss/pkilo/stock/attachment_vm_lm_pkilo_stock.lua new file mode 100644 index 0000000..49d229a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/pkilo/stock/attachment_vm_lm_pkilo_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/pkilo/attachment_vm_lm_pkilo_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barhvy.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barhvy.lua new file mode 100644 index 0000000..0545f51 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barhvy.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "ZLR VeraTwist 9.6" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_barhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_dyn_attachment_sn_romeo700_barhvy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Projectile.Gravity = weapon.Projectile.Gravity * 0.73 + weapon.Projectile.Speed = weapon.Projectile.Speed * 1.2 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barlong.lua new file mode 100644 index 0000000..aaeffcc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barlong.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "SP-R 26\"" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.88 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.88 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barrel.lua new file mode 100644 index 0000000..c134a12 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barshort.lua new file mode 100644 index 0000000..67cf77a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barshort.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "ZLR Asp" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.5 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.35 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.17 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.17 + weapon.Projectile.Gravity = weapon.Projectile.Gravity * 1.2 + weapon.Projectile.Speed = weapon.Projectile.Speed * 0.55 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barsil.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barsil.lua new file mode 100644 index 0000000..5843409 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/barrels/attachment_vm_sn_romeo700_barsil.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "XRK 208 Dragoon" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_barsil.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_barsil.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.93 + weapon.Projectile.Speed = weapon.Projectile.Speed * 1.2 + + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_bolt.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_bolt.lua new file mode 100644 index 0000000..ec40283 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_bolt.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_bolt" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_bolt.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_bolthvy.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_bolthvy.lua new file mode 100644 index 0000000..c5cb15f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_bolthvy.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_bolt" +ATTACHMENT.Name = "Sloan KR-800 DeadEye" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_bolthvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_bolthvy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Rechamber = weapon.Animations.rechamber_bolthvy +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_boltl.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_boltl.lua new file mode 100644 index 0000000..fe8e295 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/bolts/attachment_vm_sn_romeo700_boltl.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_bolt" +ATTACHMENT.Name = "Sloan KR-600 Feather" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_boltl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_boltl.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Rechamber = weapon.Animations.rechamber_boltl +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_angledgrip01.lua new file mode 100644 index 0000000..b32422c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_angledgrip01.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_angledgrip02.lua new file mode 100644 index 0000000..fdec252 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_angledgrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_bipodgrip.lua new file mode 100644 index 0000000..9c9abda --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_bipodgrip.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_stubbygrip01.lua new file mode 100644 index 0000000..867b849 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_stubbygrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_stubbygrip02.lua new file mode 100644 index 0000000..7a7d7a1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_stubbygrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip01.lua new file mode 100644 index 0000000..737ba5d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip02.lua new file mode 100644 index 0000000..6cedc97 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip03.lua new file mode 100644 index 0000000..0e6af9b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/grips/attachment_vm_sn_romeo700_vertgrip03.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser01.lua new file mode 100644 index 0000000..fd23f59 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser01.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser02.lua new file mode 100644 index 0000000..3fa5111 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser02.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser03.lua new file mode 100644 index 0000000..ba5fc0e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/lasers/attachment_vm_sn_romeo700_laser03.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_mag.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_mag.lua new file mode 100644 index 0000000..d099ad5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_mag.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_mag.mdl") + +ATTACHMENT.BulletList = { + [1] = {"j_bullet01"}, + [2] = {"j_bullet02"}, + [3] = {"j_bullet03"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_magcalcust1.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_magcalcust1.lua new file mode 100644 index 0000000..4f8d688 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_magcalcust1.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = ".338 Lapua Mag 5-R Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_magcalcust2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_magcalcust2.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_bullet01"}, + [2] = {"j_bullet02"}, + [3] = {"j_bullet03"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Projectile.Gravity = weapon.Projectile.Gravity * 1.2 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.1 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.1 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.2 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.2 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.5 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_magcalcust2.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_magcalcust2.lua new file mode 100644 index 0000000..a4b0ea5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_magcalcust2.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = ".300 Norma Mag 5-R Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_magcalcust1.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_magcalcust1.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_bullet01"}, + [2] = {"j_bullet02"}, + [3] = {"j_bullet03"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Projectile.Speed = weapon.Projectile.Speed * 1.15 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.12 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.22 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_xmags.lua new file mode 100644 index 0000000..71538d0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/mags/attachment_vm_sn_romeo700_xmags.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "10 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_xmags.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_bullet01"}, + [2] = {"j_bullet02"}, + [3] = {"j_bullet03"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Inspect = weapon.Animations.inspect_xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 + weapon.Primary.ClipSize = 10 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/perks/attachment_vm_sn_romeo700_perk_bolt.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/perks/attachment_vm_sn_romeo700_perk_bolt.lua new file mode 100644 index 0000000..a7cf41f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/perks/attachment_vm_sn_romeo700_perk_bolt.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_perk_bolt" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.rechamber_bolthvy.Fps = weapon.Animations.rechamber_bolthvy.Fps * 1.5 + weapon.Animations.rechamber_boltl.Fps = weapon.Animations.rechamber_boltl.Fps * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/perks/attachment_vm_sn_romeo700_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/perks/attachment_vm_sn_romeo700_perk_soh.lua new file mode 100644 index 0000000..c886db5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/perks/attachment_vm_sn_romeo700_perk_soh.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + -- weapon.ReloadRechambers = false +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/sights/attachment_vm_sn_romeo700_irons.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/sights/attachment_vm_sn_romeo700_irons.lua new file mode 100644 index 0000000..ca22716 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/sights/attachment_vm_sn_romeo700_irons.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_sight" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.ViewModelOffsets.Aim.Pos = Vector(0, 3, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/sights/attachment_vm_sn_romeo700_scope.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/sights/attachment_vm_sn_romeo700_scope.lua new file mode 100644 index 0000000..0b06b4a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/sights/attachment_vm_sn_romeo700_scope.lua @@ -0,0 +1,29 @@ +ATTACHMENT.Base = "att_optic_10x" +ATTACHMENT.Name = "Solozero SP-R 28mm" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_scope.vmt") +ATTACHMENT.Bodygroups = { + ["tag_sight"] = 1, + ["sight"] = 1 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/mw/weapons/romeo700/weapon_vm_sn_romeo700_scopelens.vmt"), + HideModel = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_scope_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 750, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_16.vmt"), + Size = 1250, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stock.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stock.lua new file mode 100644 index 0000000..d4cebc8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stockhvy.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stockhvy.lua new file mode 100644 index 0000000..2636204 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stockhvy.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "XRK SP-TAC 208 Ultimate" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_stockhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_stockhvy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Recoil.Shake = weapon.Recoil.Shake * 1.25 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_pistolgrip_offset") + weapon:SetGripPoseParameter("grip_stockhvy_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stockskel.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stockskel.lua new file mode 100644 index 0000000..97043ce --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stockskel.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "XRK SP-LITE 208 Blitz" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_stockskel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_stockskel.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.09 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.09 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.16 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.16 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.12 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.12 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.12 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.12 + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 0.9 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_pistolgrip_offset") + weapon:SetGripPoseParameter("grip_stockskel_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stocksn.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stocksn.lua new file mode 100644 index 0000000..eb8daf9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stocksn.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "ZLR SP-R Overseer" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_stocksn.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_stocksn.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 1.11 + weapon.Recoil.Shake = weapon.Recoil.Shake * 0.8 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_stocksn_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stocktac.lua b/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stocktac.lua new file mode 100644 index 0000000..a771268 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo700/stock/attachment_vm_sn_romeo700_stocktac.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Virtuoso Pro" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo700/attachment_vm_sn_romeo700_stocktac.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo700/icon_attachment_sn_romeo700_stocktac.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 0.9 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.92 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_pistolgrip_offset") + weapon:SetGripPoseParameter("grip_stocktac_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel.lua new file mode 100644 index 0000000..0784f9a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_long.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_long.lua new file mode 100644 index 0000000..cc438af --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_long.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "XRK 30.0 Sport" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_barrel_long.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_barrel_long.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Ads = weapon.Cone.Ads * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + weapon.Primary.ClipSize = 10 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_sawn.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_sawn.lua new file mode 100644 index 0000000..14aeb1a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_sawn.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "XRK 14.0 SWAT" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_barrel_sawn.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_barrel_sawn.vmt") +ATTACHMENT.AttachmentBodygroups = { + ["sight"] = 0 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 1.5 + weapon.Cone.Ads = weapon.Cone.Ads * 1.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Primary.ClipSize = 5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_v2.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_v2.lua new file mode 100644 index 0000000..dc96801 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_barrel_v2.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "attachment_vm_sh_romeo870_barrel" +ATTACHMENT.Name = "The Ejector" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_barrel_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_barrel_v2.vmt") +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_RARE +ATTACHMENT.CosmeticChange = true + diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_heatguard_mp.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_heatguard_mp.lua new file mode 100644 index 0000000..c81d44d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/barrels/attachment_vm_sh_romeo870_heatguard_mp.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "XRK 18.0 Liberator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_heatguard_mp.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_heatguard.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 1.2 + weapon.Cone.Ads = weapon.Cone.Ads * 1.2 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_angledgrip01.lua new file mode 100644 index 0000000..da07bda --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_angledgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_angledgrip02.lua new file mode 100644 index 0000000..1e3074d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_angledgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_stubbygrip01.lua new file mode 100644 index 0000000..ebb9e70 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_stubbygrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_stubbygrip02.lua new file mode 100644 index 0000000..663d28e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_stubbygrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip01.lua new file mode 100644 index 0000000..82278fb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip02.lua new file mode 100644 index 0000000..6f2dcbe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip03.lua new file mode 100644 index 0000000..9dbd6ae --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/grips/attachment_vm_sh_romeo870_vertgrip03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser01.lua new file mode 100644 index 0000000..f47110e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser02.lua new file mode 100644 index 0000000..7344f52 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser03.lua new file mode 100644 index 0000000..a16eff0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/lasers/attachment_vm_sh_romeo870_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/mags/attachment_vm_sh_romeo870_mag.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/mags/attachment_vm_sh_romeo870_mag.lua new file mode 100644 index 0000000..756c8ae --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/mags/attachment_vm_sh_romeo870_mag.lua @@ -0,0 +1,29 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "6-R Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_mag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_mag.vmt") +ATTACHMENT.ExcludedCategories = {"Barrels"} +ATTACHMENT.Bodygroups = { + ["tag_mag_attach"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 + weapon.DisableCantedReload = false + weapon.EmptyReloadRechambers = true + weapon.Primary.ClipSize = 6 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon.Animations.Reload_Start = nil + weapon.Animations.Reload_Loop = nil + weapon.Animations.Reload_End = nil + weapon.Animations.Reload_EndEmpty = nil +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_shtgnsilencer.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_shtgnsilencer.lua new file mode 100644 index 0000000..2fd5a66 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_shtgnsilencer.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer01" +ATTACHMENT.Name = "Lightweight Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_shtgnsilencer.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_shtgnsilencer.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_silencer02.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_silencer02.lua new file mode 100644 index 0000000..00253e7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_silencer02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer02" +ATTACHMENT.Name = "Monolithic Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_silencer02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_silencer02.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_silencer03.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_silencer03.lua new file mode 100644 index 0000000..f01d325 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/muzzles/attachment_vm_sh_romeo870_silencer03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_silencer03" +ATTACHMENT.Name = "Tactical Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/oscar12/attachment_vm_sh_oscar12_silencer03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/oscar12/icon_attachment_sh_oscar12_silencer03.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/perks/attachment_vm_sh_romeo870_perk_slamfire.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/perks/attachment_vm_sh_romeo870_perk_slamfire.lua new file mode 100644 index 0000000..4918e72 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/perks/attachment_vm_sh_romeo870_perk_slamfire.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Slamfire" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_slamfire.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + -- weapon.Animations.Rechamber = weapon.Animations.rechamber_slam + -- weapon.Animations.Fire = weapon.Animations.fire_slam + -- weapon.Animations.Fire_Last = weapon.Animations.fire_last_slam + weapon.Primary.RPM = 450 + weapon.Animations.Rechamber.Length = 0.3 + weapon.Cone.Hip = 1.3 + weapon.Cone.Max = 7.5 + --weapon.Primary.Automatic = true + + local oldOnSet = weapon.Firemodes[1].OnSet + weapon.Firemodes[1].OnSet = function(wpn) + oldOnSet(wpn) + wpn.Primary.Automatic = true + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/perks/attachment_vm_sh_romeo870_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/perks/attachment_vm_sh_romeo870_perk_soh.lua new file mode 100644 index 0000000..555128b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/perks/attachment_vm_sh_romeo870_perk_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload_Start = weapon.Animations.reload_start_fast + weapon.Animations.Reload_Loop = weapon.Animations.reload_loop_fast + weapon.Animations.Reload_End = weapon.Animations.reload_end_fast + weapon.Animations.Reload_End_Empty = weapon.Animations.reload_end_empty_fast + weapon.Animations.Reload = weapon.Animations.reload_fast + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_fast + weapon.DisableCantedReload = true +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump.lua new file mode 100644 index 0000000..2383d23 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_pump" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_pump.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_pump_wood.vmt") diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_custom.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_custom.lua new file mode 100644 index 0000000..4c0a9a9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_custom.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_pump" +ATTACHMENT.Name = "XRK Truegrip Tactical" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_pump_custom.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_pump_custom.vmt") +ATTACHMENT.ExcludedCategories = {"Grips"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_v2.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_v2.lua new file mode 100644 index 0000000..914cac3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_v2.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "attachment_vm_sh_romeo870_pump" +ATTACHMENT.Name = "The Ejector" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_pump_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_pump_v2.vmt") +ATTACHMENT.ExcludedCategories = {"Grips"} +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_RARE +ATTACHMENT.CosmeticChange = true +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + --weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_wood.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_wood.lua new file mode 100644 index 0000000..bf49bce --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pump_wood.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_pump" +ATTACHMENT.Name = "Lockwood Precision Series" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_pump_wood.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_pump_wood.vmt") +ATTACHMENT.ExcludedCategories = {"Grips"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Rechamber.Fps = weapon.Animations.Rechamber.Fps * 0.9 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_wood_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pumpalt.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pumpalt.lua new file mode 100644 index 0000000..85b08a9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/pumps/attachment_vm_sh_romeo870_pumpalt.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_pump" +ATTACHMENT.Name = "Default (Alternative)" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_pump.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_pump_wood.vmt") +ATTACHMENT.CosmeticChange = true +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/receivers/attachment_vm_sh_romeo870_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/receivers/attachment_vm_sh_romeo870_receiver.lua new file mode 100644 index 0000000..3fdb28e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/receivers/attachment_vm_sh_romeo870_receiver.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "Default" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_receiver.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_pump_custom.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/receivers/attachment_vm_sh_romeo870_receiver_v2.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/receivers/attachment_vm_sh_romeo870_receiver_v2.lua new file mode 100644 index 0000000..5558952 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/receivers/attachment_vm_sh_romeo870_receiver_v2.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "The Ejector" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_receiver_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_receiver_v2.vmt") +ATTACHMENT.ExcludedAttachments = {"attachment_vm_sh_romeo870_stock_pistolgrip", "attachment_vm_sh_romeo870_stock", "attachment_vm_sh_romeo870_stock_wood"} +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_RARE +ATTACHMENT.CosmeticChange = true +ATTACHMENT.AttachmentBodygroups ={ + ["tag_stock"] = 1, +} diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/sights/attachment_vm_sh_romeo870_no_rail.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/sights/attachment_vm_sh_romeo870_no_rail.lua new file mode 100644 index 0000000..b3e568e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/sights/attachment_vm_sh_romeo870_no_rail.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_sight" +ATTACHMENT.Name = "No Rail" +ATTACHMENT.ExcludeCategory = {"Sights"} +ATTACHMENT.CosmeticChange = true +ATTACHMENT.AttachmentBodygroups ={ + ["rail"] = 1, + ["sight"] = 1, +} diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_heavy01.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_heavy01.lua new file mode 100644 index 0000000..5ac571e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_heavy01.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC Stalker" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_stock_heavy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_medium01.vmt") +ATTACHMENT.BonemergeToCategory = {"Receivers"} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_stock"] = 1, + ["stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.95 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.95 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.95 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_heavy02.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_heavy02.lua new file mode 100644 index 0000000..dc76c4f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_heavy02.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Hunter" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_stock_heavy02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_heavy02.vmt") +ATTACHMENT.BonemergeToCategory = {"Receivers"} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_stock"] = 1, + ["stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.86 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.86 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.91 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.91 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.85 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.85 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_light01.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_light01.lua new file mode 100644 index 0000000..345b379 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_light01.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC Ultralight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_stock_light01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_light01.vmt") +ATTACHMENT.BonemergeToCategory = {"Receivers"} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_stock"] = 1, + ["stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.1 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.1 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.1 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_medium01.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_medium01.lua new file mode 100644 index 0000000..6fdac27 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/att_vm_romeo870_stock_medium01.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Close Quarters Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_stock_medium01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_medium01.vmt") +ATTACHMENT.BonemergeToCategory = {"Receivers"} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_stock"] = 1, + ["stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.09 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.09 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.05 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.05 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.05 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock.lua new file mode 100644 index 0000000..39424b5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_stock.mdl") +ATTACHMENT.BonemergeToCategory = {"Receivers"} +ATTACHMENT.AttachmentBodygroups = { + ["stock"] = 1 +} diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_pistolgrip.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_pistolgrip.lua new file mode 100644 index 0000000..0e0d9a6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_pistolgrip.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "No Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_stock_pistolgrip.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_stock_pistolgrip.vmt") +ATTACHMENT.BonemergeToCategory = {"Receivers"} +ATTACHMENT.AttachmentBodygroups = { + ["stock"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0.75 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 + weapon.Animations.Melee = weapon.Animations.melee_nostock + weapon.Animations.Melee_Hit = weapon.Animations.melee_hit_nostock +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_v2.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_v2.lua new file mode 100644 index 0000000..74fa6b2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_v2.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "attachment_vm_sh_romeo870_stock" +ATTACHMENT.Name = "The Ejector" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_stock_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_stock_pistolgrip.vmt") +ATTACHMENT.BonemergeToCategory = {"Receivers"} +ATTACHMENT.AttachmentBodygroups = { + ["tag_stock"] = 1 +} diff --git a/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_wood.lua b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_wood.lua new file mode 100644 index 0000000..a56091c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/romeo870/stock/attachment_vm_sh_romeo870_stock_wood.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Lockwood Precision Series" +ATTACHMENT.Model = Model("models/viper/mw/attachments/romeo870/attachment_vm_sh_romeo870_stock_wood.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/romeo870/icon_attachment_sh_romeo870_stock_wood.vmt") +ATTACHMENT.BonemergeToCategory = {"Receivers"} +ATTACHMENT.AttachmentBodygroups = { + ["stock"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_stockh_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barlong.lua new file mode 100644 index 0000000..9614f41 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barlong.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS 24.0 Factory" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.05 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.05 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.89 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barmid.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barmid.lua new file mode 100644 index 0000000..f47cfc0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barmid.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS 20.0 Factory" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_barmid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_barmid.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.25 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.5 --shh + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.96 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.96 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barrel.lua new file mode 100644 index 0000000..4c4dda9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barshort.lua new file mode 100644 index 0000000..3e7a1fa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/barrels/attachment_vm_sn_sbeta_barshort.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS 18.0 Factory" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.96 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.96 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser01.lua new file mode 100644 index 0000000..088d0e2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser01.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.BonemergeToCategories = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser02.lua new file mode 100644 index 0000000..305a3aa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser02.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.BonemergeToCategories = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser03.lua new file mode 100644 index 0000000..336e79f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/lasers/attachment_vm_sn_sbeta_laser03.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.BonemergeToCategories = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_bolt.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_bolt.lua new file mode 100644 index 0000000..3360150 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_bolt.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_perk_bolt" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload_End_Empty.Fps = weapon.Animations.Reload_End_Empty.Fps * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_slamfire.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_slamfire.lua new file mode 100644 index 0000000..ea48af9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_slamfire.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_perk" +ATTACHMENT.Name = "Slamfire" +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/perks/perk_icon_slamfire.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + -- weapon.Animations.Rechamber = weapon.Animations.rechamber_slam + -- weapon.Animations.Fire = weapon.Animations.fire_slam + -- weapon.Animations.Fire_Last = weapon.Animations.fire_last_slam + weapon.Primary.RPM = 750 + weapon.Animations.Rechamber.Length = 0.13 + weapon.Cone.Hip = 1.5 + weapon.Cone.Max = 7.5 + weapon.Primary.Automatic = true + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1]*1.5 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2]*1.5 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1]*1.5 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2]*1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_soh.lua new file mode 100644 index 0000000..e353856 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/perks/attachment_vm_sn_sbeta_perk_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Reload_Start.Fps = weapon.Animations.Reload_Start.Fps * 1.25 + weapon.Animations.Reload_Loop.Fps = weapon.Animations.Reload_Loop.Fps * 1.25 + weapon.Animations.Reload_End.Fps = weapon.Animations.Reload_End.Fps * 1.25 + weapon.Animations.Reload_End_Empty.Fps = weapon.Animations.Reload_End_Empty.Fps * 1.25 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/sights/attachment_vm_sn_sbeta_scope.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/sights/attachment_vm_sn_sbeta_scope.lua new file mode 100644 index 0000000..5d8f7d0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/sights/attachment_vm_sn_sbeta_scope.lua @@ -0,0 +1,29 @@ +ATTACHMENT.Base = "att_optic_10x" +ATTACHMENT.Name = "Sniper Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_scope.vmt") +ATTACHMENT.Bodygroups = { + ["tag_sight"] = 1, + ["sight"] = 1 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/mw/weapons/sbeta/weapon_vm_sn_sbeta_scope_lens1.vmt"), + HideModel = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_scope_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 750, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_sniper_new.vmt"), + Size = 2000, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_rack.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_rack.lua new file mode 100644 index 0000000..da62558 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_rack.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Cartridge Sleeve" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_rack.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_rack.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Reload_Start.Fps = weapon.Animations.Reload_Start.Fps * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_light.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_light.lua new file mode 100644 index 0000000..1905eec --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_light.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "MK2 Ultralight Hollow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_stock_light.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_stock_light.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.03 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.03 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_stable.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_stable.lua new file mode 100644 index 0000000..f4b9d25 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_stable.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS MK2 Sport Comb" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_stock_stable.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_stock_stable.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_tactical.lua b/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_tactical.lua new file mode 100644 index 0000000..03c61b4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sbeta/stock/attachment_vm_sn_sbeta_stock_tactical.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS MK2 Precision Comb" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sbeta/attachment_vm_sn_sbeta_stock_tactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sbeta/icon_attachment_sn_sbeta_stock_tactical.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.88 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.88 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel.lua new file mode 100644 index 0000000..5ae290a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_long.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_long.lua new file mode 100644 index 0000000..094d45f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_long.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC 20.0 LB" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_barrel_long.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_barrel_long.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.1 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.PrintName = "FN MK 17 LB" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_mid.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_mid.lua new file mode 100644 index 0000000..8f45b64 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_mid.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC 17.2" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_barrel_mid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_barrel_mid.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.05 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.05 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_pdw.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_pdw.lua new file mode 100644 index 0000000..fa48f4b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_pdw.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC CQC Pro" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_barrel_pdw.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_barrel_pdw.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.85 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.PrintName = "FN MK 17 CQC" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_v18.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_v18.lua new file mode 100644 index 0000000..835d729 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/barrels/attachment_vm_ar_scharlie_barrel_v18.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Black Adder" +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_barrel_v18.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_barrel.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_angledgrip01.lua new file mode 100644 index 0000000..d9701b1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_angledgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_angledgrip02.lua new file mode 100644 index 0000000..25ceb70 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_angledgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_bipodgrip.lua new file mode 100644 index 0000000..9aac9d2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_bipodgrip.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_stubbygrip01.lua new file mode 100644 index 0000000..2fdab1f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_stubbygrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_stubbygrip02.lua new file mode 100644 index 0000000..45f366c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_stubbygrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip01.lua new file mode 100644 index 0000000..f9faa0f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip02.lua new file mode 100644 index 0000000..fba7d48 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip03.lua new file mode 100644 index 0000000..7042e81 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/grips/attachment_vm_ar_scharlie_vertgrip03.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser01.lua new file mode 100644 index 0000000..50a3fba --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser01.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser_hide"] = 1 +} + + +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser02.lua new file mode 100644 index 0000000..b31f178 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser02.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser_hide"] = 1 +} + +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser03.lua new file mode 100644 index 0000000..9f3345e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/lasers/attachment_vm_ar_scharlie_laser03.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser_hide"] = 1 +} + +ATTACHMENT.BonemergeToCategory = {"Barrels"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag.lua new file mode 100644 index 0000000..96c05ba --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag_dmr.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag_dmr.lua new file mode 100644 index 0000000..8bf78b7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag_dmr.lua @@ -0,0 +1,39 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "6.5mm Creedmoor Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_mag_dmr.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_mag_dmr.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 10 + weapon.Primary.Automatic = false + + weapon.Firemodes[1].Name = "Semi Auto" + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + + weapon.Animations.Reload = weapon.Animations.Reload_DMR + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_DMR + + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.1 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.1 + + if (weapon:HasAttachment("attachment_vm_ar_scharlie_barrel_long")) then + weapon.PrintName = "FN SCAR-H PR" + end + + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.5 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.5 + weapon.Bullet.Range = weapon.Bullet.Range * 1.5 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon.Firemodes[2] = nil + weapon.Primary.RPM = 450 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag_v18.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag_v18.lua new file mode 100644 index 0000000..c045138 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mag_v18.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "Black Adder" +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_mag_v18.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_mag.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mmags.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mmags.lua new file mode 100644 index 0000000..445fd8c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_mmags.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "25 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_mmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_mmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 25 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload.Length = weapon.Animations.Reload.Length + 0.067 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_xmags.lua new file mode 100644 index 0000000..15c72ca --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/mags/attachment_vm_ar_scharlie_xmags.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "30 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_mag_ext.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 30 + weapon.Animations.Reload = weapon.Animations.Reload_XmagLrg + weapon.Animations.Reload_Fast = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.96 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.96 + weapon.Animations.Reload.Length = weapon.Animations.Reload.Length + 0.067 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.87 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.87 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/perks/attachment_vm_ar_scharlie_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/perks/attachment_vm_ar_scharlie_perk_soh.lua new file mode 100644 index 0000000..70e30a5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/perks/attachment_vm_ar_scharlie_perk_soh.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Reload_DMR = weapon.Animations.Reload_DMR_Fast + weapon.Animations.Reload_Empty_DMR = weapon.Animations.Reload_Empty_DMR_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/receivers/attachment_vm_ar_scharlie_receiver_v18.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/receivers/attachment_vm_ar_scharlie_receiver_v18.lua new file mode 100644 index 0000000..a5c4e5d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/receivers/attachment_vm_ar_scharlie_receiver_v18.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "Black Adder" +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_receiver_v18.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_receiver.vmt") +ATTACHMENT.Bodygroups = { + ["receiver"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + -- weapon.Animations.Reload = weapon.Animations.Reload_Railcrust + -- weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Railcrust + -- weapon.Animations.Reload_Fast = weapon.Animations.Reload_Fast_Railcrust + -- weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Fast_Railcrust + -- weapon.Animations.Equip = weapon.Animations.Equip_Railcrust + -- weapon.ViewModelOffsets.Aim.Pos = weapon.ViewModelOffsets.Aim.Pos + Vector(0, 0, 1.65) + -- weapon.ViewModelOffsets.Aim.Angles = weapon.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock.lua new file mode 100644 index 0000000..187da20 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_dmr.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_dmr.lua new file mode 100644 index 0000000..9a69cf5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_dmr.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "XRK Obelisk Pro" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_stock_dmr.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_stock_dmr.vmt") +-- ATTACHMENT.Bodygroups ={ +-- ["tag_stock"] = 1 +-- } + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 + if (weapon:HasAttachment("attachment_vm_ar_scharlie_barrel_long")) then + weapon.PrintName = "FN SSR" + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_light.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_light.lua new file mode 100644 index 0000000..99f3d45 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_light.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Collapsible Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_stock_light.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_stock_light.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_stock"] = 0 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.19 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.19 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.12 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.12 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.75 + if (weapon:HasAttachment("attachment_vm_ar_scharlie_barrel_pdw")) then + weapon.PrintName = "FN SCAR-SC" + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_v18.lua b/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_v18.lua new file mode 100644 index 0000000..28200e1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/scharlie/stock/attachment_vm_ar_scharlie_stock_v18.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.UIColor = CUSTOMIZATION_COLOR_EPIC +ATTACHMENT.CosmeticChange = true +ATTACHMENT.Name = "Black Adder" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_scharlie_stock_v18.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/scharlie/icon_attachment_ar_scharlie_stock_v2.vmt") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barlong.lua new file mode 100644 index 0000000..7e227eb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barlong.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "CX-38" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.12 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.12 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barrel.lua new file mode 100644 index 0000000..a1227be --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barshort.lua new file mode 100644 index 0000000..dbce8e7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barshort.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "CX-23" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.92 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.92 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.12 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.12 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barsillong.lua b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barsillong.lua new file mode 100644 index 0000000..12c7d9e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barsillong.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "CX-38S" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barsillong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_barsillong.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.15 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Cone.Increase = weapon.Cone.Increase * 0.7 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.91 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barsilshort.lua b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barsilshort.lua new file mode 100644 index 0000000..bd981d9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barsilshort.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "CX-23S" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barsilshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_barsilshort.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.94 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.94 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barxlong.lua b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barxlong.lua new file mode 100644 index 0000000..aec5a49 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/barrels/attachment_vm_sm_secho_barxlong.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "CX-38E" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_barxlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_barxlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.HoldType = "Rifle" + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.18 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.18 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.81 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.81 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.91 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.8 + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_angledgrip01.lua new file mode 100644 index 0000000..8f6aca8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_angledgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip01_smg" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_angledgrip02.lua new file mode 100644 index 0000000..ab538c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_angledgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_bipodgrip.lua new file mode 100644 index 0000000..a6c4925 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_bipodgrip.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_stubbygrip01.lua new file mode 100644 index 0000000..73ff6f7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_stubbygrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +weapon:SetGripPoseParameter("grip_vertpro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_stubbygrip02.lua new file mode 100644 index 0000000..9af141b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_stubbygrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vertpro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip01.lua new file mode 100644 index 0000000..4306c6c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip02.lua new file mode 100644 index 0000000..74e7cae --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip03.lua new file mode 100644 index 0000000..21a2179 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/grips/attachment_vm_sm_secho_vertgrip03.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser01.lua new file mode 100644 index 0000000..dce2efc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser02.lua new file mode 100644 index 0000000..bbaa5c6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser03.lua new file mode 100644 index 0000000..f41d6df --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/lasers/attachment_vm_sm_secho_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_drummags.lua b/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_drummags.lua new file mode 100644 index 0000000..29e09c8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_drummags.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Drums" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_drummags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_drummags.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, + [1] = {"j_bullet2"}, + [2] = {"j_bullet3"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Reload = weapon.Animations.Reload_Drum + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Drum + weapon.Animations.Inspect = weapon.Animations.Inspect_Drum + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_mag.lua b/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_mag.lua new file mode 100644 index 0000000..c01cf17 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_mag.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_mag.mdl") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, + [1] = {"j_bullet2"}, + [2] = {"j_bullet3"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_smags.lua b/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_smags.lua new file mode 100644 index 0000000..9d255e2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_smags.lua @@ -0,0 +1,40 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "9mm Hollow Point 12-R Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_smags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_smags.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, + [1] = {"j_bullet2"}, + [2] = {"j_bullet3"}, + [3] = {"j_bullet4"}, + [4] = {"j_bullet5"}, + [5] = {"j_bullet6"}, + [6] = {"j_bullet7"}, + [7] = {"j_bullet8"}, + [8] = {"j_bullet9"}, + [9] = {"j_bullet10"}, + [10] = {"j_bullet11"}, + [11] = {"j_bullet12"} +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Firemodes[1].Name = "3rnd Burst" + weapon.Primary.Automatic = false + weapon.Primary.BurstRounds = 3 + weapon.Primary.BurstDelay = 0.1 + weapon.Primary.ClipSize = 12 + weapon.Animations.Reload = weapon.Animations.Reload_Smag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Smag + weapon.Animations.Inspect = weapon.Animations.Inspect_Smag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.1 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.25 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_xmags.lua new file mode 100644 index 0000000..bdc1f7d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/mags/attachment_vm_sm_secho_xmags.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "30 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_xmags.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, + [1] = {"j_bullet2"}, + [2] = {"j_bullet3"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 30 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/perks/attachment_vm_sm_secho_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/secho/perks/attachment_vm_sm_secho_perk_soh.lua new file mode 100644 index 0000000..e810543 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/perks/attachment_vm_sm_secho_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Drum = weapon.Animations.Reload_Drum_Fast + weapon.Animations.Reload_Empty_Drum = weapon.Animations.Reload_Empty_Drum_Fast + weapon.Animations.Reload_Smag = weapon.Animations.Reload_Smag_Fast + weapon.Animations.Reload_Empty_Smag = weapon.Animations.Reload_Empty_Smag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stock.lua b/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stock.lua new file mode 100644 index 0000000..3b0c358 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockh.lua new file mode 100644 index 0000000..b8638bb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockh.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "CX-MM" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_stockh.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.91 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.74 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.74 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockno.lua new file mode 100644 index 0000000..6ddd6c5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockno.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "CX-FR" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_stockno.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_stockno.vmt") +-- ATTACHMENT.Bodygroups = { +-- ["tag_stock"] = 1 +-- } +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0.65 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 + --weapon.Recoil.ViewModelMultiplier = 2.25 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockskel.lua b/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockskel.lua new file mode 100644 index 0000000..11ca75f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/secho/stock/attachment_vm_sm_secho_stockskel.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "CX-FA" +ATTACHMENT.Model = Model("models/viper/mw/attachments/secho/attachment_vm_sm_secho_stockskel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/secho/icon_attachment_sm_secho_stockskel.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.81 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.81 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barh.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barh.lua new file mode 100644 index 0000000..95ed29f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barh.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "XRK CZEN mk2" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_barh.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.06 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.06 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.08 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.1 + weapon.PrintName = "IMBEL IA2" +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_barhvy_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barlight.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barlight.lua new file mode 100644 index 0000000..7e8a1ba --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barlight.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Barlight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barlight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_barh.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.04 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.04 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.04 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.07 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_barlong_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barlong.lua new file mode 100644 index 0000000..4e027eb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barlong.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FFS 20.8 Nexus" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.1 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.1 + weapon.Cone.Hip = weapon.Cone.Hip * 0.95 + weapon.PrintName = "SG 550" + if ((weapon:HasAttachment("att_vm_scope_vz") || weapon:HasAttachment("att_vm_scope_mike14")) && weapon:HasAttachment("attachment_vm_ar_sierra552_stockh")) then + weapon.PrintName = "SG 550-1" + end +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_barhvy_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barrel.lua new file mode 100644 index 0000000..0149da2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barrel.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barrel.mdl") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_barhvy_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barshort.lua new file mode 100644 index 0000000..7b8cbdb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barshort.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "ZLR Drifter A-08" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_barshort.vmt") +ATTACHMENT.ExcludedCategories = {"Grips"} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.12 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.12 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.87 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.87 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.95 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.95 + weapon.HoldType = "RifleWithVerticalGrip" +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_barshort_offset") +end diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barxlong.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barxlong.lua new file mode 100644 index 0000000..3534354 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/barrels/attachment_vm_ar_sierra552_barxlong.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Tempus 26.4 Archangel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_barxlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_barxlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.8 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.2 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.2 + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.PrintName = "SG 550" + if ((weapon:HasAttachment("att_vm_scope_vz") || weapon:HasAttachment("att_vm_scope_mike14")) && weapon:HasAttachment("attachment_vm_ar_sierra552_stockh")) then + weapon.PrintName = "SG 550-1" + end +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_barxlong_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_angledgrip01.lua new file mode 100644 index 0000000..621dc55 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_angledgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_angledgrip02.lua new file mode 100644 index 0000000..3cfc68a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_angledgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_bipodgrip.lua new file mode 100644 index 0000000..00a82f5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_bipodgrip.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_stubbygrip01.lua new file mode 100644 index 0000000..687a7ba --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_stubbygrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_stubbygrip02.lua new file mode 100644 index 0000000..82ebf7f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_stubbygrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip01.lua new file mode 100644 index 0000000..ca9451e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip02.lua new file mode 100644 index 0000000..8fe85fd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip03.lua new file mode 100644 index 0000000..9296515 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/grips/attachment_vm_ar_sierra552_vertgrip03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser01.lua new file mode 100644 index 0000000..e6282bb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser02.lua new file mode 100644 index 0000000..c086feb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser03.lua new file mode 100644 index 0000000..8ad369e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/lasers/attachment_vm_ar_sierra552_laser03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_mag.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_mag.lua new file mode 100644 index 0000000..5112049 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_xmags.lua new file mode 100644 index 0000000..aad220e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_xmags.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_xmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Reload = weapon.Animations.reload_mmag + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_mmag + weapon.Animations.Reload_Fast = weapon.Animations.reload_mmag_fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_mmag_fast + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_xmagslrg.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_xmagslrg.lua new file mode 100644 index 0000000..0b63d55 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/mags/attachment_vm_ar_sierra552_xmagslrg.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "60 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_xmagslrg.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_xmagslrg.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 60 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.83 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.83 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.8 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.8 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/perks/attachment_vm_ar_sierra552_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/perks/attachment_vm_ar_sierra552_perk_soh.lua new file mode 100644 index 0000000..d813b04 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/perks/attachment_vm_ar_sierra552_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.reload_mmag = weapon.Animations.reload_mmag_fast + weapon.Animations.reload_empty_mmag = weapon.Animations.reload_empty_mmag_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stock.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stock.lua new file mode 100644 index 0000000..f733c4a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_stock.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockh.lua new file mode 100644 index 0000000..85930f2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockh.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Blackjack" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_stockh.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockl.lua new file mode 100644 index 0000000..df8d1e5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockl.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "XRK StrikeLite III" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_stockl.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.06 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.06 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.18 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockno.lua new file mode 100644 index 0000000..f29b02f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierra552/stock/attachment_vm_ar_sierra552_stockno.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "No Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierra552/attachment_vm_ar_sierra552_stockno.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierra552/icon_attachment_ar_sierra552_stockno.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 0 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 + if (weapon:HasAttachment("attachment_vm_ar_sierra552_barshort")) then + weapon.PrintName = "FAMAE Mini-SAF" + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barhvy.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barhvy.lua new file mode 100644 index 0000000..29708ed --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barhvy.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "TA Pro Twist" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_barhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierrax/icon_attachment_lm_sierrax_barhvy.vmt") +ATTACHMENT.Bodygroups = { + ["tag_barrel_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.DecreaseEveryShot = weapon.Recoil.DecreaseEveryShot * 1.22 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.89 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.89 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barlight.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barlight.lua new file mode 100644 index 0000000..15962f7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barlight.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "TA VC-8 Harrier" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_barlight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierrax/icon_attachment_lm_sierrax_barlight.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.95 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.95 + weapon.Cone.Hip = weapon.Cone.Hip * 1.2 + weapon.Cone.MinDecreaseEveryShot = weapon.Cone.MinDecreaseEveryShot * 2 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.08 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.08 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.11 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.11 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barlong.lua new file mode 100644 index 0000000..08b8b99 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barlong.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "TA LongShot Advantage" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierrax/icon_attachment_lm_sierrax_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.15 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.06 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.87 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.87 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.84 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.84 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barrel.lua new file mode 100644 index 0000000..6b5a8c1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/barrels/attachment_vm_lm_sierrax_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_angledgrip01.lua new file mode 100644 index 0000000..70bf4c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_angledgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_angledgrip02.lua new file mode 100644 index 0000000..6258a62 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_angledgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_stubbygrip01.lua new file mode 100644 index 0000000..dc6ce78 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_stubbygrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_stubbygrip02.lua new file mode 100644 index 0000000..a3ece9f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_stubbygrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip01.lua new file mode 100644 index 0000000..13fc7a1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip02.lua new file mode 100644 index 0000000..23bdbb2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip03.lua new file mode 100644 index 0000000..11f9d54 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/grips/attachment_vm_lm_sierrax_vertgrip03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups ={ + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser01.lua new file mode 100644 index 0000000..433166e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(1, 0, -3) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser02.lua new file mode 100644 index 0000000..c7b0dc7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(1, 0, -3) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser03.lua new file mode 100644 index 0000000..d9680dc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/lasers/attachment_vm_lm_sierrax_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(1, 0, -3) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_mag.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_mag.lua new file mode 100644 index 0000000..6f6ee38 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_mag.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_mag.mdl") + +--round, bone name +--im aware its the other way around but the reloads switch mags + + +--Current mag +ATTACHMENT.BulletList = { + [10] = {"j_bullet011"}, + [9] = {"j_bullet010"}, + [8] = {"j_bullet09"}, + [7] = {"j_bullet08"}, + [6] = {"j_bullet07"}, + [5] = {"j_bullet06"}, + [4] = {"j_bullet05"}, + [3] = {"j_bullet04"}, + [2] = {"j_bullet03"}, + [1] = {"j_bullet02"}, + [0] = {"j_bullet01"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_magcalcust1.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_magcalcust1.lua new file mode 100644 index 0000000..aaa6538 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_magcalcust1.lua @@ -0,0 +1,33 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "5.56 CT 75-Round Belts" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_magcalcust1.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierrax/icon_attachment_lm_sierrax_magcalcust1.vmt") + +--round, bone name +--im aware its the other way around but the reloads switch mags + + +--Current mag +ATTACHMENT.BulletList = { + [10] = {"j_bullet011"}, + [9] = {"j_bullet010"}, + [8] = {"j_bullet09"}, + [7] = {"j_bullet08"}, + [6] = {"j_bullet07"}, + [5] = {"j_bullet06"}, + [4] = {"j_bullet05"}, + [3] = {"j_bullet04"}, + [2] = {"j_bullet03"}, + [1] = {"j_bullet02"}, + [0] = {"j_bullet01"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Primary.RPM = 995 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 0.75 + weapon.Cone.MinDecreaseEveryShot = weapon.Cone.MinDecreaseEveryShot * 3 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_magcalcust2.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_magcalcust2.lua new file mode 100644 index 0000000..cd95123 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_magcalcust2.lua @@ -0,0 +1,37 @@ +ATTACHMENT.Base = "attachment_vm_lm_sierrax_magcalcust1" +ATTACHMENT.Name = "5.56 CT 100-Round Belts" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_magcalcust2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierrax/icon_attachment_lm_sierrax_magcalcust2.vmt") + +--round, bone name +--im aware its the other way around but the reloads switch mags + + +--Current mag +ATTACHMENT.BulletList = { + [10] = {"j_bullet011"}, + [9] = {"j_bullet010"}, + [8] = {"j_bullet09"}, + [7] = {"j_bullet08"}, + [6] = {"j_bullet07"}, + [5] = {"j_bullet06"}, + [4] = {"j_bullet05"}, + [3] = {"j_bullet04"}, + [2] = {"j_bullet03"}, + [1] = {"j_bullet02"}, + [0] = {"j_bullet01"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Primary.ClipSize = 100 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_xmags.lua new file mode 100644 index 0000000..eeca4fc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/mags/attachment_vm_lm_sierrax_xmags.lua @@ -0,0 +1,33 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "5.56 NATO 100-Round Belts" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierrax/icon_attachment_lm_sierrax_xmags.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [10] = {"j_bullet011"}, + [9] = {"j_bullet010"}, + [8] = {"j_bullet09"}, + [7] = {"j_bullet08"}, + [6] = {"j_bullet07"}, + [5] = {"j_bullet06"}, + [4] = {"j_bullet05"}, + [3] = {"j_bullet04"}, + [2] = {"j_bullet03"}, + [1] = {"j_bullet02"}, + [0] = {"j_bullet01"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Primary.ClipSize = 100 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.85 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/perks/attachment_vm_lm_sierrax_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/perks/attachment_vm_lm_sierrax_perk_soh.lua new file mode 100644 index 0000000..eac9871 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/perks/attachment_vm_lm_sierrax_perk_soh.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_fast + weapon.Animations.Reload_saw = weapon.Animations.Reload_fast_saw + weapon.Animations.Reload_Empty_saw = weapon.Animations.Reload_empty_fast_saw +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stock.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stock.lua new file mode 100644 index 0000000..70706e2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockh.lua new file mode 100644 index 0000000..48419b2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockh.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_stock_heavy02" +ATTACHMENT.Name = "FTAC Citadel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierrax/icon_attachment_lm_sierrax_stockh.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockl.lua new file mode 100644 index 0000000..48ca961 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockl.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_stock_medium01" +ATTACHMENT.Name = "XRK M309 Forward Assault" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierrax/icon_attachment_lm_sierrax_stockl.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockno.lua new file mode 100644 index 0000000..369d387 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stockno.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_stock_no" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_stockno.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierrax/icon_attachment_lm_sierrax_stockno.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stocksaw.lua b/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stocksaw.lua new file mode 100644 index 0000000..3e7365d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sierrax/stock/attachment_vm_lm_sierrax_stocksaw.lua @@ -0,0 +1,29 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "TA ChainSAW" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sierrax/attachment_vm_lm_sierrax_stocksaw.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sierrax/icon_attachment_lm_sierrax_stocksaw.mdl") +ATTACHMENT.Bodygroups = { + ["pgrip"] = 1 +} +ATTACHMENT.ExcludedCategories = { + "Sights", + "Grips" +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Recoil.DecreaseEveryShot = weapon.Recoil.DecreaseEveryShot * 2 + weapon.Cone.Hip = weapon.Cone.Hip * 0.75 + weapon.Cone.DecreaseEveryShot = weapon.Cone.DecreaseEveryShot * 2 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + + weapon.ViewModelOffsets.Idle.Angles = Angle(0, 0, -7) + weapon.ViewModelOffsets.Idle.Pos = Vector(0, -3, -4) + weapon.HoldType = "Saw" + + weapon.WorldModelOffsets.Pos = Vector(9,-2, 0) + weapon.WorldModelOffsets.Angles = Angle(10, -20, -180) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_1point5x.lua b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_1point5x.lua new file mode 100644 index 0000000..f8f8597 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_1point5x.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_hybrid" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.99 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.99 + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 0.8 + weapon.Zoom.FovMultiplier = 0.7 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_2x.lua b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_2x.lua new file mode 100644 index 0000000..29283d9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_2x.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_hybrid" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 0.95 + weapon.Zoom.FovMultiplier = 0.6 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_3x.lua b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_3x.lua new file mode 100644 index 0000000..cb8147c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_3x.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_hybrid" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 1.05 + weapon.Zoom.FovMultiplier = 0.525 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_4x.lua b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_4x.lua new file mode 100644 index 0000000..525148d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_hybrid_4x.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_hybrid" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 1.2 + weapon.Zoom.FovMultiplier = 0.4 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_eastern02.lua b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_eastern02.lua new file mode 100644 index 0000000..8f7fbc3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_eastern02.lua @@ -0,0 +1,40 @@ +ATTACHMENT.Base = "att_hybrid_3x" +ATTACHMENT.Name = "3.0x Flip Hybrid" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_hybrid_east02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/hybrid/icon_attachment_hybrid_east02_lw.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} + +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} + +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/reticle_ui_stencil.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_hybrid_east02_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 600, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_acog_default3.vmt"), + Size = 650, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} + +ATTACHMENT.ReticleHybrid = { + Material = Material("viper/mw/reticles/reticle_holo_default.vmt"), + Size = 800, + Color = Color(255, 255, 255, 200), + OnAnimation = "HybridOn", + OffAnimation = "HybridOff", + Attachment = "reticle2" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west01.lua b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west01.lua new file mode 100644 index 0000000..ecb6716 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west01.lua @@ -0,0 +1,34 @@ +ATTACHMENT.Base = "att_hybrid_4x" +ATTACHMENT.Name = "Integral Hybrid" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_hybrid_west.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/hybrid/icon_attachment_hybrid_west_lw.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/reticle_ui_stencil.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_hybrid_west_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 600, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_acog_default"), + Size = 600, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.ReticleHybrid = { + Material = Material("viper/shared/reticles/aimpoint_reticle.vmt"), + Size = 110, + Color = Color(255, 255, 255, 255), + Attachment = "reticle2" +} diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west02.lua b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west02.lua new file mode 100644 index 0000000..0b1bab9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west02.lua @@ -0,0 +1,40 @@ +ATTACHMENT.Base = "att_hybrid_3x" +ATTACHMENT.Name = "3.0x Flip Hybrid" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_hybrid_west02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/hybrid/icon_attachment_hybrid_west02_lw.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} + +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} + +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/reticle_ui_stencil.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_hybrid_west02_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 600, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_acog_default3.vmt"), + Size = 650, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} + +ATTACHMENT.ReticleHybrid = { + Material = Material("viper/mw/reticles/reticle_holo_default.vmt"), + Size = 800, + Color = Color(255, 255, 255, 200), + OnAnimation = "HybridOn", + OffAnimation = "HybridOff", + Attachment = "reticle2" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west02_thermal.lua b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west02_thermal.lua new file mode 100644 index 0000000..5e5383f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west02_thermal.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_vm_hybrid_west02" +ATTACHMENT.Name = "3.0x Flip Thermal" +ATTACHMENT.Optic = { + Thermal = true +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_acog_default.vmt"), +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west03.lua b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west03.lua new file mode 100644 index 0000000..426f617 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_hybrid_west03.lua @@ -0,0 +1,34 @@ +ATTACHMENT.Base = "att_hybrid_4x" +ATTACHMENT.Name = "Cronen C480 Pro Hybrid" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_hybrid_west03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_4x_west02.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/reticle_ui_stencil.vmt"), + LensBodygroup = "lens", + HideModel = Model("models/viper/mw/attachments/attachment_vm_hybrid_west03_hide.mdl"), + FOV = 7, + ParallaxSize = 800, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_acog_default3.vmt"), + Size = 500, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.ReticleHybrid = { + Material = Material("viper/shared/reticles/aimpoint_reticle.vmt"), + Size = 150, + Color = Color(255, 255, 255, 255), + Attachment = "reticle2" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_thermal_east01_hybrid.lua b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_thermal_east01_hybrid.lua new file mode 100644 index 0000000..18eec15 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/hybrids/att_vm_thermal_east01_hybrid.lua @@ -0,0 +1,34 @@ +ATTACHMENT.Base = "att_hybrid_4x" +ATTACHMENT.Name = "Merc Thermal Hybrid" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_thermal_hybrid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_thermal_east.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/attachment_vm_thermal_east_hide.mdl"), + LensHideMaterial = Material("viper/MW/attachments/attachment_vm_thermal_east_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 300, --a value of zero means 1:1 size with the end of the optic + Thermal = true +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_thermal_default2.vmt"), + Size = 750, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.ReticleHybrid = { + Material = Material("viper/shared/reticles/aimpoint_reticle.vmt"), + Size = 150, + Color = Color(255, 255, 255, 255), + Attachment = "reticle2" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_10x.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_10x.lua new file mode 100644 index 0000000..b5e3951 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_10x.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_optic" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 1.65 + weapon.Zoom.FovMultiplier = 0.125 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.35 + + if (weapon.Recoil.Punch != nil) then + weapon.Recoil.Punch = weapon.Recoil.Punch * 0.65 + end + + if (weapon.Recoil.AdsShakeMultiplier != nil) then + weapon.Recoil.AdsShakeMultiplier = weapon.Recoil.AdsShakeMultiplier * 0.5 + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_1point5x.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_1point5x.lua new file mode 100644 index 0000000..ead4747 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_1point5x.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_optic" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.99 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.99 + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 0.8 + weapon.Zoom.FovMultiplier = 0.7 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_20x.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_20x.lua new file mode 100644 index 0000000..28caf59 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_20x.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_optic" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 1.55 + weapon.Zoom.FovMultiplier = 0.03 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.15 + + if (weapon.Recoil.Punch != nil) then + weapon.Recoil.Punch = weapon.Recoil.Punch * 0.35 + end + + if (weapon.Recoil.AdsShakeMultiplier != nil) then + weapon.Recoil.AdsShakeMultiplier = weapon.Recoil.AdsShakeMultiplier * 0.25 + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_2x.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_2x.lua new file mode 100644 index 0000000..e9673d1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_2x.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_optic" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.97 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.97 + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 0.95 + weapon.Zoom.FovMultiplier = 0.6 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_3x.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_3x.lua new file mode 100644 index 0000000..e1b05da --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_3x.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_optic" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 1.05 + weapon.Zoom.FovMultiplier = 0.525 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_4x.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_4x.lua new file mode 100644 index 0000000..8e31551 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_optic_4x.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_optic" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 1.2 + weapon.Zoom.FovMultiplier = 0.4 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west01.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west01.lua new file mode 100644 index 0000000..bf7f77b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west01.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_optic_2x" +ATTACHMENT.Name = "Cronen 2x2 Elite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_ar_tango21_hybrid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_ar_tango21_hybrid.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/weapon_vm_ar_tango21_magnifier_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_ar_tango21_hybrid_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 800, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/bravo4_ret.vmt"), + Size = 1200, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west02.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west02.lua new file mode 100644 index 0000000..b0f8d62 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west02.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_optic_2x" +ATTACHMENT.Name = "Solozero K498 2.0x Integral" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_lm_slima_acog.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_lm_slima_acog.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/weapon_vm_lm_slima_sightmagnifier_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_lm_slima_acog_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 600, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/bravo4_ret.vmt"), + Size = 1200, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west02_holo.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west02_holo.lua new file mode 100644 index 0000000..39f0787 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_2x_west02_holo.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_sight_1x" +ATTACHMENT.Name = "Solozero K498" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_lm_slima_acog_optic.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_lm_slima_acog_holo.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_holo_default2.vmt"), + Size = 400, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_east01.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_east01.lua new file mode 100644 index 0000000..b57cf9a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_east01.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_optic_3x" +ATTACHMENT.Name = "VLK 3.0x Optic" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_4x_east.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_4x_east.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/attachment_vm_4x_east_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_4x_east_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 500, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_acog_default2.vmt"), + Size = 700, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_east01_tall.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_east01_tall.lua new file mode 100644 index 0000000..21d5cfe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_east01_tall.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_4x_east01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_4x_east_tall.mdl") +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/attachment_vm_4x_east_tall_lens_hide.mdl") +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west01.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west01.lua new file mode 100644 index 0000000..1abae7f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west01.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_optic_4x" +ATTACHMENT.Name = "Scout Combat Optic" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_4x_west.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_4x_west.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/attachment_vm_4x_west_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_4x_west_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 450, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_vzscope_default"), + Size = 800, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west01_tall.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west01_tall.lua new file mode 100644 index 0000000..481f4c4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west01_tall.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_4x_west01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_4x_west_tall.mdl") +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/attachment_vm_4x_west_tall_lens_hide.mdl") +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west02.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west02.lua new file mode 100644 index 0000000..607b486 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west02.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_optic_4x" +ATTACHMENT.Name = "Cronen C480 Pro Optic" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_4x_west02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_4x_west02.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/attachment_vm_4x_west02_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_4x_west02_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 800, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_acog_default3.vmt"), + Size = 500, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west02_tall.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west02_tall.lua new file mode 100644 index 0000000..a7731cf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_4x_west02_tall.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_4x_west02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_4x_west02_tall.mdl") +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/attachment_vm_4x_west02_tall_lens_hide.mdl") +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_holo_east01.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_holo_east01.lua new file mode 100644 index 0000000..9f3e8c7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_holo_east01.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_optic_1point5x" +ATTACHMENT.Name = "APX5 Holographic Sight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_holo_east.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_holo_east.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/attachment_vm_holo_east_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_holo_east_hide.mdl"), + LensBodygroup = "lens", + ParallaxSize = 450, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_holo_default2.vmt"), + Size = 400, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_scope_mike14.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_scope_mike14.lua new file mode 100644 index 0000000..26fb006 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_scope_mike14.lua @@ -0,0 +1,30 @@ +ATTACHMENT.Base = "att_optic_10x" +ATTACHMENT.Name = "Sniper Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/weapon_vm_scope_mike14_alt.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_snprscope_mike14.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["tag_top_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/weapon_vm_sn_mike14_scope_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/weapon_vm_scope_mike14_alt_lens_hide.mdl"), + LensBodygroup = "lens", + FOV = 3, + ParallaxSize = 700, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_sniper_new.vmt"), + Size = 5000, + Color = Color(255, 255, 255, 255), + Attachment = "reticle", + Offset = Vector(-0.09, 0.01, 0) +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_scope_vz.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_scope_vz.lua new file mode 100644 index 0000000..10073ba --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_scope_vz.lua @@ -0,0 +1,36 @@ +ATTACHMENT.Base = "att_optic_10x" +ATTACHMENT.Name = "Variable™ Zoom Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_scope_vz.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_scope_vz.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["tag_top_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/attachment_vm_scope_vz_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/weapon_vm_scope_vz_lens_hide.mdl"), + LensBodygroup = "lens", + FOV = 3, + ParallaxSize = 700, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_sniper_new.vmt"), + Size = 2000, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_thermal_east01.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_thermal_east01.lua new file mode 100644 index 0000000..457a5c5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_thermal_east01.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_optic_4x" +ATTACHMENT.Name = "Merc Thermal Optic" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_thermal_east.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_thermal_east.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/attachment_vm_thermal_east_hide.mdl"), + LensHideMaterial = Material("viper/MW/attachments/attachment_vm_thermal_east_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 300, --a value of zero means 1:1 size with the end of the optic + Thermal = true +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_thermal_default2.vmt"), + Size = 750, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_thermal_west01.lua b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_thermal_west01.lua new file mode 100644 index 0000000..477f009 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/optics/att_vm_thermal_west01.lua @@ -0,0 +1,37 @@ +ATTACHMENT.Base = "att_optic_10x" +ATTACHMENT.Name = "Solozero NVG Enhanced" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_thermal_west_01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/optics/icon_attachment_thermal_west01.vmt") +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2, + ["tag_rail"] = 1, + ["sight"] = 2 +} +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/attachment_vm_thermal_west_01_hide.mdl"), + LensHideMaterial = Material("viper/MW/attachments/attachment_vm_thermal_west01_lens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 600, --a value of zero means 1:1 size with the end of the optic + Thermal = true, + ThermalBackgroundColor = Color(50, 100, 75, 223), + ThermalBodiesColor = Color(250, 250, 0, 150) +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_thermal_default.vmt"), + Size = 750, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_sight_1x.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_sight_1x.lua new file mode 100644 index 0000000..4fcf807 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_sight_1x.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_sight_reticle" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Zoom.ViewModelFovMultiplier = weapon.Zoom.ViewModelFovMultiplier * 0.8 + weapon.Zoom.FovMultiplier = 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_holo_west01.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_holo_west01.lua new file mode 100644 index 0000000..cd12c45 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_holo_west01.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_sight_1x" +ATTACHMENT.Name = "Corp Combat Holo Sight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_holo_west_lod0.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/reticles/icon_attachment_holo_west.vmt") + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_holo_default.vmt"), + Size = 800, + Color = Color(255, 255, 255, 200), + Attachment = "reticle" +} +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_holo_west02.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_holo_west02.lua new file mode 100644 index 0000000..6671686 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_holo_west02.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_sight_1x" +ATTACHMENT.Name = "PBX Holo 7 Sight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_holo_west02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/reticles/icon_attachment_holo_west02.vmt") +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_reflex_default3"), + Size = 800, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot01.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot01.lua new file mode 100644 index 0000000..228aa98 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot01.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_sight_1x" +ATTACHMENT.Name = "G.I. Mini Reflex" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_minireddot01_mike1911.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/reticles/icon_attachment_minireddot.vmt") +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/aimpoint_reticle.vmt"), + Size = 140, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot01_tall.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot01_tall.lua new file mode 100644 index 0000000..39e1107 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot01_tall.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_minireddot01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_minireddot_tall.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot02.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot02.lua new file mode 100644 index 0000000..14d17c8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot02.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_sight_1x" +ATTACHMENT.Name = "Solozero Optics Mini Reflex" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_minireddot02_mike1911.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/reticles/icon_attachment_minireddot02.vmt") +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/aimpoint_reticle.vmt"), + Size = 140, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot02_tall.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot02_tall.lua new file mode 100644 index 0000000..4172bf3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot02_tall.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_minireddot02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_minireddot02_tall.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot03.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot03.lua new file mode 100644 index 0000000..103857c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot03.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_sight_1x" +ATTACHMENT.Name = "Cronen LP945 Mini Reflex" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_minireddot03_mike1911.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/reticles/icon_attachment_minireddot03.vmt") +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/aimpoint_reticle.vmt"), + Size = 140, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot03_tall.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot03_tall.lua new file mode 100644 index 0000000..e96ac2f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_minireddot03_tall.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_minireddot03" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_minireddot03_tall.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_02.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_02.lua new file mode 100644 index 0000000..362c169 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_02.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_sight_1x" +ATTACHMENT.Name = "LP Collimator" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_reflex_02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/reticles/dyn_icon_attachment_vm_reflex_02.vmt") +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_reflex_default2.vmt"), + Size = 950, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east01.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east01.lua new file mode 100644 index 0000000..11ff264 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east01.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_sight_1x" +ATTACHMENT.Name = "Viper Reflex Sight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_reflex_east_lod0.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/reticles/icon_attachment_reflex_east.vmt") +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/kobra_reticle.vmt"), + Size = 240, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east02.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east02.lua new file mode 100644 index 0000000..917e9dd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east02.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_sight_1x" +ATTACHMENT.Name = "Monocle Reflex Sight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_reflex_east02_lod0.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/reticles/icon_attachment_reflex_east02.vmt") +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_reflex_default3"), + Size = 800, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east02_tall.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east02_tall.lua new file mode 100644 index 0000000..8e27bc9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_east02_tall.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_reflex_east02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_reflex_east02_tall.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west02.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west02.lua new file mode 100644 index 0000000..1364923 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west02.lua @@ -0,0 +1,30 @@ +ATTACHMENT.Base = "att_optic_2x" +ATTACHMENT.Name = "Aim-Op Reflex Sight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_reflex_west02_lod0.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/reticles/icon_attachment_reflex_west02.vmt") + +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} + +ATTACHMENT.Optic = { + LensHideMaterial = Material("viper/MW/attachments/attachment_vm_reflex_west02_lens.vmt"), + HideModel = Model("models/viper/mw/attachments/attachment_vm_reflex_west02_hide.mdl"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 600, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_reflex_default2.vmt"), + Size = 500, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west02_tall.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west02_tall.lua new file mode 100644 index 0000000..78bf56b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west02_tall.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_vm_reflex_west02" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_reflex_west04.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west03.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west03.lua new file mode 100644 index 0000000..34d07d3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west03.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_sight_1x" +ATTACHMENT.Name = "Operator Reflex Sight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_reflex_west03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/reticles/icon_attachment_reflex_west03.vmt") +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/aimpoint_reticle.vmt"), + Size = 125, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west04.lua b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west04.lua new file mode 100644 index 0000000..7eeccfa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sights/reticles/att_vm_reflex_west04.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_sight_1x" +ATTACHMENT.Name = "Cronen Elite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_reflex_west05.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/reticles/icon_attachment_ar_tango21_reflex.vmt") +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/aimpoint_reticle.vmt"), + Size = 150, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} +ATTACHMENT.Bodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 1, + ["tag_rail"] = 1, + ["sight"] = 1 +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barhvy.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barhvy.lua new file mode 100644 index 0000000..678bbed --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barhvy.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "22\" FSS M59/66" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_barhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_barhvy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.08 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.08 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.89 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barlong.lua new file mode 100644 index 0000000..7ba122b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barlong.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FTAC Landmark" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.04 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.96 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.96 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barrel.lua new file mode 100644 index 0000000..4494a60 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barshort.lua new file mode 100644 index 0000000..ac30b07 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/barrels/attachment_vm_sn_sksierra_barshort.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "16\" FSS Para" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.05 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_angledgrip01.lua new file mode 100644 index 0000000..b32422c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_angledgrip01.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_angledgrip02.lua new file mode 100644 index 0000000..fdec252 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_angledgrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_bipodgrip.lua new file mode 100644 index 0000000..9c9abda --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_bipodgrip.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_stubbygrip01.lua new file mode 100644 index 0000000..867b849 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_stubbygrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_stubbygrip02.lua new file mode 100644 index 0000000..7a7d7a1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_stubbygrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip01.lua new file mode 100644 index 0000000..737ba5d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip02.lua new file mode 100644 index 0000000..6cedc97 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip03.lua new file mode 100644 index 0000000..0e6af9b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/grips/attachment_vm_sn_sksierra_vertgrip03.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups = { + ["ub_rail"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser01.lua new file mode 100644 index 0000000..9c8de91 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser02.lua new file mode 100644 index 0000000..f82bbd5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser03.lua new file mode 100644 index 0000000..1d81bcc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/lasers/attachment_vm_sn_sksierra_laser03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.BonemergeToCategory = {"Barrels"} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_mag.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_mag.lua new file mode 100644 index 0000000..1c9ae12 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_mag.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_mag.mdl") + +ATTACHMENT.BulletList = { + [1] = {"j_bullet01"}, + [2] = {"j_bullet02"}, + [3] = {"j_bullet03"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_smag.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_smag.lua new file mode 100644 index 0000000..f967047 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_smag.lua @@ -0,0 +1,26 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "10 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_smag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_smag.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_bullet01"}, + [2] = {"j_bullet02"}, + [3] = {"j_bullet03"}, +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Smag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Smag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.04 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.04 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.1 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.1 + weapon.Primary.ClipSize = 10 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_xmag.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_xmag.lua new file mode 100644 index 0000000..c80dad6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/mags/attachment_vm_sn_sksierra_xmag.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "30 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_xmag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_xmag.vmt") + +ATTACHMENT.BulletList = { + [1] = {"j_bullet01"}, + [2] = {"j_bullet02"}, + [3] = {"j_bullet03"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.89 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 + weapon.Primary.ClipSize = 30 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/perks/attachment_vm_sn_sksierra_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/perks/attachment_vm_sn_sksierra_perk_soh.lua new file mode 100644 index 0000000..b9ed9c8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/perks/attachment_vm_sn_sksierra_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Reload_Smag = weapon.Animations.Reload_Smag_Fast + weapon.Animations.Reload_Empty_Smag = weapon.Animations.Reload_Empty_Smag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/sights/attachment_vm_sn_sksierra_scope.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/sights/attachment_vm_sn_sksierra_scope.lua new file mode 100644 index 0000000..67161cf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/sights/attachment_vm_sn_sksierra_scope.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_optic_4x" +ATTACHMENT.Name = "PU Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_scope.vmt") +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_scope_hide.mdl"), + LensHideMaterial = Material("viper/mw/weapons/sksierra/weapon_vm_sn_sksierra_scopelens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 750, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_16.vmt"), + Size = 600, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/sights/attachment_vm_sn_sksierra_sight.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/sights/attachment_vm_sn_sksierra_sight.lua new file mode 100644 index 0000000..e13c7c7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/sights/attachment_vm_sn_sksierra_sight.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_sight" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.ViewModelOffsets.Aim.Pos.y = 8 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stock.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stock.lua new file mode 100644 index 0000000..d92ec0d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockhvy.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockhvy.lua new file mode 100644 index 0000000..4d35de2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockhvy.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Hunter-Scout" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_stockhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_stockhvy.vmt") +-- ATTACHMENT.Bodygroups = { +-- ["tag_stock"] = 1 +-- } +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.92 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.92 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.92 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.92 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockhvy2.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockhvy2.lua new file mode 100644 index 0000000..7573f96 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockhvy2.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "SKS Rifle Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_stockhvy2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_stockhvy2.vmt") +-- ATTACHMENT.Bodygroups = { +-- ["tag_stock"] = 1 +-- } + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.85 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.85 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.94 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.94 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_stockhvy_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockno.lua new file mode 100644 index 0000000..b142ca9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/sksierra/stock/attachment_vm_sn_sksierra_stockno.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_stock_no" +ATTACHMENT.Name = "Sawed-off Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/sksierra/attachment_vm_sn_sksierra_stockno.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/sksierra/icon_attachment_sn_sksierra_stockno.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter2("grip_stockhvy_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barhvy.lua b/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barhvy.lua new file mode 100644 index 0000000..cc6ae2d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barhvy.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "26.0\" RAAL ArcForge" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_barhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_barhvy.vmt") +ATTACHMENT.Bodygroups = { + ["tag_barrel_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.89 + weapon.Cone.Hip = weapon.Cone.Hip * 0.82 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.9 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.9 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barlight.lua b/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barlight.lua new file mode 100644 index 0000000..5b160df --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barlight.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "25.0\" RAAL Tri-fold Lite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_barlight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_barlight.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.06 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.06 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.08 + weapon.Cone.Hip = weapon.Cone.Hip * 1.1 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.96 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.96 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barlong.lua new file mode 100644 index 0000000..f2da697 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barlong.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "32.0\" RAAL Line Breaker" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.13 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.13 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.8 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.8 + weapon.Cone.Hip = weapon.Cone.Hip * 0.75 + weapon.Recoil.DecreaseEveryShot = weapon.Recoil.DecreaseEveryShot * 1.2 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barrel.lua new file mode 100644 index 0000000..d9a18de --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/barrels/attachment_vm_lm_slima_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_bipod.lua b/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_bipod.lua new file mode 100644 index 0000000..3c220bb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_bipod.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Bipod" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_bipod.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_bipod.vmt") +ATTACHMENT.Bipod = true + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside.lua b/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside.lua new file mode 100644 index 0000000..86d30b8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Name = "FSS Clinch" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_gripside.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_gripside.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_sidegrip_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside02.lua b/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside02.lua new file mode 100644 index 0000000..4d942ab --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside02.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Name = "PMC Grip" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_gripside02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_gripside02.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_sidegrip_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside03.lua b/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside03.lua new file mode 100644 index 0000000..bc3ac67 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/grips/attachment_vm_lm_slima_gripside03.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Name = "FSS Oblique" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_gripside03.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_gripside03.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_sidegrip_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser01.lua new file mode 100644 index 0000000..b1712b3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 0, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser02.lua new file mode 100644 index 0000000..4bd1592 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 0, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser03.lua new file mode 100644 index 0000000..a3889f5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/lasers/attachment_vm_lm_slima_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -15) + weapon.LaserAimPos = Vector(-1, 0, -2) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_mag.lua b/lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_mag.lua new file mode 100644 index 0000000..d48e46d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_mag.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_mag.mdl") + +--round, bone name +--im aware its the other way around but the reloads switch mags + + +--Current mag +ATTACHMENT.BulletList = { + [12] = {"j_bullet13"}, + [11] = {"j_bullet12"}, + [10] = {"j_bullet11"}, + [9] = {"j_bullet10"}, + [8] = {"j_bullet9"}, + [7] = {"j_bullet8"}, + [6] = {"j_bullet7"}, + [5] = {"j_bullet6"}, + [4] = {"j_bullet5"}, + [3] = {"j_bullet4"}, + [2] = {"j_bullet3"}, + [1] = {"j_bullet2"}, + [0] = {"j_bullet1"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_smag.lua b/lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_smag.lua new file mode 100644 index 0000000..fa90398 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_smag.lua @@ -0,0 +1,35 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Belts" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_smag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_smag.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [12] = {"j_bullet13"}, + [11] = {"j_bullet12"}, + [10] = {"j_bullet11"}, + [9] = {"j_bullet10"}, + [8] = {"j_bullet9"}, + [7] = {"j_bullet8"}, + [6] = {"j_bullet7"}, + [5] = {"j_bullet6"}, + [4] = {"j_bullet5"}, + [3] = {"j_bullet4"}, + [2] = {"j_bullet3"}, + [1] = {"j_bullet2"}, + [0] = {"j_bullet1"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Primary.ClipSize = 50 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.14 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.14 + weapon.Animations.Reload = weapon.Animations.Reload_smag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_smag + weapon.Animations.Inspect = weapon.Animations.Inspect_smag +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_xmags.lua new file mode 100644 index 0000000..f3f774b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/mags/attachment_vm_lm_slima_xmags.lua @@ -0,0 +1,35 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "150 Round Belt" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_xmags.vmt") + +--Current mag +ATTACHMENT.BulletList = { + [12] = {"j_bullet13"}, + [11] = {"j_bullet12"}, + [10] = {"j_bullet11"}, + [9] = {"j_bullet10"}, + [8] = {"j_bullet9"}, + [7] = {"j_bullet8"}, + [6] = {"j_bullet7"}, + [5] = {"j_bullet6"}, + [4] = {"j_bullet5"}, + [3] = {"j_bullet4"}, + [2] = {"j_bullet3"}, + [1] = {"j_bullet2"}, + [0] = {"j_bullet1"}, +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Primary.ClipSize = 150 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.85 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.85 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.81 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.81 + weapon.Animations.Reload = weapon.Animations.Reload_xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_xmag + weapon.Animations.Inspect = weapon.Animations.Inspect_xmag +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/perks/attachment_vm_lm_slima_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/slima/perks/attachment_vm_lm_slima_perk_soh.lua new file mode 100644 index 0000000..fc419c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/perks/attachment_vm_lm_slima_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_empty_fast + weapon.Animations.Reload_xmag = weapon.Animations.Reload_fast_xmag + weapon.Animations.Reload_Empty_xmag = weapon.Animations.Reload_empty_fast_xmag + weapon.Animations.Reload_smag = weapon.Animations.Reload_fast_smag + weapon.Animations.Reload_Empty_smag = weapon.Animations.Reload_empty_fast_smag +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stock.lua b/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stock.lua new file mode 100644 index 0000000..1453820 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockh.lua new file mode 100644 index 0000000..14329a2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockh.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_stock_heavy01" +ATTACHMENT.Name = "SA Sandpiper Pro" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_stockh.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockl.lua new file mode 100644 index 0000000..7a11311 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockl.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_stock_light01" +ATTACHMENT.Name = "SA Elevate" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_stockl.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockno.lua new file mode 100644 index 0000000..d8295d5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stockno.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_stock_no" +ATTACHMENT.Name = "Folded Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_stockno.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_stockno.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stocks.lua new file mode 100644 index 0000000..58ce3f5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/slima/stock/attachment_vm_lm_slima_stocks.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_stock_heavy02" +ATTACHMENT.Name = "FSS Resistor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/slima/attachment_vm_lm_slima_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/slima/icon_attachment_lm_slima_stocks.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barlong.lua new file mode 100644 index 0000000..7bb6389 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barlong.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "400mm Stainless Steel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.13 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.13 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.93 + weapon.Cone.Hip = weapon.Cone.Hip * 0.8 + weapon.Cone.Increase = weapon.Cone.Increase * 0.8 + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barmid.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barmid.lua new file mode 100644 index 0000000..e3762d0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barmid.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "300mm Poly Barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_barmid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_barmid.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.07 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barrel.lua new file mode 100644 index 0000000..fd76c0f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45//attachment_vm_sm_smgolf45_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barshort.lua new file mode 100644 index 0000000..2f46136 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/barrels/attachment_vm_sm_smgolf45_barshort.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "150mm Stainless Steel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_barrel.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.95 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.95 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.03 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.03 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_angledgrip01.lua new file mode 100644 index 0000000..b686aa1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_angledgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_angledgrip02.lua new file mode 100644 index 0000000..ab538c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_angledgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_bipodgrip.lua new file mode 100644 index 0000000..a6c4925 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_bipodgrip.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_killtheclamp.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_killtheclamp.lua new file mode 100644 index 0000000..44ed2c6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_killtheclamp.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_grip" +ATTACHMENT.Name = "Kill The Clamp" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_killtheclamp_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_stubbygrip01.lua new file mode 100644 index 0000000..73ff6f7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_stubbygrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +weapon:SetGripPoseParameter("grip_vertpro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_stubbygrip02.lua new file mode 100644 index 0000000..9af141b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_stubbygrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vertpro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip01.lua new file mode 100644 index 0000000..4306c6c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip02.lua new file mode 100644 index 0000000..74e7cae --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip03.lua new file mode 100644 index 0000000..21a2179 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/grips/attachment_vm_sm_smgolf45_vertgrip03.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser01.lua new file mode 100644 index 0000000..ec2e5bf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser02.lua new file mode 100644 index 0000000..2a6b1ca --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser03.lua new file mode 100644 index 0000000..819d324 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/lasers/attachment_vm_sm_smgolf45_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_mag.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_mag.lua new file mode 100644 index 0000000..9cef1b5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_mag.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_mag.mdl") + + +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_mag_v2.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_mag_v2.lua new file mode 100644 index 0000000..13b8420 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_mag_v2.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "UMP-45 Magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_mag_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_mag_v2.vmt") +ATTACHMENT.CosmeticChange = true +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_smags.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_smags.lua new file mode 100644 index 0000000..7479116 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_smags.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = ".45 Hollow Point 12-R Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_smags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_smags.vmt") + +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.RPM = weapon.Primary.RPM - 19 + weapon.Primary.ClipSize = 12 + weapon.Animations.Reload = weapon.Animations.Reload_Smag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Smag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.14 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.14 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.25 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.25 + --weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + --weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.15 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.35 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_xmagslrg.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_xmagslrg.lua new file mode 100644 index 0000000..24a1447 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/mags/attachment_vm_sm_smgolf45_xmagslrg.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "45 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_xmagslrg.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_xmagslrg.vmt") + +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 45 + weapon.Animations.Reload = weapon.Animations.Reload_Xmaglrg + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmaglrg + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.98 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/perks/attachment_vm_sm_smgolf45_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/perks/attachment_vm_sm_smgolf45_perk_soh.lua new file mode 100644 index 0000000..e7d2087 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/perks/attachment_vm_sm_smgolf45_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Xmaglrg = weapon.Animations.Reload_Xmaglrg_Fast + weapon.Animations.Reload_Empty_Xmaglrg = weapon.Animations.Reload_Empty_Xmaglrg_Fast + weapon.Animations.Reload_Smag = weapon.Animations.Reload_Smag_Fast + weapon.Animations.Reload_Empty_Smag = weapon.Animations.Reload_Empty_Smag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/receivers/attachment_vm_sm_smgolf45_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/receivers/attachment_vm_sm_smgolf45_receiver.lua new file mode 100644 index 0000000..8777cbe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/receivers/attachment_vm_sm_smgolf45_receiver.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_receiver.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/receivers/attachment_vm_sm_smgolf45_receiver_v2.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/receivers/attachment_vm_sm_smgolf45_receiver_v2.lua new file mode 100644 index 0000000..f8cc66d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/receivers/attachment_vm_sm_smgolf45_receiver_v2.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Name = "UMP-45 Receiver" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_receiver_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_receiver_v2.vmt") +ATTACHMENT.CosmeticChange = true diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stock.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stock.lua new file mode 100644 index 0000000..eec10bc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stock_v2.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stock_v2.lua new file mode 100644 index 0000000..49c19ae --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stock_v2.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "UMP-45 Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_stock_v2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_stock_v2.vmt") +ATTACHMENT.CosmeticChange = true \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockcqb.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockcqb.lua new file mode 100644 index 0000000..06343c2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockcqb.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "XRK Gen III Survivalist Series" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_stockcqb.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_stockcqb.vmt") +-- ATTACHMENT.Bodygroups = { +-- ["tag_stock"] = 1 +-- } +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.05 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.05 + weapon.Animations.Sprint_Out.Fps = weapon.Animations.Sprint_Out.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockh.lua new file mode 100644 index 0000000..769bb66 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockh.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Precision Fixed Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_stockh.vmt") +-- ATTACHMENT.Bodygroups = { +-- ["tag_stock"] = 1 +-- } +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.93 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.74 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.74 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockl.lua new file mode 100644 index 0000000..48fdc69 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_smgolf45_stockl.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Guardian" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_stockl.vmt") +-- ATTACHMENT.Bodygroups = { +-- ["tag_stock"] = 1 +-- } +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.98 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.98 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.84 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.84 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_victor_stocksn.lua b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_victor_stocksn.lua new file mode 100644 index 0000000..ae725ae --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/smgolf45/stock/attachment_vm_sm_victor_stocksn.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "ZLR Blade" +ATTACHMENT.Model = Model("models/viper/mw/attachments/smgolf45/attachment_vm_sm_smgolf45_stocksn.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/smgolf45/icon_attachment_sm_smgolf45_stocksn.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_heavy01.lua b/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_heavy01.lua new file mode 100644 index 0000000..303c2b7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_heavy01.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC Stalker" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_stock_heavy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_medium01.vmt") +ATTACHMENT.Bodygroups ={ + + ["tag_stock"] = 1, + ["stock_hide"] = 1 + +} +ATTACHMENT.AttachmentBodygroups ={ + + ["tag_stock"] = 1, + ["stock_hide"] = 1 + +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.95 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.95 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.95 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_heavy02.lua b/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_heavy02.lua new file mode 100644 index 0000000..e144a3c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_heavy02.lua @@ -0,0 +1,29 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Hunter" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_stock_heavy02.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_heavy02.vmt") +ATTACHMENT.Bodygroups ={ + + ["tag_stock"] = 1, + ["stock_hide"] = 1 + +} +ATTACHMENT.AttachmentBodygroups ={ + + ["tag_stock"] = 1, + ["stock_hide"] = 1 + +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.86 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.86 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.91 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.91 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.85 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.85 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.85 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.85 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_light01.lua b/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_light01.lua new file mode 100644 index 0000000..8e00dc0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_light01.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FORGE TAC Ultralight" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_stock_light01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_light01.vmt") +ATTACHMENT.Bodygroups ={ + + ["tag_stock"] = 1, + ["stock_hide"] = 1 + +} +ATTACHMENT.AttachmentBodygroups ={ + + ["tag_stock"] = 1, + ["stock_hide"] = 1 + +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.1 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.1 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.1 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_medium01.lua b/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_medium01.lua new file mode 100644 index 0000000..85bcc35 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_medium01.lua @@ -0,0 +1,27 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Close Quarters Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_stock_medium01.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_medium01.vmt") +ATTACHMENT.Bodygroups ={ + + ["tag_stock"] = 1, + ["stock_hide"] = 1 + +} +ATTACHMENT.AttachmentBodygroups ={ + + ["tag_stock"] = 1, + ["stock_hide"] = 1 + +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.09 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.09 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.05 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.05 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.05 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_no.lua b/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_no.lua new file mode 100644 index 0000000..c429b66 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/stocks/att_vm_stock_no.lua @@ -0,0 +1,30 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "No Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/attachment_vm_stock_no.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/stock/icon_attachment_stock_no.vmt") +ATTACHMENT.Bodygroups ={ + + ["tag_stock"] = 1, + ["stock_hide"] = 1 + +} +ATTACHMENT.AttachmentBodygroups ={ + + ["tag_stock"] = 1, + ["stock_hide"] = 1 + +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = 0.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.5 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.5 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.5 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.5 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.25 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.25 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.25 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.25 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel.lua new file mode 100644 index 0000000..b176fcc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_barrel.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_long.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_long.lua new file mode 100644 index 0000000..0c10783 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_long.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS Ranger" +ATTACHMENT.Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_barrel_long.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_barrel_long.vmt") +ATTACHMENT.Bodygroups = { + ["tag_barrel_hide"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["tag_barrel_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Cone.Hip = weapon.Cone.Hip * 0.9 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.06 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.06 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_med.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_med.lua new file mode 100644 index 0000000..aabdc80 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_med.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Eclipse" +ATTACHMENT.Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_barrel_med.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_barrel_med.vmt") +ATTACHMENT.Bodygroups = { + ["tag_barrel_hide"] = 1 +} +ATTACHMENT.AttachmentBodygroups = { + ["tag_barrel_hide"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.03 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.03 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_short.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_short.lua new file mode 100644 index 0000000..c4dfbd5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/barrels/attachment_vm_ar_tango21_barrel_short.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FTAC 13.5 Compact" +ATTACHMENT.Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_barrel_short.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_barrel_short.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.92 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.92 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_angledgrip01.lua new file mode 100644 index 0000000..621dc55 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_angledgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_angledgrip02.lua new file mode 100644 index 0000000..3cfc68a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_angledgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_bipodgrip.lua new file mode 100644 index 0000000..00a82f5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_bipodgrip.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_stubbygrip01.lua new file mode 100644 index 0000000..687a7ba --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_stubbygrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_stubbygrip02.lua new file mode 100644 index 0000000..82ebf7f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_stubbygrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip01.lua new file mode 100644 index 0000000..ca9451e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip02.lua new file mode 100644 index 0000000..8fe85fd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip03.lua new file mode 100644 index 0000000..9296515 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/grips/attachment_vm_ar_tango21_vertgrip03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser01.lua new file mode 100644 index 0000000..fb65265 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser02.lua new file mode 100644 index 0000000..838537f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser03.lua new file mode 100644 index 0000000..1ee03f0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/lasers/attachment_vm_ar_tango21_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_drummag.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_drummag.lua new file mode 100644 index 0000000..ee7c8d5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_drummag.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "60 Round 9mm Drum" +ATTACHMENT.Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_drummag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_drummag.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 60 + weapon.Primary.RPM = 1000 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 0.85 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 0.85 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.5 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.5 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.5 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.5 + weapon.Animations.Reload = weapon.Animations.reload_drum + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_drum + weapon.Animations.Reload_Fast = weapon.Animations.reload_drum_fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_drum_fast + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.6 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.6 + weapon:doCalConversionStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_mag.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_mag.lua new file mode 100644 index 0000000..80cc6ba --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_xmags.lua new file mode 100644 index 0000000..06b9a96 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/mags/attachment_vm_ar_tango21_xmags.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_xmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Reload = weapon.Animations.reload_xmag + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_xmag + weapon.Animations.Reload_Fast = weapon.Animations.reload_xmag_fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_xmag_fast + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/perks/attachment_vm_ar_tango21_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/perks/attachment_vm_ar_tango21_perk_soh.lua new file mode 100644 index 0000000..8e24df2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/perks/attachment_vm_ar_tango21_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.reload_drum = weapon.Animations.reload_drum_fast + weapon.Animations.reload_empty_drum = weapon.Animations.reload_empty_drum_fast + weapon.Animations.reload_xmag = weapon.Animations.reload_xmag_fast + weapon.Animations.reload_empty_xmag = weapon.Animations.reload_empty_xmag_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock.lua new file mode 100644 index 0000000..8bac88e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_stock.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_heavy.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_heavy.lua new file mode 100644 index 0000000..9fe00a5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_heavy.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "XRK Close Quarters Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_stock_heavy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_stock_heavy.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.15 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_light.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_light.lua new file mode 100644 index 0000000..871e98e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_light.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "XRK Ultralight Hollow" +ATTACHMENT.Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_stock_light.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_stock_light.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.95 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.95 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.07 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.07 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_tactical.lua b/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_tactical.lua new file mode 100644 index 0000000..e31ed25 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/tango21/stock/attachment_vm_ar_tango21_stock_tactical.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC Equilibrium" +ATTACHMENT.Model = Model("models/viper/mw/attachments/tango21/attachment_vm_ar_tango21_stock_tactical.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/tango21/icon_attachment_ar_tango21_stock_tactical.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.06 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.06 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.9 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barcust.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barcust.lua new file mode 100644 index 0000000..c366be7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barcust.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FSS Carbine Pro" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_barcust.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_barrel_v13.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.12 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.12 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.94 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.94 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barlong.lua new file mode 100644 index 0000000..960acf6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barlong.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "16.5 Factory Carbine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_barlong.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.07 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.07 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.96 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.96 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barmid.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barmid.lua new file mode 100644 index 0000000..ac3b2f4 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barmid.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "13.1 First Responder" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_barmid.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_barmid.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.04 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.04 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.99 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.99 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barrel.lua new file mode 100644 index 0000000..8cee975 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_barrel.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barshort.lua new file mode 100644 index 0000000..7a8fbeb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/barrels/attachment_vm_sm_uzulu_barshort.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "8.5 Factory Mini" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_barshort.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.92 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.92 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_angledgrip01.lua new file mode 100644 index 0000000..052cbdb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_angledgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_angledgrip02.lua new file mode 100644 index 0000000..d008f5d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_angledgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_bipodgrip.lua new file mode 100644 index 0000000..b17ab7c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_bipodgrip.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_stubbygrip01.lua new file mode 100644 index 0000000..7fd2cf1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_stubbygrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_stubbygrip02.lua new file mode 100644 index 0000000..7519dd5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_stubbygrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip01.lua new file mode 100644 index 0000000..d8d5a53 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip02.lua new file mode 100644 index 0000000..d7c2f00 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip03.lua new file mode 100644 index 0000000..9cc91c2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/grips/attachment_vm_sm_uzulu_vertgrip03.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.AttachmentBodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser01.lua new file mode 100644 index 0000000..9e88f1b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser01.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1, +} +ATTACHMENT.Bodygroups ={ + ["laser"] = 1, +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser02.lua new file mode 100644 index 0000000..8614b91 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser02.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1, +} +ATTACHMENT.Bodygroups ={ + ["laser"] = 1, +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser03.lua new file mode 100644 index 0000000..9b26feb --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/lasers/attachment_vm_sm_uzulu_laser03.lua @@ -0,0 +1,13 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1, +} +ATTACHMENT.Bodygroups ={ + ["laser"] = 1, +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_mag.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_mag.lua new file mode 100644 index 0000000..4d2858d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_magcalcust.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_magcalcust.lua new file mode 100644 index 0000000..de53f13 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_magcalcust.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = ".41 AE 32-Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_magcalcust.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_mag_clip.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.15 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.15 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.15 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.15 + weapon.Primary.ClipSize = 32 + weapon.Primary.RPM = weapon.Primary.RPM*0.84 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_magcalcust9mm.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_magcalcust9mm.lua new file mode 100644 index 0000000..f4f143c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_magcalcust9mm.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "9x19mm 32-Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_mag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_mag.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 0.89 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 0.99 + weapon.Primary.ClipSize = 32 + weapon.Primary.RPM = weapon.Primary.RPM*1.6 + weapon:doCalConversionStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_xmag2.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_xmag2.lua new file mode 100644 index 0000000..979b016 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_xmag2.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "50 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_xmag2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_xmag2.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 50 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_xmags.lua new file mode 100644 index 0000000..2d220cc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/mags/attachment_vm_sm_uzulu_xmags.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "40 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_xmags.vmt") + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 40 + weapon.Animations.Reload = weapon.Animations.Reload_Xmag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Xmag + weapon.Animations.Reload_Fast = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.Reload_Empty_Xmag_Fast + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.93 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.93 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.97 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.97 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.95 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/muzzles/attachment_vm_sm_uzulu_suppressor.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/muzzles/attachment_vm_sm_uzulu_suppressor.lua new file mode 100644 index 0000000..1b917a9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/muzzles/attachment_vm_sm_uzulu_suppressor.lua @@ -0,0 +1,5 @@ +ATTACHMENT.Base = "att_vm_silencer04" +ATTACHMENT.Name = "Monolithic Suppressor" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_suppressor.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_suppressor.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/perks/attachment_vm_sm_uzulu_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/perks/attachment_vm_sm_uzulu_perk_soh.lua new file mode 100644 index 0000000..30ac956 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/perks/attachment_vm_sm_uzulu_perk_soh.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Empty_Scope = weapon.Animations.Reload_Empty_Fast_Scope + weapon.Animations.Reload_XmagLrg = weapon.Animations.Reload_XmagLrg_Fast + weapon.Animations.Reload_Empty_XmagLrg = weapon.Animations.Reload_Empty_XmagLrg_Fast + weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast + weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/receivers/attachment_vm_sm_uzulu_receiver.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/receivers/attachment_vm_sm_uzulu_receiver.lua new file mode 100644 index 0000000..0791a4c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/receivers/attachment_vm_sm_uzulu_receiver.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_receiver" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_receiver.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_heavy01.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_heavy01.lua new file mode 100644 index 0000000..a2721f8 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_heavy01.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_vm_stock_heavy01" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Equip = weapon.Animations.Equip_No_Stock +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_heavy02.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_heavy02.lua new file mode 100644 index 0000000..abc1ccc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_heavy02.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_vm_stock_heavy02" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Equip = weapon.Animations.Equip_No_Stock +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_light01.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_light01.lua new file mode 100644 index 0000000..fc20a22 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_light01.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_vm_stock_light01" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Equip = weapon.Animations.Equip_No_Stock +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_medium01.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_medium01.lua new file mode 100644 index 0000000..50c1d61 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_medium01.lua @@ -0,0 +1,6 @@ +ATTACHMENT.Base = "att_vm_stock_medium01" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Equip = weapon.Animations.Equip_No_Stock +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_no.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_no.lua new file mode 100644 index 0000000..2db3af3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/att_vm_uzulu_stock_no.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stock_no" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Equip = weapon.Animations.Equip_No_Stock +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stock.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stock.lua new file mode 100644 index 0000000..8b72b91 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stock_folded.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stock_folded.lua new file mode 100644 index 0000000..388a110 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stock_folded.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Folded Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_stock_folded.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_stock.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.25 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.25 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 2 + weapon.Animations.Equip = weapon.Animations.Equip_No_Stock +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stockh.lua new file mode 100644 index 0000000..f96e62b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/uzulu/stock/attachment_vm_sm_uzulu_stockh.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Standard-Issue Wood Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/uzulu/attachment_vm_sm_uzulu_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/uzulu/icon_attachment_sm_uzulu_stockh.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.82 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.82 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Recoil.AdsMultiplier = 0 + weapon.Animations.Equip = weapon.Animations.Equip_No_Stock +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barhvy.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barhvy.lua new file mode 100644 index 0000000..5043736 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barhvy.lua @@ -0,0 +1,19 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "VLK 200mm Osa" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_barhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_barhvy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.1 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.1 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.08 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_barheavy_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barlight.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barlight.lua new file mode 100644 index 0000000..744715f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barlight.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "VLK 105mm Sova" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_barlight.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_barlight.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.12 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.12 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.13 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.13 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.125 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.95 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.95 +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_barlight_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barrel.lua new file mode 100644 index 0000000..7dbaf07 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barshort.lua new file mode 100644 index 0000000..a6ced15 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/barrels/attachment_vm_ar_valpha_barshort.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "Stovl SOF" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.17 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.17 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.125 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 0.9 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 0.9 + weapon.PrintName = "SR-3 Vikhr" +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_barshort_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_angledgrip01.lua new file mode 100644 index 0000000..d9701b1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_angledgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_angledgrip02.lua new file mode 100644 index 0000000..25ceb70 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_angledgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_bipodgrip.lua new file mode 100644 index 0000000..9aac9d2 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_bipodgrip.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_stubbygrip01.lua new file mode 100644 index 0000000..2fdab1f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_stubbygrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_stubbygrip02.lua new file mode 100644 index 0000000..45f366c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_stubbygrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip01.lua new file mode 100644 index 0000000..f9faa0f --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip01.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip02.lua new file mode 100644 index 0000000..fba7d48 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip02.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip03.lua new file mode 100644 index 0000000..7042e81 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/grips/attachment_vm_ar_valpha_vertgrip03.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser01.lua new file mode 100644 index 0000000..c0b96fa --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser01.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Barrels"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser02.lua new file mode 100644 index 0000000..e4d28bc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser02.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Barrels"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser03.lua new file mode 100644 index 0000000..c2e1094 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/lasers/attachment_vm_ar_valpha_laser03.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.AttachmentBodygroups ={ + ["laser"] = 1 +} +ATTACHMENT.BonemergeToCategory = {"Barrels"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_mag.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_mag.lua new file mode 100644 index 0000000..0d3cebe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_smags.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_smags.lua new file mode 100644 index 0000000..9bf0dbd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_smags.lua @@ -0,0 +1,28 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "SPP 10-R Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_smags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_smags.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 10 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.33 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.33 + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.25 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.25 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.07 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.07 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.12 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.12 + weapon.Animations.Reload = weapon.Animations.reload_smag + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_smag + weapon.Animations.Reload_Fast = weapon.Animations.reload_smag_fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_smag_fast + weapon.Animations.Inspect = weapon.Animations.inspect_smag +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_magwell_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_xmags.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_xmags.lua new file mode 100644 index 0000000..0127c43 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/mags/attachment_vm_ar_valpha_xmags.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "30 Round Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_xmags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_xmags.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 30 + weapon.Animations.Reload = weapon.Animations.reload_xmag + weapon.Animations.Reload_Empty = weapon.Animations.reload_empty_xmag + weapon.Animations.Reload_Fast = weapon.Animations.reload_xmag_fast + weapon.Animations.Reload_Empty_Fast = weapon.Animations.reload_empty_xmag_fast + weapon.Animations.Inspect = weapon.Animations.inspect_xmag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.95 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/perks/attachment_vm_ar_valpha_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/perks/attachment_vm_ar_valpha_perk_soh.lua new file mode 100644 index 0000000..0c14893 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/perks/attachment_vm_ar_valpha_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.reload_smag = weapon.Animations.reload_smag_fast + weapon.Animations.reload_empty_smag = weapon.Animations.reload_empty_smag_fast + weapon.Animations.reload_xmag = weapon.Animations.reload_xmag_fast + weapon.Animations.reload_empty_xmag = weapon.Animations.reload_empty_xmag_fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/sights/attachment_vm_ar_valpha_scope.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/sights/attachment_vm_ar_valpha_scope.lua new file mode 100644 index 0000000..c13432c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/sights/attachment_vm_ar_valpha_scope.lua @@ -0,0 +1,25 @@ +ATTACHMENT.Base = "att_optic_10x" +ATTACHMENT.Name = "Dragunov Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_scope.vmt") + +ATTACHMENT.Bodygroups = { + ["tag_sight"] = 2 +} +ATTACHMENT.AttachmentBodygroups ={ + ["tag_sight"] = 2 +} +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_scope_lens_hide.mdl"), + LensHideMaterial = Material("viper/MW/weapons/valpha/weapon_vm_sn_delta_scope_lens.vmt"), + LensBodygroup = "lens", + FOV = 5, + ParallaxSize = 700, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} +ATTACHMENT.Reticle = { + Material = Material("viper/shared/reticles/po4x_crosshair_remake"), + Size = 2500, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stock.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stock.lua new file mode 100644 index 0000000..0d0b90b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stock.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_stock.mdl") + diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stockh.lua new file mode 100644 index 0000000..11626e1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stockh.lua @@ -0,0 +1,20 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "VLK Vintazh" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_stockh.vmt") +ATTACHMENT.Bodygroups = { + ["tag_grip"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.88 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.88 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.91 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.91 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.91 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.91 + if (weapon:HasAttachment("attachment_vm_ar_valpha_smags")) then + weapon.PrintName = "VSS Vintorez" + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stocks.lua new file mode 100644 index 0000000..e1a700c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stocks.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FSS Intl. Gen 4 GRU" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_stocks.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.09 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.09 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.05 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.05 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.05 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stockskel.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stockskel.lua new file mode 100644 index 0000000..25e755d --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stockskel.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Stovl 6P30 Skelet" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_stockskel.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_stockskel.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.13 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.13 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.08 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.08 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.11 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.11 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.11 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.11 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stocksn.lua b/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stocksn.lua new file mode 100644 index 0000000..24a44df --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/valpha/stock/attachment_vm_ar_valpha_stocksn.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "VLK Strelok" +ATTACHMENT.Model = Model("models/viper/mw/attachments/valpha/attachment_vm_ar_valpha_stocksn.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/valpha/icon_attachment_ar_valpha_stocksn.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.84 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.84 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.82 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.82 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.83 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.83 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.83 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.83 + weapon.PrintName = "VSSM" +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barlong.lua new file mode 100644 index 0000000..ba8d4c1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barlong.lua @@ -0,0 +1,21 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "ZLR 16 Apex" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_barlong.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.12 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.12 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + -- weapon:SetGripPoseParameter("grip_smg_pose_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barrel.lua new file mode 100644 index 0000000..9e03b3a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barsil.lua b/lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barsil.lua new file mode 100644 index 0000000..27b4ce0 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/barrels/attachment_vm_sm_victor_barsil.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "ZLR 18 Deadfall" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_barsil.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_barsil.vmt") +ATTACHMENT.ExcludedCategories = {"Muzzle Devices"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.14 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.14 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.92 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Cone.Hip = weapon.Cone.Hip * 0.75 + weapon.Cone.Increase = weapon.Cone.Increase * 0.75 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_angledgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_angledgrip01.lua new file mode 100644 index 0000000..b686aa1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_angledgrip01.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_vm_angledgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_angledgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_angledgrip02.lua new file mode 100644 index 0000000..ab538c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_angledgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_angledgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_ang_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_bipodgrip.lua b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_bipodgrip.lua new file mode 100644 index 0000000..a6c4925 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_bipodgrip.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_bipodgrip" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_stubbygrip01.lua b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_stubbygrip01.lua new file mode 100644 index 0000000..73ff6f7 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_stubbygrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +weapon:SetGripPoseParameter("grip_vertpro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_stubbygrip02.lua b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_stubbygrip02.lua new file mode 100644 index 0000000..9af141b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_stubbygrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_stubbygrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vertpro_offset") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip01.lua b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip01.lua new file mode 100644 index 0000000..4306c6c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip01.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip01" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip02.lua b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip02.lua new file mode 100644 index 0000000..74e7cae --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip02.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip02" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip03.lua b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip03.lua new file mode 100644 index 0000000..21a2179 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/grips/attachment_vm_sm_victor_vertgrip03.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_vm_vertgrip03" +ATTACHMENT.Bodygroups = { + ["tag_grip_hide"] = 1, + ["tag_grip_attach"] = 1 +} + + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) +end + +function ATTACHMENT:PostProcess(weapon) + BaseClass.PostProcess(self, weapon) + weapon:SetGripPoseParameter("grip_vert_offset") + +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser01.lua new file mode 100644 index 0000000..bd8c142 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser01.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser02.lua new file mode 100644 index 0000000..7320dce --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser02.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser03.lua new file mode 100644 index 0000000..c81929b --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/lasers/attachment_vm_sm_victor_laser03.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["tag_laser"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.LaserAimAngles = Angle(-0.3, 0.05, -45) + weapon.LaserAimPos = Vector(-2, 0, 0) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_drummag.lua b/lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_drummag.lua new file mode 100644 index 0000000..0e691a6 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_drummag.lua @@ -0,0 +1,23 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "40 Round Drums" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_drummag.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_drummag.vmt") + +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, + [1] = {"j_bullet2"}, + [2] = {"j_bullet3"}, +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.ClipSize = 40 + weapon.Animations.Reload = weapon.Animations.Reload_Drum + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Drum + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.89 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.89 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 0.9 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 0.9 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_mag.lua b/lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_mag.lua new file mode 100644 index 0000000..ba70f2a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_mag.lua @@ -0,0 +1,8 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_mag.mdl") + +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, + [1] = {"j_bullet2"}, + [2] = {"j_bullet3"}, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_smags.lua b/lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_smags.lua new file mode 100644 index 0000000..7d2b787 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/mags/attachment_vm_sm_victor_smags.lua @@ -0,0 +1,30 @@ +ATTACHMENT.Base = "att_magazine" +ATTACHMENT.Name = "9mm Hollow Point 12-R Mags" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_smags.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_smags.vmt") + +ATTACHMENT.BulletList = { + [0] = {"j_bullet1"}, + [1] = {"j_bullet2"}, + [2] = {"j_bullet3"}, +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Primary.RPM = weapon.Primary.RPM - 511 + weapon.Primary.ClipSize = 12 + weapon.Animations.Reload = weapon.Animations.Reload_Smag + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Smag + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.15 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.15 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.7 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.7 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.7 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.7 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.2 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.1 + weapon.Animations.Reload.Fps = weapon.Animations.Reload.Fps * 1.1 + weapon.Animations.Reload_Empty.Fps = weapon.Animations.Reload_Empty.Fps * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/muzzles/attachment_vm_sm_victor_suppressor.lua b/lua/weapons/mg_base/modules/attachmentss/victor/muzzles/attachment_vm_sm_victor_suppressor.lua new file mode 100644 index 0000000..2a3ebfe --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/muzzles/attachment_vm_sm_victor_suppressor.lua @@ -0,0 +1,18 @@ +ATTACHMENT.Base = "att_muzzle" +ATTACHMENT.Name = "ZLR Sabre" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_suppressor.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_suppressor.vmt") +ATTACHMENT.BonemergeToCategory = {"Barrels"} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Bullet.EffectiveRange = weapon.Bullet.EffectiveRange * 1.08 + weapon.Bullet.DropOffStartRange = weapon.Bullet.DropOffStartRange * 1.08 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.95 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.95 + weapon:doSuppressorStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/perks/attachment_vm_sm_victor_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/victor/perks/attachment_vm_sm_victor_perk_soh.lua new file mode 100644 index 0000000..e810543 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/perks/attachment_vm_sm_victor_perk_soh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast + weapon.Animations.Reload_Drum = weapon.Animations.Reload_Drum_Fast + weapon.Animations.Reload_Empty_Drum = weapon.Animations.Reload_Empty_Drum_Fast + weapon.Animations.Reload_Smag = weapon.Animations.Reload_Smag_Fast + weapon.Animations.Reload_Empty_Smag = weapon.Animations.Reload_Empty_Smag_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stock.lua b/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stock.lua new file mode 100644 index 0000000..42bd4e1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_stock.mdl") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stockh.lua b/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stockh.lua new file mode 100644 index 0000000..2e1cae3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stockh.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "FTAC C6 Carbine PRO" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_stockh.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_stockh.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 0.95 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 0.95 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 0.95 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 0.95 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stockno.lua b/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stockno.lua new file mode 100644 index 0000000..34243d5 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stockno.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "No Stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_stockno.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_stockno.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.5 + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.26 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.26 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.26 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.26 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stocks.lua new file mode 100644 index 0000000..21932b9 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stocks.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "Forge TAC CQS" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_stocks.vmt") +ATTACHMENT.Bodygroups = { + ["tag_stock"] = 1 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.09 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.09 + weapon.Recoil.Vertical[1] = weapon.Recoil.Vertical[1] * 1.05 + weapon.Recoil.Vertical[2] = weapon.Recoil.Vertical[2] * 1.05 + weapon.Recoil.Horizontal[1] = weapon.Recoil.Horizontal[1] * 1.05 + weapon.Recoil.Horizontal[2] = weapon.Recoil.Horizontal[2] * 1.05 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stocksn.lua b/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stocksn.lua new file mode 100644 index 0000000..a283960 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/victor/stock/attachment_vm_sm_victor_stocksn.lua @@ -0,0 +1,14 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "ZLR Blade" +ATTACHMENT.Model = Model("models/viper/mw/attachments/victor/attachment_vm_sm_victor_stocksn.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/victor/icon_attachment_sm_victor_stocksn.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.95 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.95 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.85 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_bp.lua b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_bp.lua new file mode 100644 index 0000000..554e836 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_bp.lua @@ -0,0 +1,24 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "Black Powder Warheads" +ATTACHMENT.Category = "WARHEADS" +ATTACHMENT.Icon = Material("vgui/perkicons/warhead_icon") +ATTACHMENT.CustomText = "Explosions will ignite entities in an extended blast radius." +ATTACHMENT.CustomTextColor = Color(255,128,0) +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +ATTACHMENT.Bodygroups ={ + ["warhead"] = 1 +} + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Explosive.BlastRadius = weapon.Explosive.BlastRadius * 0.6 +end + +function ATTACHMENT:OnImpact(weapon, dmgInfo, tr) + for k,e in pairs(ents.FindInSphere(tr.HitPos, weapon.Explosive.BlastRadius * 1.8)) do --pretty high extra radius since the original is nerfed by the att + if e:IsLineOfSightClear(tr.HitPos) then + e:Ignite(6, 64) + end + end +end diff --git a/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_dh.lua b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_dh.lua new file mode 100644 index 0000000..d993c6a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_dh.lua @@ -0,0 +1,11 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "Impact Casings" +ATTACHMENT.Category = "WARHEADS" +ATTACHMENT.Icon = Material("vgui/perkicons/warhead_icon") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Explosive.BlastRadius = weapon.Explosive.BlastRadius * 0.7 + weapon.Explosive.ImpactBlastRatio = weapon.Explosive.ImpactBlastRatio * 0.8 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_fuel.lua b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_fuel.lua new file mode 100644 index 0000000..ff1a512 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_fuel.lua @@ -0,0 +1,16 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "High Fuel Warheads" +ATTACHMENT.Category = "WARHEADS" +ATTACHMENT.Icon = Material("vgui/perkicons/warhead_icon") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +ATTACHMENT.Bodygroups ={ + ["warhead"] = 2 +} +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Explosive.BlastRadius = weapon.Explosive.BlastRadius * 0.85 + weapon.Projectile.Fuel = weapon.Projectile.Fuel * 1.5 + weapon.Projectile.Speed = weapon.Projectile.Speed * 1.2 + weapon.Projectile.Stability = weapon.Projectile.Stability * 2 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_he.lua b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_he.lua new file mode 100644 index 0000000..f106ecf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_he.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "High Explosive Warheads" +ATTACHMENT.Category = "WARHEADS" +ATTACHMENT.Icon = Material("vgui/perkicons/warhead_icon") +ATTACHMENT.Bodygroups ={ + ["warhead"] = 3 +} +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Explosive.BlastRadius = weapon.Explosive.BlastRadius * 1.2 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] / 1.2 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] / 1.2 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_mas.lua b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_mas.lua new file mode 100644 index 0000000..1df1c31 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_mas.lua @@ -0,0 +1,10 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "Mobile Air-Strike" +ATTACHMENT.Category = "WARHEADS" +ATTACHMENT.Icon = Material("vgui/perkicons/warhead_icon") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Projectile.Class = "mg_javelin_airstrike_warhead" +end diff --git a/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_smart.lua b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_smart.lua new file mode 100644 index 0000000..7cbb39a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/warheads/att_warhead_smart.lua @@ -0,0 +1,12 @@ +ATTACHMENT.Base = "att_ammo" +ATTACHMENT.Name = "Smart Warheads" +ATTACHMENT.Category = "WARHEADS" +ATTACHMENT.Icon = Material("vgui/perkicons/warhead_icon") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Projectile.Speed = weapon.Projectile.Speed / 1.5 + weapon.TrackingInfo.PingTime = 0.2 + weapon.Projectile.TrackingFraction = weapon.Projectile.TrackingFraction * 1.5 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barhvy.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barhvy.lua new file mode 100644 index 0000000..14b0277 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barhvy.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Elite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_barhvy.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/xmike109/icon_attachment_sn_xmike109_barhvy.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.91 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.91 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.9 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.25 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barlong.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barlong.lua new file mode 100644 index 0000000..ba98a60 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barlong.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Precision 20.0\"" +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_barlong.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/xmike109/icon_attachment_sn_xmike109_barlong.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.9 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.9 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.92 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.92 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.8 + weapon.Recoil.Punch = weapon.Recoil.Punch * 0.8 + weapon.Cone.Hip = weapon.Cone.Hip * 0.85 + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 1.1 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 1.1 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barrel.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barrel.lua new file mode 100644 index 0000000..f3bb23a --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barrel.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_barrel.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barshort.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barshort.lua new file mode 100644 index 0000000..11d31a1 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/barrels/attachment_vm_sn_xmike109_barshort.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_barrel" +ATTACHMENT.Name = "FORGE TAC Elite" +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_barshort.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/xmike109/icon_attachment_sn_xmike109_barshort.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.15 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.15 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.2 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.2 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 0.78 + weapon.Cone.Hip = weapon.Cone.Hip * 1.15 +end diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser01.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser01.lua new file mode 100644 index 0000000..7bbc819 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser01.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser01_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser02.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser02.lua new file mode 100644 index 0000000..1996118 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser02.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser02_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser03.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser03.lua new file mode 100644 index 0000000..a7d7c01 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/lasers/attachment_vm_sn_xmike109_laser03.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_laser03_cylinder" +ATTACHMENT.Bodygroups ={ + ["laser"] = 1 +} diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_calcust1.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_calcust1.lua new file mode 100644 index 0000000..1061890 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_calcust1.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_ammo_he" +ATTACHMENT.Name = "Explosive Rounds" +ATTACHMENT.Particle = "smoke_explosion_he" +ATTACHMENT.Radius = 128 +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_calcust1.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/xmike109/icon_attachment_sn_xmike109_calcust1.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 0.75 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 0.75 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_calcust2.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_calcust2.lua new file mode 100644 index 0000000..dd5f4cd --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_calcust2.lua @@ -0,0 +1,16 @@ +game.AddParticles("particles/mw19_attachments.pcf") +PrecacheParticleSystem("arrow_thermite") + +ATTACHMENT.Base = "att_ammo_db" +ATTACHMENT.Name = "Thermite Rounds" +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_calcust2.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/xmike109/icon_attachment_sn_xmike109_calcust2.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + + weapon.Bullet.Damage[1] = weapon.Bullet.Damage[1] * 0.75 + weapon.Bullet.Damage[2] = weapon.Bullet.Damage[2] * 0.75 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_mag.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_mag.lua new file mode 100644 index 0000000..357d528 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/mags/attachment_vm_sn_xmike109_mag.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_ammo_default" +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_mag.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/muzzles/attachment_vm_sn_xmike109_brake.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/muzzles/attachment_vm_sn_xmike109_brake.lua new file mode 100644 index 0000000..47437cc --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/muzzles/attachment_vm_sn_xmike109_brake.lua @@ -0,0 +1,4 @@ +ATTACHMENT.Base = "att_vm_muzzlebrake01" + +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_brake.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/xmike109/icon_attachment_sn_xmike109_brake.vmt") diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/muzzles/attachment_vm_sn_xmike109_silencerlrg.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/muzzles/attachment_vm_sn_xmike109_silencerlrg.lua new file mode 100644 index 0000000..b7753c3 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/muzzles/attachment_vm_sn_xmike109_silencerlrg.lua @@ -0,0 +1,3 @@ +ATTACHMENT.Base = "att_vm_silencer01" +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_silencerlrg.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/xmike109/icon_attachment_sn_xmike109_silencerlrg.vmt") diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/perks/attachment_vm_sn_xmike109_perk_soh.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/perks/attachment_vm_sn_xmike109_perk_soh.lua new file mode 100644 index 0000000..ab376bf --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/perks/attachment_vm_sn_xmike109_perk_soh.lua @@ -0,0 +1,7 @@ +ATTACHMENT.Base = "att_perk_soh" +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Reload = weapon.Animations.Reload_Fast + weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/sights/attachment_vm_sn_xmike109_irons.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/sights/attachment_vm_sn_xmike109_irons.lua new file mode 100644 index 0000000..0e88e76 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/sights/attachment_vm_sn_xmike109_irons.lua @@ -0,0 +1,9 @@ +ATTACHMENT.Base = "att_sight" +ATTACHMENT.Name = "Default Ironsights" + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.ViewModelOffsets.Aim.Angles = Angle(0, 0, 0) + weapon.ViewModelOffsets.Aim.Pos = Vector(0, 0, 0.5) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/sights/attachment_vm_sn_xmike109_scope.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/sights/attachment_vm_sn_xmike109_scope.lua new file mode 100644 index 0000000..61bbe5c --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/sights/attachment_vm_sn_xmike109_scope.lua @@ -0,0 +1,22 @@ +ATTACHMENT.Base = "att_optic_20x" +ATTACHMENT.Name = "Rytec AMR Scope" +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_scope.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/xmike109/icon_attachment_sn_xmike109_scope.vmt") +ATTACHMENT.Bodygroups = { + ["sight"] = 2 +} +ATTACHMENT.Optic = { + HideModel = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_scope_hide.mdl"), + LensHideMaterial = Material("viper/MW/weapons/xmike109/weapon_vm_sn_xmike109_scopelens.vmt"), + LensBodygroup = "lens", + FOV = 7, + ParallaxSize = 700, --a value of zero means 1:1 size with the end of the optic + Thermal = false +} + +ATTACHMENT.Reticle = { + Material = Material("viper/mw/reticles/reticle_int_default"), + Size = 1200, + Color = Color(255, 255, 255, 255), + Attachment = "reticle" +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stock.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stock.lua new file mode 100644 index 0000000..a282c83 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stock.lua @@ -0,0 +1,2 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_stock.mdl") diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stockl.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stockl.lua new file mode 100644 index 0000000..08fac9e --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stockl.lua @@ -0,0 +1,15 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "STVOL Tac-Wrap" +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_stockl.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/xmike109/icon_attachment_sn_xmike109_stockl.vmt") +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 1.1 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 1.1 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 1.12 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 1.12 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 1.2 + weapon.Zoom.MovementMultiplier = weapon.Zoom.MovementMultiplier * 1.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stocks.lua b/lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stocks.lua new file mode 100644 index 0000000..2cebd68 --- /dev/null +++ b/lua/weapons/mg_base/modules/attachmentss/xmike109/stock/attachment_vm_sn_xmike109_stocks.lua @@ -0,0 +1,17 @@ +ATTACHMENT.Base = "att_stock" +ATTACHMENT.Name = "XRK Mastadon" +ATTACHMENT.Model = Model("models/viper/mw/attachments/xmike109/attachment_vm_sn_xmike109_stocks.mdl") +ATTACHMENT.Icon = Material("viper/mw/attachments/icons/xmike109/icon_attachment_sn_xmike109_stocks.vmt") + +local BaseClass = GetAttachmentBaseClass(ATTACHMENT.Base) + +function ATTACHMENT:Stats(weapon) + BaseClass.Stats(self, weapon) + weapon.Animations.Ads_In.Fps = weapon.Animations.Ads_In.Fps * 0.8 + weapon.Animations.Ads_Out.Fps = weapon.Animations.Ads_Out.Fps * 0.8 + weapon.Animations.Draw.Fps = weapon.Animations.Draw.Fps * 0.9 + weapon.Animations.Holster.Fps = weapon.Animations.Holster.Fps * 0.9 + weapon.Recoil.Punch = weapon.Recoil.Punch * 0.5 + weapon.Recoil.AdsMultiplier = weapon.Recoil.AdsMultiplier * 0.5 + weapon.Recoil.AdsShakeMultiplier = weapon.Recoil.AdsShakeMultiplier * 0.5 +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/client/cl_calcview.lua b/lua/weapons/mg_base/modules/client/cl_calcview.lua new file mode 100644 index 0000000..9b1e006 --- /dev/null +++ b/lua/weapons/mg_base/modules/client/cl_calcview.lua @@ -0,0 +1,92 @@ +AddCSLuaFile() + +require("mw_utils") +require("mw_math") + +function SWEP:CalcView(ply, pos, ang, fov) + --do vm first + local vm = self:GetViewModel() + + if (IsValid(vm) && GetConVar("mgbase_debug_vmrender"):GetInt() >= 1) then + local vpos, vang = Vector(pos), Angle(ang) + + if (GetConVar("mgbase_debug_freeview"):GetInt() <= 0) then + vm:CalcViewModelView(vpos, vang) + vm:SetRenderOrigin(vpos) + vm:SetRenderAngles(vang) + end + + vm:CalcView(pos, ang) + vm:SetNoDraw(false) + end + + ang.p = math.Clamp(ang.p, -89, 89) + + local rpm = math.Clamp(self.Primary.RPM / 10, 55, 90) + local rate = 60 / (rpm * 10) + rate = 20 - (rate * 100) + self.Camera.Shake = mw_math.SafeLerp(rate * FrameTime(), self.Camera.Shake, 0) + + local pitch = (math.cos(CurTime() * rpm) * (self.Camera.Shake * 0.5)) * mw_math.SafeLerp(self:GetAimDelta(), 1, 0.4) + + local recoilAndShakeAngles = Angle(pitch, 0, math.sin(CurTime() * rpm)) + recoilAndShakeAngles:Mul(self.Camera.Shake * (Lerp(self:GetAimDelta(), 1, self.Recoil.AdsShakeMultiplier || 1))) + + ang:Add(recoilAndShakeAngles) + + local vpAngles = self:GetOwner():GetViewPunchAngles() + vpAngles:Mul(mw_math.SafeLerp(self:GetAimDelta(), 0.5, 0.01)) + + ang:Sub(vpAngles) + + --breathing + self.Camera.LerpBreathing = self.Camera.LerpBreathing || Angle() + mw_math.SafeLerpAngle(10 * FrameTime(), self.Camera.LerpBreathing, self:GetBreathingSwayAngle()) + + if (GetConVar("mgbase_debug_disablebreathing"):GetInt() <= 0) then + ang:Add(self.Camera.LerpBreathing) + end + --end breathing + + mw_math.VectorAddAndMul(pos, ang:Forward(), -self.Camera.Shake) + + if (self.Cone.DecreaseEveryShot != nil && self.Cone.MinDecreaseEveryShot != nil) then + local mul = self:GetConeDecreaseEveryShotMultiplier() + local delta = 1 - mul + self.Camera.SprayEffect = mw_math.SafeLerp(10 * FrameTime(), self.Camera.SprayEffect, delta * 10) + end + + self.Camera.Fov = mw_math.SafeLerp(20 * FrameTime(), self.Camera.Fov, self:GetAimDelta()) + self.Camera.FovAimDelta = mw_math.SafeLerp(20 * FrameTime(), self.Camera.FovAimDelta || 0, self:GetAimModeDelta()) + + local diff = 0 + + if (self:HasFlag("Reloading")) then + diff = (1 - self.Zoom.FovMultiplier) * 0.05 + end + + self.Camera.LerpReloadFov = mw_math.SafeLerp(10 * FrameTime(), self.Camera.LerpReloadFov, diff) + + local fovDeltaComp = 90 / fov + local zoom = Lerp(self.Camera.FovAimDelta, self.Zoom.FovMultiplier, 0.9) + local fovMultiplier = mw_math.SafeLerp(self.Camera.Fov * self.Camera.Fov * self.Camera.Fov, 1, (zoom + self.Camera.LerpReloadFov)) + + fov = (fov * fovMultiplier) + (self.Camera.Shake * 1.5) + fov = fov * Lerp(self.Camera.Fov, 1, fovDeltaComp) + fov = fov - Lerp(self.Camera.Fov, self.Camera.SprayEffect, 0) + + --customization + local bCustomizing = self:HasFlag("Customizing") + + self.Camera.LerpCustomization = mw_math.SafeLerp(5 * FrameTime(), self.Camera.LerpCustomization, mw_math.btn(bCustomizing)) + + local lerp = self.Camera.LerpCustomization + local forward = ang:Forward() + forward:Mul(lerp * -3) + + pos:Add(forward) + + return pos, ang, fov +end + +function SWEP:PostDrawViewModel(viewmodel, player, weapon) end --ignore me \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/client/cl_hud.lua b/lua/weapons/mg_base/modules/client/cl_hud.lua new file mode 100644 index 0000000..b79cc6e --- /dev/null +++ b/lua/weapons/mg_base/modules/client/cl_hud.lua @@ -0,0 +1,467 @@ +AddCSLuaFile() + +require("mw_math") +require("mw_utils") + +if (SERVER) then + return +end + +local shotgunXhairTickMaterial = Material("mg/shotgunxhairtick") +local normalXhairTickMaterial = Material("mg/normalxhairtick") +local crosshairDotMaterial = Material("mg/crosshairdot") + +local function drawBinding(x, y, bind) + local key = string.upper(input.LookupBinding(bind) || MWBLTL.Get("HUD_Key_NotBound")..bind) + local scale = ScrH() / 1080 + local size = 26 * scale + + surface.SetFont("mgbase_command") + local w = math.max(surface.GetTextSize(key) + 10 * scale, size) + + draw.RoundedBox(4, x - (w * 0.5 - 1), y - (size * 0.5 * scale - 1), w, size * scale, Color(0, 0, 0, 150)) + draw.SimpleText(key, "mgbase_command", x, y, Color(255, 255, 255, 200), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + + return w * 0.5 + (5 * scale) +end + +local function drawBaseBinding(x, y, bind) + local bindValue = GetConVar(bind):GetInt() + local key = string.upper(bindValue != 0 && input.GetKeyName(bindValue) || MWBLTL.Get("HUD_Key_NotBound")..bind) + local scale = ScrH() / 1080 + local size = 26 * scale + + surface.SetFont("mgbase_command") + local w = math.max(surface.GetTextSize(key) + 10 * scale, size) + + draw.RoundedBox(4, x - (w * 0.5 - 1), y - (size * 0.5 * scale - 1), w, size * scale, Color(0, 0, 0, 150)) + draw.SimpleText(key, "mgbase_command", x, y, Color(255, 255, 255, 200), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + + return w * 0.5 + (5 * scale) +end + + +function SWEP:DrawHUD() + if (self:GetOwner():InVehicle()) then + return + end + + if (GetConVar("mgbase_debug_crosshair"):GetBool()) then + --draw.SimpleText("+", "DermaDefault", ScrW() * 0.5, ScrH() * 0.5, Color(0, 255, 0, 100), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + surface.SetDrawColor(0, 255, 0, 127) + surface.DrawLine(ScrW() * 0.5 - 50, ScrH() * 0.5, ScrW() * 0.5 + 50, ScrH() * 0.5) + surface.DrawLine(ScrW() * 0.5, ScrH() * 0.5 - 50, ScrW() * 0.5, ScrH() * 0.5 + 50) + + --[[--3x + draw.SimpleText("3x", "DermaDefault", ScrW() * 0.5 - (90 * 1.44), ScrH() * 0.5 - (90 * 1.44), Color(0, 255, 0, 255), TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER) + surface.DrawCircle(ScrW() * 0.5, ScrH() * 0.5, 180, 0, 255, 0, 127) + + --4x + draw.SimpleText("4x", "DermaDefault", ScrW() * 0.5 - (125 * 1.44), ScrH() * 0.5 - (125 * 1.44), Color(0, 255, 0, 255), TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER) + surface.DrawCircle(ScrW() * 0.5, ScrH() * 0.5, 250, 0, 255, 0, 127) + + --10x + draw.SimpleText("10x", "DermaDefault", ScrW() * 0.5 - (165 * 1.44), ScrH() * 0.5 - (165 * 1.44), Color(0, 255, 0, 255), TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER) + surface.DrawCircle(ScrW() * 0.5, ScrH() * 0.5, 330, 0, 255, 0, 127)]] + + local att = self:GetViewModel():GetAttachment(mw_utils.LookupAttachmentCached(self:GetViewModel(), self.ViewModelOffsets.Aim.AlignAttachment || "align")) + + if (att != nil) then + local pos = att.Pos:ToScreen() + surface.SetDrawColor(255, 0, 0, 127) + surface.DrawLine(pos.x - 50, pos.y, pos.x + 50, pos.y) + surface.DrawLine(pos.x, pos.y - 50, pos.x, pos.y + 50) + + draw.SimpleText(MWBLTL.Get("HUD_Debug_Text1"), "DermaDefault", ScrW() * 0.5, ScrH() * 0.75, Color(255, 50, 50, 255), TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + draw.SimpleText(MWBLTL.Get("HUD_Debug_Text2"), "DermaDefault", ScrW() * 0.5, ScrH() * 0.75 + 30, Color(255, 50, 50, 255), TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM) + end + + if (self:GetSight() != nil) then + att = self:GetSight().m_Model:GetAttachment(mw_utils.LookupAttachmentCached(self:GetSight().m_Model, self:GetSight().Reticle.Attachment)) + pos = att.Pos:ToScreen() + surface.SetDrawColor(0, 150, 255, 255) + surface.DrawLine(pos.x - 25, pos.y, pos.x + 25, pos.y) + surface.DrawLine(pos.x, pos.y - 25, pos.x, pos.y + 25) + + if (self:GetSight().ReticleHybrid != nil) then + att = self:GetSight().m_Model:GetAttachment(mw_utils.LookupAttachmentCached(self:GetSight().m_Model, self:GetSight().ReticleHybrid.Attachment)) + pos = att.Pos:ToScreen() + surface.SetDrawColor(0, 150, 255, 255) + surface.DrawLine(pos.x - 25, pos.y, pos.x + 25, pos.y) + surface.DrawLine(pos.x, pos.y - 25, pos.x, pos.y + 25) + end + end + + att = self:GetViewModel():GetAttachment(mw_utils.LookupAttachmentCached(self:GetViewModel(), self.ViewModelOffsets.Aim.AlignAttachment || "align")) + + if (att != nil) then + --pixel difference + local pos = (att.Pos + att.Ang:Forward() * 1000):ToScreen() + + local diffX, diffY = (pos.x - (ScrW() * 0.5)), (pos.y - (ScrH() * 0.5)) + local centerX, centerY = ScrW() * 0.5, ScrH() * 0.5 + surface.SetDrawColor(255, 0, 255, 255) + surface.DrawLine(centerX, centerY, centerX + (diffX * 10), centerY + (diffY * 10)) + + draw.SimpleText(MWBLTL.Get("HUD_Debug_Text3")..math.Round(diffX, 2)..", "..math.Round(diffY, 2), "DermaDefault", ScrW() * 0.25, ScrH() * 0.25, Color(255, 0, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM) + draw.SimpleText(MWBLTL.Get("HUD_Debug_Text4"), "DermaDefault", ScrW() * 0.25, ScrH() * 0.25 + 20, Color(255, 0, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_BOTTOM) + end + else + if (GetConVar("mgbase_hud_xhair"):GetBool() && !self:HasFlag("Customizing")) then + self:Crosshair() + end + end + + if (GetConVar("mgbase_hud_firemode"):GetBool() && !self:HasFlag("Customizing")) then + self:DrawFiremode() + end + + self:DrawCommands() +end + +local lastIndex = 0 +local transitionAnimation = 0 + +function SWEP:DrawFiremode() + if (self:HasFlag("Holstering")) then + return + end + + -- current firemode (outline commented out) + local x,y = ScrW() * 0.5, ScrH() * 0.8 + local scale = ScrH() / 1080 + + if (!self:HasFlag("Lowered")) then + local index = self:GetFiremode() + + transitionAnimation = math.min(transitionAnimation + 10 * RealFrameTime(), 1) + + if (lastIndex != index) then + transitionAnimation = 0 + lastIndex = index + end + + local name = string.upper(self.Firemodes[index].Name) + draw.SimpleTextOutlined(name, "mgbase_firemode", x, y + (24 * (1 - transitionAnimation) * scale), Color(255, 255, 255, 200), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, 20)) + + -- next firemode + if (self.Firemodes[index + 1]) then + index = index + 1 + else + index = 1 + end + + if (#self.Firemodes > 1) then + drawBaseBinding(x, y - 30, "mgbase_binds_firemode") + end + + if (self:GetFiremode() != index) then + name = string.upper(self.Firemodes[index].Name) + draw.SimpleText(name, "mgbase_firemode_alt", x, y + (24 * transitionAnimation * scale), Color(127, 127, 127, 150), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + else + drawBaseBinding(x, y - 30, "mgbase_binds_safety") + draw.SimpleTextOutlined("LOWERED", "mgbase_firemode", x, y, Color(255, 255, 255, 200), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, 20)) + end +end + +local bipodIcon = Material("bipodicon") +local bipodDelta = 0 + +function SWEP:DrawBipod() + if (!self:HasFlag("BipodDeployed")) then + bipodDelta = 0 + return + end + + bipodDelta = math.min(bipodDelta + RealFrameTime() * 5, 1) + + surface.SetAlphaMultiplier(bipodDelta) + + local mat = self:GetBipod().Icon + surface.SetMaterial(bipodIcon) + surface.SetDrawColor(255, 255, 255, 255) + surface.DrawTexturedRect(ScrW() * 0.5 - 15, ScrH() * 0.5 + 88 + (bipodDelta * 12), 32, 30) + + surface.SetAlphaMultiplier(1) +end + +function SWEP:DrawCommands() + local scale = ScrH() / 1080 + local x,y = ScrW() * 0.7, ScrH() * 0.5 + + if (GetConVar("mgbase_hud_sights"):GetBool()) then + surface.SetAlphaMultiplier(self:GetAimDelta()) + + if ((self:GetSight() != nil && self:GetSight().ReticleHybrid != nil) || self:GetLaser() != nil) then + local w = drawBaseBinding(x, y, "mgbase_binds_switchsights") + draw.SimpleTextOutlined(": SWITCH AIM", "mgbase_commandSecondary", x + w, y, Color(255, 255, 255, 200), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, 20)) + end + + x,y = ScrW() * 0.5, ScrH() * 0.7 + + if (self:GetSight() != nil && self:GetSight().Optic != nil && self:GetAimModeDelta() <= self.m_hybridSwitchThreshold && !self:GetOwner():KeyDown(IN_SPEED) && GetConVar("mgbase_sv_breathing"):GetInt() > 0) then + local w = drawBinding(x, y, "+speed") + draw.SimpleTextOutlined(MWBLTL.Get("HUD_Commands_Text2"), "mgbase_commandSecondary", x, y + (30 * scale), Color(255, 255, 255, 200), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, 20)) + end + + surface.SetAlphaMultiplier(1) + end + + if (GetConVar("mgbase_hud_flashlight"):GetBool() && self:GetFlashlightAttachment() != nil && !self:HasFlag("Customizing")) then + surface.SetFont("mgbase_commandSecondary") + local tw = surface.GetTextSize(MWBLTL.Get("HUD_Commands_Text3")) * 0.5 + x,y = ScrW() * 0.5 - tw - 7, ScrH() * 0.9 - 150 + + --if (self:CanChangeAimMode()) then + local w = drawBinding(x, y + 100, "impulse 100") + draw.SimpleTextOutlined(MWBLTL.Get("HUD_Commands_Text3"), "mgbase_commandSecondary", x + w, y + 100, Color(255, 255, 255, 200), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, 20)) + --end + end +end + +function SWEP:CanDrawCrosshair() + return !self:HasFlag("Reloading") + && !self:HasFlag("Sprinting") + && !self:HasFlag("Holstering") + && !self:HasFlag("Drawing") + && !self:HasFlag("Lowered") + && CurTime() >= self:GetNextInspectTime() + --&& CurTime() > self:GetNextMeleeTime() +end + +function SWEP:HUDShouldDraw(name) + if (self:HasFlag("Customizing")) then + return false + end + + if (self:HasFlag("Aiming") && name == "CHUDQuickInfo") then + return false + end + + if (CurTime() < self:GetNextInspectTime() || self:HasFlag("StoppedInspectAnimation")) then + return false + end + + return true +end + +function SWEP:DrawCrosshairSticks(x, y, cone) + local aimDelta = 1 - self:GetAimDelta() + + surface.SetAlphaMultiplier(aimDelta) + + local crosshairAlpha = 200 + + --dot + local c = self:GetCone() + local m = self.Cone.Max + local h = self.Cone.Hip + local dotDelta = (c - h) / (m - h) + if (m - h <= 0) then + dotDelta = 0 + end + + local color = string.ToColor(GetConVar("mgbase_hud_xhaircolor"):GetString()) + surface.SetDrawColor(color.r, color.g, color.b, 200) + local scale = math.ceil(ScreenScale(2)) -- leadup to appropriate scaling for crosshairs + local size = math.max(scale - bit.band(scale, 1), 4) + surface.SetAlphaMultiplier(aimDelta * (1 - dotDelta)) + surface.SetMaterial(crosshairDotMaterial) + surface.DrawTexturedRect(x - size * 0.5, y - size * 0.5, size, size) + surface.SetAlphaMultiplier(aimDelta) + + if (self:CanDrawCrosshair()) then + local dist = x - cone -- must be done here for accurate cone representation + local drawRect = surface.DrawTexturedRectRotated + local sizeW = size * 5 + local sizeH = size * 5 + + surface.SetMaterial(normalXhairTickMaterial) + + if (self.Bullet.NumBullets > 1) then + surface.SetMaterial(shotgunXhairTickMaterial) + end + + --right stick + drawRect(x - dist, y, sizeW, sizeH, 90) + + --left stick + drawRect(x + dist, y, sizeW, sizeH, 270) + + --down stick + drawRect(x, y - dist, sizeH, sizeW, 0) + + if (self.Primary.Automatic || self.Bullet.NumBullets > 1) then + --up stick + drawRect(x, y + dist, sizeH, sizeW, 180) + end + end + + surface.SetAlphaMultiplier(1) + surface.SetDrawColor(255, 255, 255, 255) +end + +function SWEP:Crosshair() + local x, y = ScrW() * 0.5, ScrH() * 0.5 + local vec = EyePos() + (self:GetOwner():EyeAngles() + self:GetOwner():GetViewPunchAngles()):Forward() + local cone = math.floor((vec + ( self:GetCone() * 0.1 * (self:GetOwner():EyeAngles() + self:GetOwner():GetViewPunchAngles()):Right() ) ):ToScreen().x) + local pos = vec:ToScreen() + + if (Vector(x, 0, y):DistToSqr(Vector(pos.x, 0, pos.y)) > 2.25) then + x,y = math.floor(pos.x), math.floor(pos.y) + end + + self:DrawCrosshairSticks(x, y, cone) + self:DrawBipod(x, y) +end +--FONTS + +local function CreateFonts() + local scale = ScrH() / 1080 + + surface.CreateFont("mgbase_firemode", { + font = "BioSansW05-Light", + size = 30 * scale, + weight = 0 + }) + + surface.CreateFont("mgbase_statName", { + font = "BioSansW05-Light", + size = 24, + weight = 0 + }) + + surface.CreateFont("mgbase_stat", { + font = "BioSansW05-Light", + size = 22, + weight = 0 + }) + + surface.CreateFont("mgbase_control", { + font = "BioSansW05-Light", + size = 22, + weight = 0 + }) + + surface.CreateFont("mgbase_statPositive", { + font = "BioSansW05-Light", + size = 22, + weight = 0, + blursize = 2 + }) + + surface.CreateFont("mgbase_firemode_alt", { + font = "BioSansW05-Light", + size = 24 * scale, + weight = 0 + }) + + surface.CreateFont("mgbase_attSlot", { + font = "Conduit ITC", + size = 24 * scale, + weight = 500 + }) + + surface.CreateFont("mgbase_attSlotMenu", { + font = "Conduit ITC", + size = 24, + weight = 500 + }) + + surface.CreateFont("mgbase_attSlotAttachmentInUse", { + font = "BioSansW05-Light", + size = 24, + weight = 0 + }) + + surface.CreateFont("mgbase_attSlotAttachmentInUse_IsCosmetic", { + font = "Conduit ITC", + size = 20, + weight = 500 + }) + + surface.CreateFont("mgbase_attSlotAttachmentInUse:hover", { + font = "BioSansW05-Light", + size = 24, + weight = 0, + blursize = 1 + }) + + surface.CreateFont("mgbase_attSlotMenu:hover", { + font = "Conduit ITC", + size = 24, + weight = 500, + blursize = 2 + }) + + surface.CreateFont("mgbase_utilityButton", { + font = "BioSansW05-Light", + size = 32, + weight = 0 + }) + + surface.CreateFont("mgbase_utilityButton:hover", { + font = "BioSansW05-Light", + size = 32, + weight = 0, + blursize = 1 + }) + + surface.CreateFont("mgbase_attSlotMenu", { + font = "Conduit ITC", + size = 24, + weight = 500 + }) + + surface.CreateFont("mgbase_attName", { + font = "Conduit ITC", + size = 24 * scale, + weight = 500 + }) + + surface.CreateFont("mgbase_attTitle", { + font = "BioSansW05-Light", + size = 60 * scale, + weight = 0 + }) + + surface.CreateFont("mgbase_attTitle_blur", { + font = "BioSansW05-Light", + size = 60 * scale, + weight = 0, + blursize = 3 + }) + + surface.CreateFont("mgbase_attWeaponName", { + font = "Conduit ITC", + size = 36 * scale, + weight = 500 + }) + + surface.CreateFont("mgbase_command", { + font = "BioSansW05-Light", + size = 26 * scale, + weight = 500 + }) + + surface.CreateFont("mgbase_commandSecondary", { + font = "BioSansW05-Light", + size = 22 * scale, + weight = 500 + }) + + surface.CreateFont("mgbase_presetSpawnMethod", { + font = "BioSansW05-Light", + size = 24, + weight = 0 + }) + + surface.CreateFont("mgbase_presetSpawnMethod_child", { + font = "BioSansW05-Light", + size = 20, + weight = 0 + }) +end +hook.Add("OnScreenSizeChanged", "MW_UpdateFonts", CreateFonts) +CreateFonts() diff --git a/lua/weapons/mg_base/modules/client/cl_new_customizemenu.lua b/lua/weapons/mg_base/modules/client/cl_new_customizemenu.lua new file mode 100644 index 0000000..5cbae62 --- /dev/null +++ b/lua/weapons/mg_base/modules/client/cl_new_customizemenu.lua @@ -0,0 +1,1889 @@ +AddCSLuaFile() + +if (SERVER) then + return +end + +require("mw_utils") + +local openSound = "mw/user_interface/main_iw8/iw8_wheel_popup.wav" +local detachSound = "mw/user_interface/main_iw8/iw8_mainmenu_deny_v1.wav" +local attachSound = "mw/user_interface/main_iw8/iw8_general_purchase_confirm_v1.wav" +local selectAttachmentSound = "mw/user_interface/mp/iw8_radar_drone_marker2.wav" +local closeAttachmentsSound = "mw/user_interface/mp/iw8_outofbounds_popup.wav" +local closeSound = "mw/user_interface/mp/iw8_scoreboard_popup_extra.wav" +local scrollSound = "mw/user_interface/ui_text_beep1.wav" +local hoverSounds = { + "mw/user_interface/main_iw8/iw8_general_updownmovement1_v1.wav", + "mw/user_interface/main_iw8/iw8_general_updownmovement2_v1.wav", + "mw/user_interface/main_iw8/iw8_general_updownmovement3_v1.wav", + "mw/user_interface/main_iw8/iw8_general_updownmovement4_v1.wav", + "mw/user_interface/main_iw8/iw8_general_updownmovement5_v1.wav", + "mw/user_interface/main_iw8/iw8_general_updownmovement6_v1.wav" +} +local hoverAttachmentSounds = { + "mw/user_interface/main_iw8/iw8_mpmenu_tabsmove1_v1.wav", + "mw/user_interface/main_iw8/iw8_mpmenu_tabsmove2_v1.wav", + "mw/user_interface/main_iw8/iw8_mpmenu_tabsmove3_v1.wav", + "mw/user_interface/main_iw8/iw8_mpmenu_tabsmove4_v1.wav", + "mw/user_interface/main_iw8/iw8_mpmenu_tabsmove5_v1.wav", + "mw/user_interface/main_iw8/iw8_mpmenu_tabsmove6_v1.wav" +} +local selectCategorySound = "mw/user_interface/main_iw8/iw8_leavelobby_alert_v1.wav" +local presetSound = "mw/user_interface/aar/ui_aar_progress_circle_stop.wav" +local savePresetSound = "mw/user_interface/aar/ui_aar_operator_complete_reveal.wav" +local removePresetSound = "mw/user_interface/mp/iw8_restock_lethals_v1.wav" +local resetSound = "mw/user_interface/mp/iw8_restock_lethals_v1.wav" +local randomSound = "mw/user_interface/mp/mp_ui_splash_notify_01.wav" +local favoriteSound = "mw/user_interface/ui_motiontracker_pong1.wav" +local unfavoriteSound = "mw/user_interface/ui_motiontracker_pong2.wav" +local blurMaterial = Material("mg/blur") +local buttonGlowMaterial = Material("mg/buttonglow") +local removeButtonGlowMaterial = Material("mg/removeattachmentbutton") +local customizeMenuOpenMaterial = Material("mg/customizemenuopen") +local removeAttachmentMaterial = Material("mg/removeattachment") +local removePresetMaterial = Material("mg/removenew") +local closeAttachmentsMaterial = Material("mg/closeattachments") +local rightClickMaterial = Material("mg/rightclick") +local cursorGlowMaterial = Material("mg/cursorglow") +local presetsMaterial = Material("mg/presets") +local defaultPresetMaterial = Material("mg/defaultpreset") +local noMaterial = Material("mg/d") +local addPresetMaterial = Material("mg/addpreset") +local resetMaterial = Material("mg/clear") +local randomMaterial = Material("mg/random") +local favoriteMaterial = Material("mg/favorite") +local bookmarkMaterial = Material("mg/bookmark") + +local blackColor = Color(0, 0, 0, 150) +local whiteColor = Color(255, 255, 255, 200) +local greyColor = Color(255, 255, 255, 150) +local shadowColor = Color(0, 0, 0, 20) +local backgroundErrorColor = Color(50, 0, 0, 150) +local errorColor = Color(150, 0, 0, 255) +local greenColor = Color(0, 210, 20, 255) +local redColor = Color(230, 0, 30, 255) +local yellowColor = Color(255, 170, 20, 255) + +local MWBLTLXCoordinate = { + Text = { + ["de"] = 230, + ["en"] = 220, + ["es-ES"] = 340, + ["fr"] = 360, + ["pt-BR"] = 280, + ["ru"] = 280, + ["th"] = 290, + ["zh-CN"] = 180, + ["zh-TW"] = 180 + }, + Line = { + ["de"] = 320, + ["en"] = 310, + ["es-ES"] = 430, + ["fr"] = 450, + ["pt-BR"] = 370, + ["ru"] = 400, + ["th"] = 420, + ["zh-CN"] = 280, + ["zh-TW"] = 280 + } +} + +--opening the menu if no mgbase_customize bind (context menu) + +local function closeCustomizationMenu() + if (!IsValid(MW_CUSTOMIZEMENU)) then + return + end + + gui.EnableScreenClicker(false) + surface.PlaySound(closeSound) + + if (IsValid(MW_CUSTOMIZEMENU)) then + MW_CUSTOMIZEMENU:Remove() + end +end + +local function validWeapon(weapon) + return IsValid(weapon) && weapon:GetOwner() == LocalPlayer() && weapon:HasFlag("Customizing") +end + +--removing panel if already there (reload code) +if (IsValid(MW_CUSTOMIZEMENU)) then + MW_CUSTOMIZEMENU:Remove() +end + +MW_CUSTOMIZEMENU = nil + +local function makeCloseButton(panel, panelToClose) + local closeButton = vgui.Create("DButton", panel) + closeButton:Dock(RIGHT) + closeButton:SetSize(40, 40) + closeButton:SetText("") + + local closeButtonDownColor = Color(100, 100, 100, 200) + function closeButton:Paint(w, h) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a) + self:DrawOutlinedRect() + + surface.SetMaterial(closeAttachmentsMaterial) + + local color = self:IsDown() && closeButtonDownColor || whiteColor + surface.SetDrawColor(color.r, color.g, color.b, color.a) + surface.DrawTexturedRect(5, 5, w - 10, h - 10) + end + + function closeButton:DoClick() + surface.PlaySound(closeAttachmentsSound) + panelToClose:Remove() + end + + return closeButton +end + +local function createButtonControls(panel, leftClickName, rightClickName, wi, he) + if (IsValid(panel.controls)) then + return + end + + local ml, mt, mr, mb = panel:GetDockMargin() + local posx, posy = panel:LocalToScreen(panel:GetX(), panel:GetY()) + posx = posx - wi - 5 + posy = posy - mt + + panel.controls = vgui.Create("DPanel") + panel.controls:SetPos(posx - 100, posy) + panel.controls:MoveTo(posx, posy, 0.1) + panel.controls:SetSize(wi, he) + panel.controls:NoClipping(true) + panel.controls:SetMouseInputEnabled(false) + panel.controls.parent = panel + function panel.controls:Think() + if (!IsValid(self.parent)) then + self:Remove() + end + end + function panel.controls:Paint(w, h) + if (rightClickName != nil) then + surface.SetDrawColor(blackColor.r, blackColor.g, blackColor.b, blackColor.a) + surface.SetMaterial(buttonGlowMaterial) + surface.DrawTexturedRectRotated(w * 0.5, h * 0.5, h, w, 90) + + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a) + surface.SetMaterial(rightClickMaterial) + surface.DrawTexturedRect(w - 32, h * 0.5 - 15, 20, 30) + + draw.SimpleText(rightClickName, "mgbase_control", w - 45, h * 0.5, whiteColor, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER) + --draw.SimpleText(": FAVORITE", "mgbase_statPositive", 0, -20, whiteColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + end + end +end + +local function removeButtonControls(panel) + if (IsValid(panel.controls)) then + panel.controls:Remove() + end +end + +local function makeScrollBar(panel, dock) + local scroll = vgui.Create("DScrollPanel", panel) + scroll:Dock(FILL) + + local sbar = scroll:GetVBar() + sbar:Dock(dock) + sbar.LastScrollValue = sbar:GetOffset() + function sbar:Paint(w, h) + end + function sbar:Think() + if (self:GetOffset() != self.LastScrollValue && math.abs(self:GetOffset() - self.LastScrollValue) > 10) then + surface.PlaySound(scrollSound) + self.LastScrollValue = self:GetOffset() + end + end + function sbar.btnUp:Paint(w, h) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a) + surface.DrawRect(w * 0.5 - 2, 0, 4, h) + end + function sbar.btnDown:Paint(w, h) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a) + surface.DrawRect(w * 0.5 - 2, 0, 4, h) + end + function sbar.btnGrip:Paint(w, h) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a) + surface.DrawRect(w * 0.5 - 1, 10, 2, h - 20) + end + + return scroll +end + +local function makePopupMenu() + local background = vgui.Create("DButton", MW_CUSTOMIZEMENU) + background:SetPos(0, 0) + background:SetSize(ScrW(), ScrH()) + background:SetText("") + background:Center() + background:SetCursor("arrow") + + function background:Think() + if (LocalPlayer():KeyDown(IN_USE)) then + self:Remove() + end + end + + function background:Paint(width, height) + Derma_DrawBackgroundBlur(self, self.m_fCreateTime) + + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, 3) + surface.SetMaterial(cursorGlowMaterial) + surface.DrawTexturedRect(gui.MouseX() - 175, gui.MouseY() - 175, 350, 350) + + draw.SimpleText("im taking over", "DermaDefault", gui.MouseX(), gui.MouseY(), Color(whiteColor.r, whiteColor.g, whiteColor.b, 1), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + + function background:DoClick() + surface.PlaySound(closeAttachmentsSound) + self:Remove() + end + + return background +end + +local function closePresetInfo(panel) + if (!IsValid(panel.hover)) then + return + end + + panel.hover:Remove() +end + +local function openPresetInfo(panel, preset) + if (preset == nil || preset.Attachments == nil) then + return + end + + local atts = {} + + for _, attClass in pairs(preset.Attachments) do + if (MW_ATTS[attClass] != nil) then + table.insert(atts, attClass) + end + end + + if (!IsValid(panel.hover)) then + panel.hover = vgui.Create("DPanel") + panel.hover.parent = panel + local x, y = panel:LocalToScreen(panel:GetPos()) + panel.hover:SetPos(x + panel:GetWide() + 20, y + 20) + panel.hover:SetSize(400, 50 * (#atts + 1)) + panel.hover:SetMouseInputEnabled(false) + panel.hover:NoClipping(true) + function panel.hover:Think() + if (!IsValid(self.parent)) then + self:Remove() + return + end + + self:SetPos(math.Clamp(gui.MouseX() + 30, 0, ScrW() - self:GetWide()), math.Clamp(gui.MouseY() + 30, 0, ScrH() - self:GetTall())) + end + function panel.hover:Paint(w, h) + --[[surface.SetMaterial(blurMaterial) + surface.SetDrawColor(255, 255, 255, 255) + + for i = 1, 10, 1 do + render.UpdateScreenEffectTexture() + self:DrawTexturedRect() + end + + surface.SetDrawColor(blackColor.r, blackColor.g, blackColor.b, blackColor.a) + self:DrawFilledRect() + + --white fade + surface.SetMaterial(buttonGlowMaterial) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a * 0.02) + surface.DrawTexturedRect(0, h * 0.5, w, h * 0.5)]] + end + function panel.hover:PaintOver(w, h) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a) + + --long line on the right + --surface.DrawLine(w + 5, 15, w + 5, h - 15) + + --corner lines + surface.DrawLine(-5, -5, -5, 5) + surface.DrawLine(-5, -5, 5, -5) + end + + local attsGrid = vgui.Create("DGrid", panel.hover) + attsGrid:SetPos(0, 0) + attsGrid:SetCols(1) + attsGrid:SetColWide(panel.hover:GetWide()) + attsGrid:SetRowHeight(50) + attsGrid:Dock(FILL) + + for i, attachmentClass in pairs(atts) do + local attPanel = vgui.Create("DPanel") + attPanel:SetSize(attsGrid:GetColWide(), attsGrid:GetRowHeight()) + + function attPanel:Paint(w, h) + surface.SetDrawColor(blackColor.r, blackColor.g, blackColor.b, blackColor.a) + surface.DrawRect(5, 5, 40, 40) + + --glow hover + surface.SetDrawColor(blackColor.r, blackColor.g, blackColor.b, blackColor.a) + surface.SetMaterial(buttonGlowMaterial) + surface.DrawTexturedRectRotated(150, 25, 40, 200, 270) + + local attachment = MW_ATTS[attachmentClass] + local attColor = attachment.UIColor || whiteColor + + surface.SetDrawColor(attColor.r, attColor.g, attColor.b, 255) + surface.SetMaterial(attachment.Icon) + surface.DrawTexturedRect(8, h * 0.5 - 17, 35, 35) + + draw.SimpleText(attachment.Name, "mgbase_stat", 60, h * 0.5, attColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + local c = Color(attColor.r, attColor.g, attColor.b, attColor.a * 0.5) + draw.SimpleText(attachment.Name, "mgbase_statPositive", 60, h * 0.5, c, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + end + + attsGrid:AddItem(attPanel) + end + end +end + +local function createPresetPanel(preset, wepclass) + --panel to hold button + local presetPanel = vgui.Create("DPanel") + function presetPanel:Paint(w, h) + end + + local but = vgui.Create("DButton", presetPanel) + but:SetText("") + but:Dock(FILL) + but:DockMargin(0, 5, 0, 5) + but.HoverDelta = 0 + but.ClickDelta = 0 + but.bWasHovered = false + but.FavoriteDelta = 0 + but.bWasFavorite = preset != nil && mw_utils.IsAssetFavorite(wepclass, preset.ClassName) || false + + function but:IsAllowed() + return true + end + + function but:Paint(width, height) + if (self:IsHovered()) then + self.HoverDelta = math.Approach(self.HoverDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + + if (!self.bWasHovered) then + surface.PlaySound(hoverAttachmentSounds[math.random(1, #hoverAttachmentSounds)]) + end + + self.bWasHovered = true + else + self.HoverDelta = math.Approach(self.HoverDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + self.bWasHovered = false + end + + if (self:IsDown()) then + self.ClickDelta = math.Approach(self.ClickDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + else + self.ClickDelta = math.Approach(self.ClickDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + end + + self.FavoriteDelta = math.Approach(self.FavoriteDelta, 0, math.min(3 * RealFrameTime(), 0.3)) + + local bAllowed = self:IsAllowed() + local currentColor = bAllowed && blackColor || backgroundErrorColor + + --background + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a) + self:DrawFilledRect() + + currentColor = bAllowed && whiteColor || errorColor + + --click hold + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a * 0.15 * self.ClickDelta) + self:DrawFilledRect() + + --border hover + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a * self.HoverDelta) + self:DrawOutlinedRect() + + --glow hover + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a * 0.15 * (self.HoverDelta - self.ClickDelta)) + surface.SetMaterial(buttonGlowMaterial) + surface.DrawTexturedRect(0, height * 0.5, width, height * 0.5) + + --preset name + + if (self.FavoriteDelta > 0) then + surface.SetDrawColor(yellowColor.r, yellowColor.g, yellowColor.b, yellowColor.a * self.FavoriteDelta) + self:DrawFilledRect() + end + + if (preset == nil) then + return + end + + local hoverColor = Color(currentColor.r, currentColor.g, currentColor.b, currentColor.a * self.HoverDelta) + draw.SimpleText(preset.Name, "mgbase_attSlotAttachmentInUse:hover", width * 0.5 - 2, height * 0.5, hoverColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + draw.SimpleText(preset.Name, "mgbase_attSlotAttachmentInUse", width * 0.5 - 2, height * 0.5, currentColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, shadowColor) + + if (!preset._bUserGenerated) then + surface.SetDrawColor(255, 255, 255, Lerp(self.HoverDelta, 5, 50)) + surface.SetMaterial(defaultPresetMaterial) + surface.DrawTexturedRect(width * 0.5 - 25, height * 0.5 - 20, 50, 40) + end + + local bFav = mw_utils.IsAssetFavorite(wepclass, preset.ClassName) + + if (bFav != self.bWasFavorite) then + self.FavoriteDelta = bFav && 1 || 0 + self.bWasFavorite = bFav + end + + if (bFav) then + surface.SetDrawColor(yellowColor.r, yellowColor.g, yellowColor.b, yellowColor.a) + surface.SetMaterial(favoriteMaterial) + surface.DrawTexturedRect(-1, -1, 16, 16) + end + end + + function but:PaintOver(width, height) + end + + function but:Think() + if (self:IsHovered()) then + openPresetInfo(self, preset) + if (preset != nil) then + createButtonControls(self, nil, MWBLTL.Get("CuzMenu_Nom_Text1"), 200, self:GetTall()) + end + else + closePresetInfo(self) + removeButtonControls(self) + end + end + + return presetPanel, but +end + +local function openPresetsMenu(weapon) + + local background = makePopupMenu() + local presets = mw_utils.GetPresetsForSWEP(weapon:GetClass()) + + table.sort(presets, function(a, b) + local aFav = mw_utils.IsAssetFavorite(weapon:GetClass(), a.ClassName) + local bFav = mw_utils.IsAssetFavorite(weapon:GetClass(), b.ClassName) + + if (!aFav && bFav) then + return false + elseif (aFav && !bFav) then + return true + elseif ((aFav && bFav) || (!aFav && !bFav)) then + if (!a._bUserGenerated && b._bUserGenerated) then + return true + elseif (a._bUserGenerated && !b._bUserGenerated) then + return false + elseif ((a._bUserGenerated && b._bUserGenerated) || (!a._bUserGenerated && !b._bUserGenerated)) then + return a.Name < b.Name + end + end + end) + + local menu = vgui.Create("DPanel", background) + menu:SetSize(400, ScrH() * 0.6) + menu:Center() + + local x,y = menu:GetPos() + menu:SetPos(x, ScrH()) + menu:MoveTo(x, y, 0.1, 0, -1) + + function menu:Paint(width, height) + end + + local headerPanel = vgui.Create("DPanel", menu) + headerPanel:SetText("") + headerPanel:Dock(TOP) + headerPanel:SetSize(0, 40) + headerPanel:DockMargin(20, 0, 20, 10) + function headerPanel:Paint(w, h) + draw.SimpleText(MWBLTL.Get("CuzMenu_Nom_Text2"), "mgbase_attSlotMenu", 0, h * 0.5, whiteColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + end + + makeCloseButton(headerPanel, background) + + --ADD PRESET + local addPresetPanel, addBut = createPresetPanel(nil, nil) + addPresetPanel:SetParent(menu) + addPresetPanel:SetSize(0, 80) + addPresetPanel:SetPos(20, 40) + addPresetPanel:DockMargin(20, 0, 20, 0) + addPresetPanel:Dock(TOP) + + function addBut:IsAllowed() + if (!validWeapon(weapon)) then + return + end + + for _, att in pairs(weapon:GetAllAttachmentsInUse()) do + if (att.Index > 1) then + return true + end + end + + return false + end + + local presetInputRequirement = vgui.Create("EditablePanel", addBut) + presetInputRequirement:Dock(FILL) + presetInputRequirement:SetVisible(false) + function presetInputRequirement:Paint() + --surface.SetDrawColor(255, 0, 0, 255) + --self:DrawFilledRect() + end + + function presetInputRequirement:Think() + local x, y = addBut:LocalToScreen(addBut:GetX(), addBut:GetY()) + self:SetPos(x, y - 5) --stupid fucking workaround because of makepopup + end + + local presetInput = vgui.Create("DTextEntry", presetInputRequirement) + presetInput:Dock(FILL) + presetInput:DockMargin(10, 0, 10, 0) + presetInput:SetTabbingDisabled(true) + presetInput:SetPaintBackground(false) + presetInput:SetMultiline(false) + presetInput:SetFont("mgbase_attSlotAttachmentInUse") + presetInput:SetCursorColor(Color(255, 255, 255, 255)) + presetInput:SetPlaceholderText(MWBLTL.Get("CuzMenu_Nom_Text3")) + presetInput:SetEditable(true) + presetInput:SetTextColor(whiteColor) + + function presetInput:AllowInput(char) + return #self:GetText() >= 32 + end + + function presetInput:OnLoseFocus() + self:GetParent():SetVisible(false) + self:SetText("") + end + + function presetInput:OnEnter() + local atts = {} + + for slot, att in pairs(weapon:GetAllAttachmentsInUse()) do + if (att.Index > 1) then + atts[#atts + 1] = att.ClassName + end + end + + mw_utils.SavePreset(weapon:GetClass(), self:GetText(), atts) + surface.PlaySound(savePresetSound) + background:Remove() + openPresetsMenu(weapon) + end + + local oldPaint = addBut.Paint + function addBut:Paint(width, height) + oldPaint(self, width, height) + + local bAllowed = self:IsAllowed() + local currentColor = bAllowed && whiteColor || errorColor + + --icon + if (!presetInputRequirement:IsVisible()) then + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, Lerp(self.HoverDelta, 150, 255)) + surface.SetMaterial(addPresetMaterial) + surface.DrawTexturedRect(width * 0.5 - 20, 15, 40, 40) + end + end + + function addBut:DoClick() + if (!self:IsAllowed()) then + surface.PlaySound(presetSound) + return + end + + presetInputRequirement:SetVisible(true) + presetInputRequirement:MakePopup() + presetInput:RequestFocus() + end + + --DIVIDER BETWEEN ADD PRESET AND PRESETS + local divider = vgui.Create("DPanel", menu) + divider:SetSize(0, 1) + divider:Dock(TOP) + divider:DockMargin(20, 5, 20, 5) + function divider:Paint(w, h) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b) + self:DrawFilledRect() + end + + local scroll = makeScrollBar(menu, RIGHT) + + local presetsGrid = vgui.Create("DGrid", scroll) + presetsGrid:SetPos(0, 0) + presetsGrid:SetCols(1) + presetsGrid:SetColWide(menu:GetWide()) + presetsGrid:SetRowHeight(80) + presetsGrid:Dock(FILL) + presetsGrid:DockMargin(20, 0, 0, 0) + + for _, preset in pairs(presets) do + local presetPanel, but = createPresetPanel(preset, weapon:GetClass()) + presetPanel:SetSize(presetsGrid:GetColWide() * 0.9, presetsGrid:GetRowHeight()) + + function but:DoRightClick() + if (!mw_utils.IsAssetFavorite(weapon:GetClass(), preset.ClassName)) then + mw_utils.FavoriteAsset(weapon:GetClass(), preset.ClassName) + surface.PlaySound(favoriteSound) + else + mw_utils.UnfavoriteAsset(weapon:GetClass(), preset.ClassName) + surface.PlaySound(unfavoriteSound) + end + end + + function but:DoClick() + if (!self:IsAllowed()) then + surface.PlaySound(selectAttachmentSound) + return + end + + mw_utils.LoadPreset(weapon, preset) + + surface.PlaySound(presetSound) + + if (preset.UISound != nil) then + surface.PlaySound(preset.UISound) + end + + background:Remove() + end + + if (preset._bUserGenerated) then + local removeButton = vgui.Create("DButton", but) + removeButton:SetSize(24, 24) + removeButton:SetPos(330, 5) + removeButton:SetText("") + removeButton.HoverDelta = 0 + removeButton.ClickDelta = 0 + removeButton.bWasHovered = false + + function removeButton:DoClick() + mw_utils.RemovePreset(preset.ClassName) + background:Remove() + surface.PlaySound(removePresetSound) + openPresetsMenu(weapon) + end + + function removeButton:Paint(w, h) + if (self:IsHovered()) then + self.HoverDelta = math.Approach(self.HoverDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + + if (!self.bWasHovered) then + surface.PlaySound(hoverAttachmentSounds[math.random(1, #hoverAttachmentSounds)]) + end + + self.bWasHovered = true + else + self.HoverDelta = math.Approach(self.HoverDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + self.bWasHovered = false + end + + if (self:IsDown()) then + self.ClickDelta = math.Approach(self.ClickDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + else + self.ClickDelta = math.Approach(self.ClickDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + end + + surface.SetMaterial(removePresetMaterial) + surface.SetDrawColor(redColor.r, redColor.g, redColor.b, Lerp(self.HoverDelta * 0.25 + self.ClickDelta * 0.75, redColor.a * 0.1, redColor.a)) + self:DrawTexturedRect() + end + end + + presetsGrid:AddItem(presetPanel) + end + + --SPAWN METHOD + local presetSpawnPanel = vgui.Create("DPanel", menu) + presetSpawnPanel:Dock(BOTTOM) + presetSpawnPanel:SetSize(0, 50) + presetSpawnPanel:DockMargin(0, 10, 0, 0) + function presetSpawnPanel:Paint(w, h) + end + + local options = {[0] = MWBLTL.Get("CuzMenu_Method_Text1"), [1] = MWBLTL.Get("CuzMenu_Method_Text2"), [2] = MWBLTL.Get("CuzMenu_Method_Text3"), [3] = MWBLTL.Get("CuzMenu_Method_Text4")} + local method = math.Clamp(GetConVar("mgbase_presetspawnmethod"):GetInt(), 0, 3) + + local presetSpawnLabel = vgui.Create("DLabel", presetSpawnPanel) + presetSpawnLabel:Dock(LEFT) + presetSpawnLabel:DockMargin(20, 5, 0, 5) + presetSpawnLabel:SetFont("mgbase_presetSpawnMethod") + presetSpawnLabel:SetTextColor(whiteColor) + presetSpawnLabel:SetText(MWBLTL.Get("CuzMenu_Nom_Text4")) + presetSpawnLabel:SizeToContents() + + local presetSpawnCombo = vgui.Create("DComboBox", presetSpawnPanel) + presetSpawnCombo:SetSize(200, 10) + presetSpawnCombo:SetValue(options[method]) + presetSpawnCombo:SetFont("mgbase_presetSpawnMethod") + presetSpawnCombo:SetTextColor(whiteColor) + presetSpawnCombo:Dock(RIGHT) + presetSpawnCombo:DockMargin(0, 5, 20, 5) + for i, op in pairs(options) do + presetSpawnCombo:AddChoice(op) + end + + function presetSpawnCombo:OnSelect(index, value) + GetConVar("mgbase_presetspawnmethod"):SetInt(index - 1) + end + + function presetSpawnCombo:Paint(w, h) + surface.SetDrawColor(blackColor.r, blackColor.g, blackColor.b, blackColor.a) + self:DrawFilledRect() + + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a * 0.25) + self:DrawOutlinedRect() + end + + function presetSpawnCombo:OnMenuOpened(menu) + function menu:Paint(w, h) + surface.SetDrawColor(blackColor.r, blackColor.g, blackColor.b, blackColor.a) + self:DrawFilledRect() + end + + for i = 1, #options + 1, 1 do + local child = menu:GetChild(i) + child:SetFont("mgbase_presetSpawnMethod_child") + child:SetTextColor(whiteColor) + child.HoverDelta = 0 + function child:Paint(w, h) + if (self:IsHovered()) then + self.HoverDelta = math.Approach(self.HoverDelta, 1, 8 * FrameTime()) + else + self.HoverDelta = math.Approach(self.HoverDelta, 0, 8 * FrameTime()) + end + + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, self.HoverDelta * 15) + self:DrawFilledRect() + end + end + end +end + +local function openStatsInfo(panel, attachment, weapon) + if (attachment.Breadcrumbs == nil) then --from attachments selection list + weapon:MakeBreadcrumbsForAttachment(attachment) + end + + local count = table.Count(attachment.Breadcrumbs) + + if (attachment.Breadcrumbs == nil || count <= 0) then + return + end + + if (!IsValid(panel.hover)) then + panel.hover = vgui.Create("DPanel") + panel.hover.parent = panel + local x, y = panel:LocalToScreen(panel:GetPos()) + panel.hover:SetPos(x + panel:GetWide() + 20, y + 20) + panel.hover:SetSize(400, 50 * math.max(count, 1)) + panel.hover:SetMouseInputEnabled(false) + panel.hover:NoClipping(true) + function panel.hover:Think() + if (!IsValid(self.parent)) then + self:Remove() + return + end + + self:SetPos(math.Clamp(gui.MouseX() + 30, 0, ScrW() - self:GetWide()), math.Clamp(gui.MouseY() + 30, 0, ScrH() - self:GetTall())) + end + function panel.hover:Paint(w, h) + if (count <= 0) then + return + end + + surface.SetMaterial(blurMaterial) + surface.SetDrawColor(255, 255, 255, 255) + + for i = 1, 10, 1 do + render.UpdateScreenEffectTexture() + self:DrawTexturedRect() + end + + surface.SetDrawColor(blackColor.r, blackColor.g, blackColor.b, blackColor.a) + self:DrawFilledRect() + + --white fade + surface.SetMaterial(buttonGlowMaterial) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a * 0.02) + surface.DrawTexturedRect(0, h * 0.5, w, h * 0.5) + end + function panel.hover:PaintOver(w, h) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a) + + --long line on the right + surface.DrawLine(w + 5, 15, w + 5, h - 15) + + --corner lines + surface.DrawLine(-5, -5, -5, 5) + surface.DrawLine(-5, -5, 5, -5) + end + + local statsGrid = vgui.Create("DGrid", panel.hover) + statsGrid:SetPos(0, 0) + statsGrid:SetCols(1) + statsGrid:SetColWide(panel.hover:GetWide()) + statsGrid:SetRowHeight(50) + statsGrid:Dock(FILL) + + for i, crumb in pairs(attachment.Breadcrumbs) do + local statPanel = vgui.Create("DPanel") + statPanel:SetSize(statsGrid:GetColWide(), statsGrid:GetRowHeight()) + function statPanel:Paint(w, h) + if (!validWeapon(weapon)) then + return + end + + local statInfo = weapon.StatInfo[crumb.statInfo] + draw.SimpleText(statInfo.Name, "mgbase_statName", 10, h * 0.5, whiteColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + + local bPositive = crumb.Current < crumb.Original + + if (statInfo.ProIfMore) then + bPositive = !bPositive + end + + local statColor = bPositive && greenColor || redColor + local statText = math.Round(crumb.Current - crumb.Original, 1) + if (statInfo.ShowPercentage) then + statText = math.Round((crumb.Current - crumb.Original) / crumb.Original * 100, 1).."%" + end + + statText = (bPositive && "⮝ " || "⮟ ")..statText + + draw.SimpleText(statText, "mgbase_stat", w - 10, h * 0.5, statColor, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER) + + local c = Color(statColor.r, statColor.g, statColor.b, statColor.a * 0.5) + draw.SimpleText(statText, "mgbase_statPositive", w - 10, h * 0.5, c, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER) + end + + statsGrid:AddItem(statPanel) + end + + if attachment.CustomText then + + local panelWidth = statsGrid:GetColWide() + local text = attachment.CustomText + local splitText = string.Split(text, " ") + + local textPanel = vgui.Create("DPanel") + textPanel:SetSize(statsGrid:GetColWide(), statsGrid:GetRowHeight()) + textPanel.WrappedText = {} + + local curString = "" + local prevString = "" + local count = 1 + + for k, v in pairs(splitText) do + + curString = curString..v.." " + local w, h = surface.GetTextSize(curString) + local w2, h2 = surface.GetTextSize(v) + + if w > panelWidth - 10 then + textPanel.WrappedText[count] = prevString + curString = v.." " + count = count + 1 + panel.hover:SetTall(panel.hover:GetTall() + 50) + end + prevString = curString + + end + textPanel.WrappedText[count] = curString + + function textPanel:Paint(w, h) + + if !self.WrappedText then return end + + for k, v in pairs(self.WrappedText) do + local old = DisableClipping( true ) + draw.SimpleText(v, "mgbase_statName", 10 , (h * 0.5) + ((k - 1) * 50), attachment.CustomTextColor || whiteColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + DisableClipping( old ) + end + + local bPositive = true + end + + panel.hover:SetTall(panel.hover:GetTall() + 50) + statsGrid:AddItem(textPanel) + end + + end +end + +local function closeStatsInfo(panel) + if (!IsValid(panel.hover)) then + return + end + + panel.hover:Remove() +end + +local categoryScrollBarValue = {} + +local function openCategoryList(categoryName, weapon, buttonFrom) + local background = makePopupMenu() + local atts = {} + + for slot, attachmentClasses in pairs(weapon.Customization) do + for i, attachmentClass in pairs(attachmentClasses) do + if (MW_ATTS[attachmentClass] == nil) then + continue + end + + local att = table.Copy(weapon:GetStoredAttachment(attachmentClass)) + if (att.Category == categoryName && i > 1 && MW_ATTS[attachmentClass] != nil && weapon:GetAttachmentInUseForSlot(slot).ClassName != attachmentClass) then + atts[#atts + 1] = att + end + end + end + + if (#atts <= 0) then + --failsafe somehow + background:Remove() + return + end + + if (categoryScrollBarValue[categoryName] == nil) then + categoryScrollBarValue[categoryName] = 0 + end + + local menu = vgui.Create("DPanel", background) + menu:SetSize(400, ScrH() * 0.6) + menu:Center() + + local x,y = menu:GetPos() + menu:SetPos(x, ScrH()) + menu:MoveTo(x, y, 0.1, 0, -1) + + function menu:Paint(width, height) + end + + local headerPanel = vgui.Create("DPanel", menu) + headerPanel:SetText("") + headerPanel:Dock(TOP) + headerPanel:SetSize(0, 40) + headerPanel:DockMargin(20, 0, 20, 10) + function headerPanel:Paint(w, h) + local text = string.upper(categoryName) + local ltl = MWBLTL.Get("Atts_Category_"..string.gsub(categoryName, " ", "_")) + draw.SimpleText(ltl or text, "mgbase_attSlotMenu", 0, h * 0.5, whiteColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + end + + makeCloseButton(headerPanel, background) + + local scroll = makeScrollBar(menu, RIGHT) + local vbar = scroll:GetVBar() + + vbar:AnimateTo(categoryScrollBarValue[categoryName], 0.25, 0, -1) + + function vbar:OnRemove() + categoryScrollBarValue[categoryName] = self:GetScroll() + end + + local attachmentsGrid = vgui.Create("DGrid", scroll) + attachmentsGrid:SetPos(0, 0) + attachmentsGrid:SetCols(1) + attachmentsGrid:SetColWide(menu:GetWide()) + attachmentsGrid:SetRowHeight(80) + attachmentsGrid:Dock(FILL) + attachmentsGrid:DockMargin(20, 0, 0, 0) + + table.sort(atts, function(a, b) + local aFav = mw_utils.IsAssetFavorite(weapon:GetClass(), a.ClassName) + local bFav = mw_utils.IsAssetFavorite(weapon:GetClass(), b.ClassName) + + if (!aFav && bFav) then + return false + elseif (aFav && !bFav) then + return true + elseif ((aFav && bFav) || (!aFav && !bFav)) then + return a.Name < b.Name + end + end) + + for _, attachment in pairs(atts) do + --panel to hold button + local attachmentPanel = vgui.Create("DPanel") + attachmentPanel:SetSize(attachmentsGrid:GetColWide() * 0.9, attachmentsGrid:GetRowHeight()) + function attachmentPanel:Paint(w, h) + end + + local but = vgui.Create("DButton", attachmentPanel) + but:SetText("") + but:Dock(FILL) + but:DockMargin(0, 5, 0, 5) + but.HoverDelta = 0 + but.ClickDelta = 0 + but.bWasHovered = false + but.IsAllowed = true + but.FavoriteDelta = 0 + + function but:Think() + if (!validWeapon(weapon)) then + return + end + + self.IsAllowed = weapon:IsAttachmentAllowed(attachment) + + if (self:IsHovered()) then + openStatsInfo(self, attachment, weapon) + createButtonControls(self, nil, MWBLTL.Get("CuzMenu_Nom_Text1"), 200, self:GetTall()) + else + closeStatsInfo(self) + removeButtonControls(self) + end + end + + function but:Paint(width, height) + if (self:IsHovered()) then + self.HoverDelta = math.Approach(self.HoverDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + + if (!self.bWasHovered) then + surface.PlaySound(hoverAttachmentSounds[math.random(1, #hoverAttachmentSounds)]) + end + self.bWasHovered = true + else + self.HoverDelta = math.Approach(self.HoverDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + self.bWasHovered = false + end + + if (self:IsDown()) then + self.ClickDelta = math.Approach(self.ClickDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + else + self.ClickDelta = math.Approach(self.ClickDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + end + + local currentColor = self.IsAllowed && blackColor || backgroundErrorColor + + --background + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a) + self:DrawFilledRect() + + currentColor = self.IsAllowed && (attachment.UIColor || whiteColor) || errorColor + + --click hold + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a * 0.15 * self.ClickDelta) + self:DrawFilledRect() + + --border hover + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a * self.HoverDelta) + self:DrawOutlinedRect() + + --glow hover + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a * 0.15 * (self.HoverDelta - self.ClickDelta)) + surface.SetMaterial(buttonGlowMaterial) + surface.DrawTexturedRect(0, height * 0.5, width, height * 0.5) + + --favorite bg + self.FavoriteDelta = math.Approach(self.FavoriteDelta, 0, math.min(3 * RealFrameTime(), 0.3)) + + if (self.FavoriteDelta > 0) then + surface.SetDrawColor(yellowColor.r, yellowColor.g, yellowColor.b, yellowColor.a * self.FavoriteDelta) + self:DrawFilledRect() + end + + if (mw_utils.IsAssetFavorite(weapon:GetClass(), attachment.ClassName)) then + surface.SetDrawColor(yellowColor.r, yellowColor.g, yellowColor.b, yellowColor.a) + surface.SetMaterial(favoriteMaterial) + surface.DrawTexturedRect(-1, -1, 16, 16) + end + + --att icon + surface.SetMaterial(attachment.Icon) + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, 255) + surface.DrawTexturedRect(15, 11, 50, 50) --??? + + --att name + local bDeveloper = GetConVar("developer"):GetInt() > 0 + local blocker = weapon:GetBlockerAttachment(attachment) + local bCanShowExtra = attachment.CosmeticChange || blocker != nil || bDeveloper + local hoverColor = Color(currentColor.r, currentColor.g, currentColor.b, currentColor.a * self.HoverDelta) + local yOffset = bCanShowExtra && self.HoverDelta * 10 || 0 + + local name = bDeveloper && attachment.ClassName || attachment.Name + draw.SimpleText(name, "mgbase_attSlotAttachmentInUse:hover", 75, height * 0.5 - yOffset, hoverColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + draw.SimpleText(name, "mgbase_attSlotAttachmentInUse", 75, height * 0.5 - yOffset, currentColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, 2, shadowColor) + + if (bCanShowExtra) then + if (bDeveloper) then + draw.SimpleText(attachment.Base, "mgbase_attSlotAttachmentInUse_IsCosmetic", 75, height * 0.5 + yOffset, hoverColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + elseif (blocker != nil) then + draw.SimpleText(MWBLTL.Get("CuzMenu_Nom_Text5")..blocker.Name, "mgbase_attSlotAttachmentInUse_IsCosmetic", 75, height * 0.5 + yOffset, hoverColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + else + draw.SimpleText(MWBLTL.Get("CuzMenu_Nom_Text6"), "mgbase_attSlotAttachmentInUse_IsCosmetic", 75, height * 0.5 + yOffset, hoverColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + end + end + end + + function but:PaintOver(width, height) + end + + function but:DoClick() + if (!self.IsAllowed) then + surface.PlaySound(selectAttachmentSound) + return + end + + local slotInUse = 1 + local indexInUse = 1 + + for slot, atts in pairs(weapon.Customization) do + for i, att in pairs(atts) do + if (att == attachment.ClassName) then + slotInUse = slot + indexInUse = i + break + end + end + end + + if (attachment.ClassName == weapon:GetAttachmentInUseForSlot(slotInUse).ClassName) then + surface.PlaySound(detachSound) + else + surface.PlaySound(attachSound) + end + + surface.PlaySound(selectAttachmentSound) + mw_utils.SendAttachmentToServer(weapon, slotInUse, indexInUse) + + background:Remove() + end + + function but:DoRightClick() + if (!mw_utils.IsAssetFavorite(weapon:GetClass(), attachment.ClassName)) then + mw_utils.FavoriteAsset(weapon:GetClass(), attachment.ClassName) + surface.PlaySound(favoriteSound) + self.FavoriteDelta = 1 + else + mw_utils.UnfavoriteAsset(weapon:GetClass(), attachment.ClassName) + surface.PlaySound(unfavoriteSound) + end + end + + attachmentsGrid:AddItem(attachmentPanel) + end +end + +local function createUtilityButton(parent, icon, text) + local button = vgui.Create("DButton", parent) + button:SetText("") + button.HoverDelta = 0 + button.ClickDelta = 0 + button.bWasHovered = false + function button:Paint(width, height) + if (self:IsHovered()) then + self.HoverDelta = math.Approach(self.HoverDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + + if (!self.bWasHovered) then + surface.PlaySound(hoverAttachmentSounds[math.random(1, #hoverAttachmentSounds)]) + end + + self.bWasHovered = true + else + self.HoverDelta = math.Approach(self.HoverDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + self.bWasHovered = false + end + + if (self:IsDown()) then + self.ClickDelta = math.Approach(self.ClickDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + else + self.ClickDelta = math.Approach(self.ClickDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + end + + local currentColor = blackColor + + --background + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a) + self:DrawFilledRect() + + currentColor = whiteColor + + --click hold + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a * 0.15 * self.ClickDelta) + self:DrawFilledRect() + + --border hover + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, Lerp(self.HoverDelta, 45, 255)) + self:DrawOutlinedRect() + + --glow hover + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a * Lerp(self.ClickDelta, 0.1, 0)) + surface.SetMaterial(cursorGlowMaterial) + local x, y = self:ScreenToLocal(gui.MouseX(), gui.MouseY()) + surface.DrawTexturedRect(x - 70, y - 70, 140, 140) + + --icon + if (icon != nil) then + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, Lerp(self.HoverDelta, 150, 255)) + surface.SetMaterial(icon) + surface.DrawTexturedRect(10, 10, width - 20, height - 20) + end + + if (text != nil && text != "") then + local hoverColor = Color(currentColor.r, currentColor.g, currentColor.b, currentColor.a * self.HoverDelta) + draw.SimpleText(text, "mgbase_utilityButton:hover", width * 0.5, height * 0.5, hoverColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + draw.SimpleText(text, "mgbase_utilityButton", width * 0.5, height * 0.5, currentColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, shadowColor) + end + end + + return button +end + +local lastScroll = 0 +local function openCustomizationMenu(weapon) + if (IsValid(MW_CUSTOMIZEMENU)) then + return + end + + surface.PlaySound(openSound) + gui.EnableScreenClicker(true) + + MW_CUSTOMIZEMENU = vgui.Create("DFrame") + MW_CUSTOMIZEMENU:SetPos(0, 0) + MW_CUSTOMIZEMENU:SetSize(ScrW(), ScrH()) + MW_CUSTOMIZEMENU:ShowCloseButton(false) + MW_CUSTOMIZEMENU:SetDraggable(false) + MW_CUSTOMIZEMENU:Center() + MW_CUSTOMIZEMENU:SetTitle("") + MW_CUSTOMIZEMENU.AlphaDelta = 0 + function MW_CUSTOMIZEMENU:Paint(width, height) + if (!validWeapon(weapon)) then + return + end + + weapon:DrawStats(self) + + if (!LocalPlayer():KeyDown(IN_USE)) then + self.AlphaDelta = Lerp(math.min(10 * RealFrameTime(), 1), self.AlphaDelta, 1) + else + self.AlphaDelta = Lerp(math.min(10 * RealFrameTime(), 1), self.AlphaDelta, 0) + end + + --open blur thing + local size = 1500 * self.AlphaDelta + surface.SetMaterial(customizeMenuOpenMaterial) + surface.SetDrawColor(0, 0, 0, math.sin(self.AlphaDelta * math.pi) * 200) + surface.DrawTexturedRect(width * 0.5 - size * 0.5, height * 0.5 - size * 0.5, size, size) + + surface.SetMaterial(noMaterial) + surface.SetDrawColor(255, 255, 255, math.sin(self.AlphaDelta * math.pi) * 3) + surface.DrawTexturedRect(width * 0.5 - size * 0.5, height * 0.5 - size * 0.5, size, size) + + --title + local animHeight = 20 + draw.SimpleTextOutlined(MWBLTL.Get("CuzMenu_Title_Text"), "mgbase_attTitle_blur", ScrW() * 0.5, ScrH() * 0.1 - animHeight + (1 - self.AlphaDelta) * animHeight, Color(255, 255, 255, self.AlphaDelta * math.abs(math.sin(CurTime() * 3) * 255)), TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM, 2, Color(0, 0, 0, self.AlphaDelta * 20)) + draw.SimpleTextOutlined(MWBLTL.Get("CuzMenu_Title_Text"), "mgbase_attTitle", ScrW() * 0.5, ScrH() * 0.1 - animHeight + (1 - self.AlphaDelta) * animHeight, Color(255, 255, 255, self.AlphaDelta * 255), TEXT_ALIGN_CENTER, TEXT_ALIGN_BOTTOM, 2, Color(0, 0, 0, self.AlphaDelta * 20)) + + surface.SetDrawColor(255, 255, 255, self.AlphaDelta * 255) + surface.DrawLine(ScrW() * 0.5 - self.AlphaDelta * 200, ScrH() * 0.1, ScrW() * 0.5 + self.AlphaDelta * 200, ScrH() * 0.1) + + --gun name + draw.SimpleTextOutlined(weapon.PrintName, "mgbase_attWeaponName", ScrW() * 0.5, ScrH() * 0.1 + animHeight - (1 - self.AlphaDelta) * animHeight, Color(255, 255, 255, self.AlphaDelta * 255), TEXT_ALIGN_CENTER, TEXT_ALIGN_TOP, 2, Color(0, 0, 0, self.AlphaDelta * 20)) + end + + function MW_CUSTOMIZEMENU:Think() + if (!validWeapon(weapon)) then + closeCustomizationMenu() + self:Remove() --why do i need this + end + end + + local categories = {} + + for slot, atts in pairs(weapon.Customization) do + for ind, attClass in pairs(atts) do + if (ind <= 1) then + continue + end + + if (MW_ATTS[attClass] == nil) then + continue + end + + local att = weapon:GetStoredAttachment(attClass) + local category = att.Category + + if (category == nil) then + continue + end + + categories[category] = (categories[category] || 0) + (weapon:IsAttachmentAllowed(att) && 1 || 0) + end + end + + if (table.IsEmpty(categories)) then + return + end + + local leftSidePanel = vgui.Create("DPanel", MW_CUSTOMIZEMENU) + leftSidePanel:SetPos(100, ScrH() * 0.2) + leftSidePanel:SetSize(600, ScrH() * 0.7) + function leftSidePanel:Paint(w, h) + end + function leftSidePanel:Think() + local x, y = self:GetPos() + + if (!LocalPlayer():KeyDown(IN_USE)) then + x = math.Approach(x, 100, 5000 * RealFrameTime()) + else + x = math.Approach(x, -600, 5000 * RealFrameTime()) + end + + self:SetPos(x, y) + end + + --holder for categories with scroll bar + local categoriesMenu = vgui.Create("DScrollPanel", leftSidePanel) + categoriesMenu:SetPos(0, 0) + categoriesMenu:SetSize(leftSidePanel:GetWide(), leftSidePanel:GetTall() - 100) + + --categoriesMenu:MoveTo(100, ScrH() * 0.2, 0.3, 0, 10) + function categoriesMenu:Paint(w, h) + -- surface.SetDrawColor(255, 0, 0, 255) + -- self:DrawFilledRect() + end + + local sbar = categoriesMenu:GetVBar() + sbar:Dock(LEFT) + sbar.LastScrollValue = sbar:GetOffset() + sbar:AnimateTo(lastScroll, 0.25, 0, -1) + + function sbar:Paint(w, h) + end + function sbar:Think() + if (self:GetOffset() != self.LastScrollValue && math.abs(self:GetOffset() - self.LastScrollValue) > 10) then + surface.PlaySound(scrollSound) + self.LastScrollValue = self:GetOffset() + end + end + function sbar.btnUp:Paint(w, h) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a) + surface.DrawRect(w * 0.5 - 2, 0, 4, h) + end + function sbar.btnDown:Paint(w, h) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a) + surface.DrawRect(w * 0.5 - 2, 0, 4, h) + end + function sbar.btnGrip:Paint(w, h) + surface.SetDrawColor(whiteColor.r, whiteColor.g, whiteColor.b, whiteColor.a) + surface.DrawRect(w * 0.5 - 1, 10, 2, h - 20) + end + function sbar:OnRemove() + lastScroll = self:GetScroll() + end + --grid for categories + local categoriesGrid = vgui.Create("DGrid", categoriesMenu) + categoriesGrid:SetPos(0, 0) + categoriesGrid:SetCols(1) + categoriesGrid:SetColWide(categoriesMenu:GetWide()) + categoriesGrid:SetRowHeight(80) + categoriesGrid:Dock(FILL) + categoriesGrid:DockMargin(20, 0, 0, 0) + + for categoryName, count in SortedPairs(categories) do + --panel to hold buitton + attachment in use panel + local categoryPanel = vgui.Create("DPanel") + categoryPanel:SetSize(categoriesGrid:GetColWide(), categoriesGrid:GetRowHeight()) + function categoryPanel:Paint(w, h) + -- surface.SetDrawColor(255, 0, 0, 255) + -- self:DrawFilledRect() + end + + --button to select category + local but = vgui.Create("DButton", categoryPanel) + but:SetText("") + but:SetSize(200, categoriesGrid:GetRowHeight()) + but:Dock(LEFT) + but:DockMargin(0, 5, 0, 5) + but.HoverDelta = 0 + but.ClickDelta = 0 + but.AttachmentDelta = 0 + but.bWasHovered = false + but.AvailableAttachments = count + + function but:Think() + if (!validWeapon(weapon)) then + return + end + + self.AvailableAttachments = 0 + + for slot, atts in pairs(weapon.Customization) do + for ind, attClass in pairs(atts) do + if (ind <= 1) then + continue + end + + if (MW_ATTS[attClass] == nil) then + continue + end + + local att = weapon:GetStoredAttachment(attClass) + + if (att.Category != categoryName || att.ClassName == weapon:GetAttachmentInUseForSlot(slot).ClassName) then + continue + end + + self.AvailableAttachments = self.AvailableAttachments + (weapon:IsAttachmentAllowed(att) && 1 || 0) + end + end + end + + function but:Paint(width, height) + if (self:IsHovered()) then + self.HoverDelta = math.Approach(self.HoverDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + + if (!self.bWasHovered) then + surface.PlaySound(hoverSounds[math.random(1, #hoverSounds)]) + end + self.bWasHovered = true + else + self.HoverDelta = math.Approach(self.HoverDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + self.bWasHovered = false + end + + if (!self.inUsePanel:IsHovered()) then + self.inUsePanel.HoverDelta = self.HoverDelta + end + + if (self:IsDown()) then + self.ClickDelta = math.Approach(self.ClickDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + else + self.ClickDelta = math.Approach(self.ClickDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + end + + local currentColor = self.AvailableAttachments <= 0 && backgroundErrorColor || blackColor + + --background + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a) + self:DrawFilledRect() + + currentColor = self.AvailableAttachments <= 0 && errorColor || whiteColor + + --click hold + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a * 0.15 * self.ClickDelta) + self:DrawFilledRect() + + --border hover + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a * self.HoverDelta) + self:DrawOutlinedRect() + + --glow hover + surface.SetDrawColor(currentColor.r, currentColor.g, currentColor.b, currentColor.a * 0.15 * (self.HoverDelta - self.ClickDelta)) + surface.SetMaterial(buttonGlowMaterial) + surface.DrawTexturedRect(0, height * 0.75, width, height * 0.25) + + --category + local text = categoryName + local ltl = MWBLTL.Get("Atts_Category_"..string.gsub(categoryName, " ", "_")) + draw.SimpleText(string.upper(ltl or text), "mgbase_attSlotMenu", width * 0.5, height * 0.5, currentColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + + local hoverColor = Color(currentColor.r, currentColor.g, currentColor.b, currentColor.a * self.HoverDelta) + draw.SimpleText(string.upper(ltl or text), "mgbase_attSlotMenu:hover", width * 0.5, height * 0.5, hoverColor, TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER) + end + + --panel to show what attachment we have in use (empty if default) + local removeAttachmentButton = vgui.Create("DButton", categoryPanel) + removeAttachmentButton:SetSize(400, categoriesGrid:GetRowHeight()) + removeAttachmentButton:SetText("") + removeAttachmentButton:Dock(LEFT) + removeAttachmentButton:DockMargin(10, 0, 0, 0) + removeAttachmentButton.HoverDelta = 0 + removeAttachmentButton.HoverDelta2 = 0 --alternative so att button doesn't higlight other elements + removeAttachmentButton.ClickDelta = 0 + removeAttachmentButton.FavoriteDelta = 0 + removeAttachmentButton.AttachmentDelta = 0 + removeAttachmentButton.LastAttachmentIndex = 1 + removeAttachmentButton.bShow = true--this is for latency (hide before actual customization update) + + --link to button so we have consistent hover delta anim + but.inUsePanel = removeAttachmentButton + + function removeAttachmentButton:DoRightClick() + local attachmentInUse = nil + + for slot, att in pairs(weapon:GetAllAttachmentsInUse()) do + if (att.Category == categoryName) then + attachmentInUse = att + break + end + end + + if (attachmentInUse == nil) then + return + end + + if (!mw_utils.IsAssetFavorite(weapon:GetClass(), attachmentInUse.ClassName)) then + mw_utils.FavoriteAsset(weapon:GetClass(), attachmentInUse.ClassName) + surface.PlaySound(favoriteSound) + self.FavoriteDelta = 1 + else + mw_utils.UnfavoriteAsset(weapon:GetClass(), attachmentInUse.ClassName) + surface.PlaySound(unfavoriteSound) + end + end + + function removeAttachmentButton:TestHover(x, y) + local x, y = self:ScreenToLocal(x, y) -- Convert to local coordinates + return x >= 0 && y >= 0 && x <= self:GetWide() * 0.65 && y <= self:GetTall() + end + + function removeAttachmentButton:Think() + if (!validWeapon(weapon)) then + return + end + + self:SetEnabled(false) + self:SetCursor("none") + + --attachment in use next to button + local attachmentInUse = nil + + for slot, att in pairs(weapon:GetAllAttachmentsInUse()) do + if (att.Category == categoryName) then + attachmentInUse = att + break + end + end + + if (attachmentInUse == nil) then + return + end + + if (attachmentInUse.Index > 1 && self.bShow) then + self:SetEnabled(true) + self:SetCursor("hand") + end + + if (self.LastAttachmentIndex != attachmentInUse.Index) then + self.AttachmentDelta = 0 + self.ClickDelta = 0 + self.HoverDelta = 0 + self.HoverDelta2 = 0 + self.LastAttachmentIndex = attachmentInUse.Index + self.bShow = true + end + + if (self:IsHovered()) then + openStatsInfo(self, attachmentInUse, weapon) + else + closeStatsInfo(self) + end + end + + function removeAttachmentButton:Paint(width, height) + if (!self.bShow) then + closeStatsInfo(self) + return + end + + if (!validWeapon(weapon)) then + return + end + + local attachmentInUse = nil + + for slot, att in pairs(weapon:GetAllAttachmentsInUse()) do + if (att.Category == categoryName && att.Index > 1) then + attachmentInUse = att + break + end + end + + if (attachmentInUse == nil) then + closeStatsInfo(self) + return + end + + if (self:IsHovered()) then + self.HoverDelta = math.Approach(self.HoverDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + self.HoverDelta2 = math.Approach(self.HoverDelta2, 1, math.min(10 * RealFrameTime(), 0.1)) + + if (!self.bWasHovered) then + surface.PlaySound(hoverAttachmentSounds[math.random(1, #hoverAttachmentSounds)]) + end + + self.bWasHovered = true + else + self.HoverDelta = math.Approach(self.HoverDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + self.HoverDelta2 = math.Approach(self.HoverDelta2, 0, math.min(10 * RealFrameTime(), 0.1)) + self.bWasHovered = false + end + + if (self:IsDown() && !input.IsMouseDown(MOUSE_RIGHT)) then + self.ClickDelta = math.Approach(self.ClickDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + else + self.ClickDelta = math.Approach(self.ClickDelta, 0, math.min(10 * RealFrameTime(), 0.1)) + end + + self.AttachmentDelta = math.Approach(self.AttachmentDelta, 1, math.min(10 * RealFrameTime(), 0.1)) + + surface.SetAlphaMultiplier(self.AttachmentDelta) + + local rightOffset = (1 - self.AttachmentDelta) * 20 + + --background stylish black blur + surface.SetMaterial(removeButtonGlowMaterial) + local color = LerpVector(self.ClickDelta, Vector(0, 0, 0), Vector(100, 0, 0)) + local alpha = Lerp(self.ClickDelta, Lerp(self.HoverDelta, 150, 250), 250) + surface.SetDrawColor(color.x, color.y, color.z, alpha) + surface.DrawTexturedRect(100 + rightOffset - self:GetWide() * 0.5, height * 0.5 - 30, self:GetWide(), 60) + + rightOffset = rightOffset + 10 + + --fav + self.FavoriteDelta = math.Approach(self.FavoriteDelta, 0, math.min(3 * RealFrameTime(), 0.3)) + + if (self.FavoriteDelta > 0) then + surface.SetDrawColor(yellowColor.r, yellowColor.g, yellowColor.b, yellowColor.a * self.FavoriteDelta) + surface.SetMaterial(removeButtonGlowMaterial) + surface.DrawTexturedRect(100 + rightOffset - self:GetWide() * 0.5, height * 0.5 - 30, self:GetWide(), 60) + end + + --att icon + surface.SetDrawColor(255, 255, 255, Lerp(self.HoverDelta - self.ClickDelta, 100, 255)) + surface.SetMaterial(attachmentInUse.Icon) + surface.DrawTexturedRect(rightOffset, height * 0.5 - 20, 40, 40) + + surface.SetDrawColor(200, 0, 0, (self.HoverDelta2 * 0.5 + self.ClickDelta - self.FavoriteDelta) * 255) + surface.SetMaterial(removeAttachmentMaterial) + surface.DrawTexturedRect(rightOffset + 6, height * 0.5 - 16, 28, 32) + + rightOffset = rightOffset + 50 + + --att name + + local colorForAttachment = attachmentInUse.UIColor || whiteColor + draw.SimpleText(attachmentInUse.Name, "mgbase_attSlotAttachmentInUse:hover", rightOffset, height * 0.5, Color(colorForAttachment.r, colorForAttachment.g, colorForAttachment.b, colorForAttachment.a * self.HoverDelta), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + draw.SimpleText(attachmentInUse.Name, "mgbase_attSlotAttachmentInUse", rightOffset, height * 0.5, colorForAttachment, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, 2, shadowColor) + + if (mw_utils.IsAssetFavorite(weapon:GetClass(), attachmentInUse.ClassName)) then + surface.SetDrawColor(yellowColor.r, yellowColor.g, yellowColor.b, yellowColor.a) + surface.SetMaterial(favoriteMaterial) + surface.DrawTexturedRect(-1, 10, 16, 16) + end + + surface.SetAlphaMultiplier(1) + end + + function removeAttachmentButton:DoClick() + local attachmentInUse = nil + + for slot, att in pairs(weapon:GetAllAttachmentsInUse()) do + if (att.Category == categoryName && att.Index > 1) then + attachmentInUse = att + break + end + end + + if (attachmentInUse == nil) then + return + end + + surface.PlaySound(detachSound) + surface.PlaySound(selectAttachmentSound) + + mw_utils.SendAttachmentToServer(weapon, attachmentInUse.Slot, attachmentInUse.Index) + + self.bShow = false + end + + function but:DoClick() + if (self.AvailableAttachments > 0) then + surface.PlaySound(selectCategorySound) + openCategoryList(categoryName, weapon, removeAttachmentButton) + self.inUsePanel.LastAttachmentIndex = 1 + else + surface.PlaySound(closeAttachmentsSound) + end + end + + categoriesGrid:AddItem(categoryPanel) + end + + local bottomPanel = vgui.Create("DPanel", MW_CUSTOMIZEMENU) + bottomPanel:SetSize(ScrW(), ScrH() * 0.2) + bottomPanel:SetPos(0, ScrH() * 0.9 - 50) + function bottomPanel:Paint() + end + function bottomPanel:Think() + local x, y = self:GetPos() + + if (!LocalPlayer():KeyDown(IN_USE)) then + y = math.Approach(y, ScrH() * 0.9 - 50, 5000 * RealFrameTime()) + else + y = math.Approach(y, ScrH() * 0.9 + 450, 5000 * RealFrameTime()) + end + + self:SetPos(x, y) + end + + -- exit button + --[[local exitButton = createUtilityButton(bottomPanel, nil, MWBLTL.Get("CuzMenu_Nom_Text7")) + exitButton:SetSize(150, 74) + exitButton:SetPos(ScrW() * 0.5 - 75, 0) + function exitButton:DoClick() + closeCustomizationMenu() + end]] + + --PRESETS BUTTON + local presetsButton = createUtilityButton(bottomPanel, presetsMaterial, nil) + presetsButton:SetSize(66, 66) + presetsButton:SetPos(ScrW() * 0.5 - 100 - 33, 4) + function presetsButton:DoClick() + surface.PlaySound(selectCategorySound) + openPresetsMenu(weapon) + end + + --RESET BUTTON + local resetButton = createUtilityButton(bottomPanel, resetMaterial, nil) + resetButton:SetSize(66, 66) + resetButton:SetPos(ScrW() * 0.5 - 33, 4) + function resetButton:DoClick() + surface.PlaySound(resetSound) + + for slot, att in pairs(weapon:GetAllAttachmentsInUse()) do + if (att.Index > 1) then --just sending what we need + mw_utils.SendAttachmentToServer(weapon, slot, 1) + end + end + end + + --RANDOM BUTTON + local randomButton = createUtilityButton(bottomPanel, randomMaterial, nil) + randomButton:SetSize(66, 66) + randomButton:SetPos(ScrW() * 0.5 + 100 - 33, 4) + function randomButton:DoClick() + surface.PlaySound(randomSound) + + for slot, atts in pairs(weapon.Customization) do + mw_utils.SendAttachmentToServer(weapon, slot, math.random(#atts)) + end + end +end + +function SWEP:CustomizationMenu() + if (self:HasFlag("Customizing")) then + openCustomizationMenu(self) + else + closeCustomizationMenu(self) + end +end + +function SWEP:GetStatColor(originalStat, currentStat, statInfoIndex) + local statInfo = self.StatInfo[statInfoIndex] + + if (statInfo != nil) then + if (originalStat != currentStat) then + local isPro = currentStat > originalStat + + if (!statInfo.ProIfMore) then + isPro = currentStat < originalStat + end + + return isPro && Color(0, 200, 0, 255) || Color(200, 0, 0, 255) + end + end + + return Color(255, 255, 255, 255) +end + +local maxStats = 10 + +function SWEP:DrawStat(statInfoIndex, append, index, originalStat, currentStat) + local scale = ScrH() / 1080 + local spacing = (index * 30) - (maxStats * 0.5 * 30) * scale + local x,y = ScrW() * 0.05, ScrH() * 0.5 + + --surface.SetMaterial(blurMaterial) + --surface.SetDrawColor(255, 255, 255, 255) + + --render.UpdateScreenEffectTexture() + --surface.DrawTexturedRect(x - 23 * scale, y + spacing - 14, 350, 28) + + surface.SetDrawColor(blackColor.r, blackColor.g, blackColor.b, blackColor.a) + surface.DrawRect(x - 23 * scale, y + spacing - 14, MWBLTLXCoordinate.Line[GetConVar("gmod_language"):GetString()], 28) + + local info = self.StatInfo[statInfoIndex].Name + local ltl = MWBLTL.Get("StatInfo_"..statInfoIndex) + draw.SimpleTextOutlined(ltl..":" or info..":", "mgbase_firemode", x - 20 * scale, y + spacing, Color(255, 255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, 20)) + draw.SimpleTextOutlined(math.Round(currentStat, 2)..append, "mgbase_firemode", x + MWBLTLXCoordinate.Text[GetConVar("gmod_language"):GetString()] * scale, y + spacing, self:GetStatColor(originalStat, currentStat, statInfoIndex), TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, 20)) + + return x - 20 * scale, y + spacing +end + +function SWEP:DrawStats(panel) + if (!self:GetOwner():KeyDown(IN_USE)) then + return + end + + surface.SetAlphaMultiplier(1 - panel.AlphaDelta) + + local scale = ScrH() / 1080 + local spacing = 30 * scale + local x,y = ScrW() * 0.05, ScrH() * 0.5 + + draw.SimpleTextOutlined(MWBLTL.Get("CuzMenu_Nom_Text8"), "mgbase_firemode", x + 150 * scale, y - (maxStats * 0.5 * 35) * scale, Color(255, 255, 255, 200), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 2, Color(0, 0, 0, 20)) + + local original = weapons.Get(self:GetClass()) --inheritance gotta copy + local c = 1 + self:DrawStat("DamageClose", "", c, original.Bullet.Damage[1], self.Bullet.Damage[1]) + c = c + 1 + + self:DrawStat("DamageRange", "", c, original.Bullet.Damage[2], self.Bullet.Damage[2]) + c = c + 1 + + self:DrawStat("RPM", "", c, original.Primary.RPM, self.Primary.RPM) + c = c + 1 + + self:DrawStat("EffectiveRange", MWBLTL.Get("CuzMenu_Nom_Text9"), c, original.Bullet.EffectiveRange, self.Bullet.EffectiveRange) + c = c + 1 + + if (self.Projectile == nil) then + self:DrawStat("MaxRange", MWBLTL.Get("CuzMenu_Nom_Text9"), c, original.Bullet.Range, self.Bullet.Range) + c = c + 1 + end + + local statBeforeLineX, statBeforeLineY = self:DrawStat("Accuracy", "", c, original.Cone.Hip * 100, self.Cone.Hip * 100) + c = c + 1 + + surface.SetDrawColor(255, 255, 255, 200) + surface.DrawLine(statBeforeLineX, statBeforeLineY + spacing, statBeforeLineX + MWBLTLXCoordinate.Line[GetConVar("gmod_language"):GetString()] - 5, statBeforeLineY + spacing) + c = c + 1 + + self:DrawStat("AimLength", MWBLTL.Get("CuzMenu_Nom_Text10"), c, original.Animations.Ads_In.Length / (original.Animations.Ads_In.Fps / 30), self:GetAnimLength("Ads_In")) + c = c + 1 + + local reloadAnimIndex = self:ChooseReloadAnim() + + if (reloadAnimIndex != nil) then + self:DrawStat("ReloadLength", MWBLTL.Get("CuzMenu_Nom_Text10"), c, original.Animations[reloadAnimIndex].Length / (original.Animations[reloadAnimIndex].Fps / 30), self:GetAnimLength(reloadAnimIndex)) + c = c + 1 + end + + self:DrawStat("DrawLength", MWBLTL.Get("CuzMenu_Nom_Text10"), c, original.Animations.Draw.Length / (original.Animations.Draw.Fps / 30), self:GetAnimLength("Draw")) + c = c + 1 + + self:DrawStat("HolsterLength", MWBLTL.Get("CuzMenu_Nom_Text10"), c, original.Animations.Holster.Length / (original.Animations.Holster.Fps / 30), self:GetAnimLength("Holster")) + c = c + 1 + + statBeforeLineX, statBeforeLineY = self:DrawStat("SprintLength", MWBLTL.Get("CuzMenu_Nom_Text10"), c, original.Animations.Sprint_Out.Length / (original.Animations.Sprint_Out.Fps / 30), self:GetAnimLength("Sprint_Out")) + c = c + 1 + + surface.SetAlphaMultiplier(1) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/client/cl_spawnmenu.lua b/lua/weapons/mg_base/modules/client/cl_spawnmenu.lua new file mode 100644 index 0000000..9b049fd --- /dev/null +++ b/lua/weapons/mg_base/modules/client/cl_spawnmenu.lua @@ -0,0 +1,573 @@ +AddCSLuaFile() + +if (SERVER) then + return +end + +hook.Add("AddToolMenuCategories", "Mw_CustomCategory", function() + spawnmenu.AddToolCategory("Options", "mw_options", "MW Options") +end) + +local comboBox = nil + +local function addAnimList(panel) + if (IsValid(LocalPlayer():GetActiveWeapon()) && LocalPlayer():GetActiveWeapon().Animations != nil) then + if (comboBox != nil) then + comboBox:Remove() + end + + comboBox = vgui.Create("DComboBox", panel) + + for animName, a in pairs(LocalPlayer():GetActiveWeapon().Animations) do + comboBox:AddChoice(animName) + end + + comboBox.OnSelect = function(self, index, value) + RunConsoleCommand("mgbase_debug_animdelta", "0") + timer.Simple(0.04, function() + LocalPlayer():GetActiveWeapon():PlayViewModelAnimation(value) + end) + end + + panel:AddItem(comboBox) + RunConsoleCommand("mgbase_debug_animdelta", "0") + end +end + +local function getRig() + local currentRig = GetConVar("mgbase_rig"):GetString() + + if (MW_RIGS[currentRig] != nil) then + return currentRig + end + + return "chands" +end + +local function getGloves() + local currentGloves = GetConVar("mgbase_gloves"):GetString() + + if (MW_GLOVES[currentGloves] != nil) then + return currentGloves + end + + return "" +end + +local function addGloveSkinControls(panel) + if (IsValid(panel.gloveSkinBox)) then + panel.gloveSkinBox:Remove() + end + + if (IsValid(panel.gloveSkinLabel)) then + panel.gloveSkinLabel:Remove() + end + + if (MW_GLOVES[getGloves()] == nil) then + return + end + + panel.gloveSkinBox, panel.gloveSkinLabel = panel:ComboBox("Gloves Skin", "mgbase_gloves_skin") + + --populate the combobox + for i, skin in SortedPairs(MW_GLOVES[getGloves()].Skins) do + panel.gloveSkinBox:AddChoice(skin, i - 1, GetConVar("mgbase_gloves_skin"):GetInt() == i - 1) + end +end + +local function addGloveControls(panel) + if (IsValid(panel.gloveModelBox)) then + panel.gloveModelBox:Remove() + end + + if (IsValid(panel.gloveModelLabel)) then + panel.gloveModelLabel:Remove() + end + + if (IsValid(panel.gloveSkinBox)) then + panel.gloveSkinBox:Remove() + end + + if (IsValid(panel.gloveSkinLabel)) then + panel.gloveSkinLabel:Remove() + end + + if (getRig() == "chands") then + return + end + + --MODEL + panel.gloveModelBox, panel.gloveModelLabel = panel:ComboBox("Gloves", "mgbase_gloves") + + local oldSelect = panel.gloveModelBox.OnSelect + panel.gloveModelBox.OnSelect = function(cb, index, value, data) + oldSelect(cb, index, value, data) + RunConsoleCommand("mgbase_gloves_skin", "0") + + timer.Simple(0, function() + addGloveSkinControls(panel) + end) + end + + --populate the combobox + for cls, glove in SortedPairs(MW_GLOVES) do + panel.gloveModelBox:AddChoice(glove.Name, cls, getGloves() == cls) + end + + --SKIN + addGloveSkinControls(panel) +end + +local function addRigSkinControls(panel) + if (IsValid(panel.rigSkinBox)) then + panel.rigSkinBox:Remove() + end + + if (IsValid(panel.rigSkinLabel)) then + panel.rigSkinLabel:Remove() + end + + if (getRig() == "chands") then + return + end + + panel.rigSkinBox, panel.rigSkinLabel = panel:ComboBox("Rig Skin", "mgbase_rig_skin") + + --populate the combobox + for i, skin in SortedPairs(MW_RIGS[getRig()].Skins) do + panel.rigSkinBox:AddChoice(skin, i - 1, GetConVar("mgbase_rig_skin"):GetInt() == i - 1) + end +end + +local function addRigControls(panel) + --RIG MODEL BOX + if (IsValid(panel.rigModelBox)) then + panel.rigModelBox:Remove() + end + + if (IsValid(panel.rigModelLabel)) then + panel.rigMrigModelLabelodelBox:Remove() + end + + panel.rigModelBox, panel.rigModelLabel = panel:ComboBox("Rig", "mgbase_rig") + panel.rigModelBox:AddChoice("C_Hands", "chands", getRig() == "chands") + + --populate the combobox + for cls, rig in SortedPairs(MW_RIGS) do + panel.rigModelBox:AddChoice(rig.Name, cls, getRig() == cls) + end + + local oldSelect = panel.rigModelBox.OnSelect + panel.rigModelBox.OnSelect = function(cb, index, value, data) + oldSelect(cb, index, value, data) + RunConsoleCommand("mgbase_rig_skin", "0") + + timer.Simple(0, function() + addRigSkinControls(panel) + addGloveControls(panel) + end) + end + ---- + + --RIG SKIN BOX + addRigSkinControls(panel) + + --GLOVES + addGloveControls(panel) +end + +local function addBinder(panel, text, convar) + local container = vgui.Create("DPanel", panel) + container:SetTall(30) + container:DockPadding(10, 2, 10, 2) + + function container:Paint(w, h) + surface.SetDrawColor(250, 250, 250, 255) + self:DrawFilledRect() + end + + local label = vgui.Create("DLabel", container) + label:SetText(text) + label:SetTextColor(Color(0, 0, 0, 255)) + label:Dock(LEFT) + + local binder = vgui.Create("DBinder", container) + binder:Dock(RIGHT) + binder:SetWide(100) + binder:SetValue(GetConVar(convar):GetInt()) + function binder:OnChange(iNum) + GetConVar(convar):SetInt(iNum) + end + + panel:AddItem(container) +end + +hook.Add("PopulateToolMenu", "CustomMenuSettings", function() + spawnmenu.AddToolMenuOption("Options", "mw_options", "mw_vmodel", MWBLTL.Get("SpawnMenu_VM_Title"), "", "", function(panel) + panel:ClearControls() + + panel:NumSlider(MWBLTL.Get("SpawnMenu_VM_Text1"), "mgbase_fx_vmfov", 0.5, 2, 2) + panel:ControlHelp(MWBLTL.Get("SpawnMenu_VM_Help1")) + + panel:NumSlider(MWBLTL.Get("SpawnMenu_VM_Text2"), "mgbase_fx_vmfov_ads", 0.5, 2, 2) + panel:ControlHelp(MWBLTL.Get("SpawnMenu_VM_Help2")) + panel:ControlHelp(MWBLTL.Get("SpawnMenu_VM_Help3")) + + local divider = vgui.Create("DHorizontalDivider") + panel:AddItem(divider) + + panel:Help(MWBLTL.Get("SpawnMenu_VM_Help4")) + addRigControls(panel) + end) + + spawnmenu.AddToolMenuOption("Options", "mw_options", "mw_fx", MWBLTL.Get("SpawnMenu_Effs_Title"), "", "", function(panel) + panel:ClearControls() + + --panel:CheckBox("Barrel Smoke", "mgbase_fx_smoke") + --panel:ControlHelp("Toggle overheat smoke coming from the barrels.") + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Effs_Text2"), "mgbase_fx_blur") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Effs_Help2")) + end) + + spawnmenu.AddToolMenuOption("Options", "mw_options", "mw_hud", MWBLTL.Get("SpawnMenu_HUD_Title"), "", "", function(panel) + panel:ClearControls() + + panel:Help(MWBLTL.Get("SpawnMenu_HUD_Help1")) + + local DermaColorCombo = vgui.Create("DColorCombo", panel) + DermaColorCombo:SetColor(string.ToColor(GetConVar("mgbase_hud_xhaircolor"):GetString())) + function DermaColorCombo:OnValueChanged(col) + RunConsoleCommand("mgbase_hud_xhaircolor", string.FromColor(col)) + end + + panel:AddItem(DermaColorCombo) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_HUD_Text1"), "mgbase_hud_xhair") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_HUD_Help2")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_HUD_Text2"), "mgbase_hud_firemode") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_HUD_Help3")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_HUD_Text3"), "mgbase_hud_flashlight") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_HUD_Help4")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_HUD_Text4"), "mgbase_hud_sights") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_HUD_Help5")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_HUD_Text5"), "mgbase_fx_laser_weaponcolor") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_HUD_Help6")) + end) + + spawnmenu.AddToolMenuOption("Options", "mw_options", "mw_controls", MWBLTL.Get("SpawnMenu_Cont_Title"), "", "", function(panel) + panel:ClearControls() + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Cont_Text1"), "mgbase_toggleaim") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Cont_Help1")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Cont_Text2"), "mgbase_autoreload") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Cont_Help2")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Cont_Text3"), "mgbase_manualrechamber") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Cont_Help3")) + + --[[panel:Help("Customize Menu Bind") + local binder = vgui.Create("DBinder", panel) + binder:SetValue(input.GetKeyCode(input.LookupBinding("mgbase_customize"))) + + function binder:OnChange(num) + RunConsoleCommand("bind mgbase_customize "..input.LookupKeyBinding(num)) + end + panel:AddItem(binder) + panel:ControlHelp("Once this is set, the menu won't show up when pressing the context menu key!")]] --doesn't work lol + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Cont_Text4"), "mgbase_aimassist") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Cont_Help6")) + + local divider = vgui.Create("DPanel", panel) + divider:SetTall(4) + panel:AddItem(divider) + + local method = math.Clamp(GetConVar("mgbase_presetspawnmethod"):GetInt(), 0, 3) + local combo, l = panel:ComboBox(MWBLTL.Get("SpawnMenu_Cont_Text5"), "mgbase_presetspawnmethod") + combo:SetWide(200) + combo:AddChoice(MWBLTL.Get("SpawnMenu_Cont_Text6"), 0, method == 0) + combo:AddChoice(MWBLTL.Get("SpawnMenu_Cont_Text7"), 1, method == 1) + combo:AddChoice(MWBLTL.Get("SpawnMenu_Cont_Text8"), 2, method == 2) + combo:AddChoice(MWBLTL.Get("SpawnMenu_Cont_Text9"), 3, method == 3) + + --panel:Button(MWBLTL.Get("SpawnMenu_Cont_Text10"), "mgbase_customize") + + divider = vgui.Create("DPanel", panel) + divider:SetTall(4) + panel:AddItem(divider) + + addBinder(panel, "Melee", "mgbase_binds_melee") + addBinder(panel, "Low Carry", "mgbase_binds_safety") + addBinder(panel, "Switch Sights", "mgbase_binds_switchsights") + addBinder(panel, "Firemode", "mgbase_binds_firemode") + addBinder(panel, "Customize", "mgbase_binds_customize") + addBinder(panel, "Holster", "mgbase_binds_holster") + addBinder(panel, "Inspect", "mgbase_binds_inspect") + panel:ControlHelp("Press again while inspecting to stop animation.") + end) + + spawnmenu.AddToolMenuOption("Options", "mw_options", "mw_debug", MWBLTL.Get("SpawnMenu_Debug_Title"), "", "", function(panel) + panel:ClearControls() + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Debug_Text1"), "mgbase_debug_freeview") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Debug_Help1")) + + --[[panel:CheckBox(MWBLTL.Get("SpawnMenu_Debug_Text2"), "mgbase_debug_freezeanim") + panel:NumSlider(MWBLTL.Get("SpawnMenu_Debug_Help2"), "mgbase_debug_animdelta", 0, 1, 4) + + local buttonToReloadAnims = vgui.Create("DButton", panel) + buttonToReloadAnims:SetText(MWBLTL.Get("SpawnMenu_Debug_Text3")) + buttonToReloadAnims.DoClick = function() + addAnimList(panel) + end + panel:AddItem(buttonToReloadAnims)]] + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Debug_Text4"), "mgbase_debug_crosshair") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Debug_Help3")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Debug_Text5"), "mgbase_debug_disablebreathing") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Debug_Help4")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Debug_Text6"), "mgbase_debug_reverb") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Debug_Help5")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Debug_Text7"), "mgbase_debug_range") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Debug_Help6")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Debug_Text8"), "mgbase_debug_projectiles") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Debug_Help7")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Debug_Text9"), "mgbase_debug_vmrender") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Debug_Help8")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Debug_Text10"), "mgbase_debug_wmrender") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Debug_Help9")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_Debug_Text11"), "mgbase_debug_mag") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_Debug_Help10")) + end) + + spawnmenu.AddToolMenuOption("Options", "mw_options", "mw_svcontrols", MWBLTL.Get("SpawnMenu_SC_Title"), "", "", function(panel) + panel:ClearControls() + + if (!LocalPlayer():IsAdmin()) then + panel:ControlHelp("shoo") + return + end + + panel:NumSlider(MWBLTL.Get("SpawnMenu_SC_Text1"), "mgbase_sv_pvpdamage", 0, 5, 1) + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help1")) + + panel:NumSlider(MWBLTL.Get("SpawnMenu_SC_Text2"), "mgbase_sv_pvedamage", 0, 5, 1) + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help2")) + + panel:NumSlider(MWBLTL.Get("SpawnMenu_SC_Text3"), "mgbase_sv_recoil", 0, 5, 1) + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help3")) + + panel:NumSlider(MWBLTL.Get("SpawnMenu_SC_Text4"), "mgbase_sv_accuracy", 0.1, 5, 1) + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help4")) + + panel:NumSlider(MWBLTL.Get("SpawnMenu_SC_Text5"), "mgbase_sv_range", 1, 10, 1) + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help5")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_SC_Text6"), "mgbase_sv_aimassist") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help6")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_SC_Text7"), "mgbase_sv_breathing") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help7")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_SC_Text8"), "mgbase_sv_customization") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help8")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_SC_Text11"), "mgbase_sv_firstdraws") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help11")) + + panel:CheckBox(MWBLTL.Get("SpawnMenu_SC_Text12"), "mgbase_sv_sprintreloads") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help12")) + + panel:CheckBox("Shoot Reloads", "mgbase_sv_shootreloads") + panel:ControlHelp("Allows firing to interrupt reloads.") + + panel:CheckBox(MWBLTL.Get("SpawnMenu_SC_Text9"), "mgbase_sv_full_penetration") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help9")) + + panel:TextEntry(MWBLTL.Get("SpawnMenu_SC_Text10"), "mgbase_sv_customization_limit") + panel:ControlHelp(MWBLTL.Get("SpawnMenu_SC_Help10")) + end) +end) + +local function createSpawnIcon(w, propPanel) + return spawnmenu.CreateContentIcon(w.ScriptedEntityType or "weapon", propPanel, { + nicename = w.PrintName or w.ClassName, + spawnname = w.ClassName, + material = w.IconOverride or "entities/" .. w.ClassName .. ".png", + admin = w.AdminOnly + }) +end + +--sub categories +hook.Add("PopulateWeapons", "AddWeaponContentMW19", function(pnlContent, tree, node) + timer.Simple(0, function() + local weaponsList = list.Get("Weapon") + local mgbaseWeapons = {} + + --look into every weapon and see if they're from mgbase + for _, weapon in pairs(weaponsList) do + if (weapons.IsBasedOn(weapon.ClassName, "mg_base") || weapon.ClassName == "mw_infil_flare") then + if (mgbaseWeapons[weapon.Category] == nil) then + mgbaseWeapons[weapon.Category] = {} + end + + --keep them for later if so + table.insert(mgbaseWeapons[weapon.Category], weapon) + end + end + + --loop through all weapon categories + for _, categoryNode in pairs(tree:Root():GetChildNodes()) do + --if the text matches the categories we saved before we replace DoPopulate + if (mgbaseWeapons[categoryNode:GetText()] != nil) then + local manifest = { + ["Other"] = {} --default header + } + + --order them by subcategory + for _, weapon in pairs(mgbaseWeapons[categoryNode:GetText()]) do + --get weapon from storeds + local actualWeapon = weapons.Get(weapon.ClassName) + + if (actualWeapon.SubCategory == nil) then + table.insert(manifest["Other"], weapon) + else + if (manifest[actualWeapon.SubCategory] == nil) then + manifest[actualWeapon.SubCategory] = {} + end + table.insert(manifest[actualWeapon.SubCategory], weapon) + end + end + + categoryNode.DoPopulate = function(self) + -- If we've already populated it - forget it. + if (self.PropPanel) then return end + + -- Create the container panel + self.PropPanel = vgui.Create("ContentContainer", pnlContent) + self.PropPanel:SetVisible(false) + self.PropPanel:SetTriggerSpawnlistChange(false) + + for categoryName, weps in SortedPairs(manifest) do + if (#weps <= 0) then + continue + end + + --create header + local label = vgui.Create("ContentHeader", container) + label:SetText(categoryName) + + self.PropPanel:Add(label) + + --this is copy from gmod + for _, ent in SortedPairsByMemberValue(weps, "PrintName") do + local icon = createSpawnIcon(ent, self.PropPanel) + local oldPaint = icon.Paint + local we = weapons.Get(ent.ClassName) + local bPossibleBlueprint = we.Base != "mg_base" + + if (bPossibleBlueprint) then + icon.DoClick = function() + RunConsoleCommand("gm_giveswep", ent.ClassName) + surface.PlaySound(we.BlueprintSound || "mw/user_interface/aar/ui_aar_operator_complete_reveal.wav") + end + end + + icon.Paint = function(self, aWide, aTall) + if (bPossibleBlueprint) then + blueprintIconPaint(self, aWide, aTall) + end + oldPaint(self, aWide, aTall) + end + + local oldMenuExtra = icon.OpenMenuExtra + icon.OpenMenuExtra = function(icon, menu) + oldMenuExtra(icon, menu) + local weaponsBasedOnMe = {} + + --blueprints + for _, w in pairs(weaponsList) do + if (weapons.IsBasedOn(w.ClassName, ent.ClassName)) then + weaponsBasedOnMe[#weaponsBasedOnMe + 1] = w + end + end + + if (#weaponsBasedOnMe > 0) then + menu:AddSpacer() + + local grid = vgui.Create("DGrid") + grid:SetCols(math.min(#weaponsBasedOnMe, 3)) + grid:SetColWide(icon:GetWide()) + grid:SetRowHeight(icon:GetTall()) + + for _, w in pairs(weaponsBasedOnMe) do + local we = weapons.Get(w.ClassName) + local subIcon = createSpawnIcon(w, menu) + local oldPaint = subIcon.Paint + subIcon.Paint = function(self, aWide, aTall) + blueprintIconPaint(self, aWide, aTall) + oldPaint(self, aWide, aTall) + end + + subIcon.DoClick = function() + RunConsoleCommand("gm_giveswep", w.ClassName) + surface.PlaySound(we.BlueprintSound || "mw/user_interface/aar/ui_aar_operator_complete_reveal.wav") + end + + subIcon.DoRightClick = function() end + + grid:AddItem(subIcon) + end + + menu:AddPanel(grid) + end + end + end + end + end + end + end + end) --timer simple +end) + +local specialMat = Material("gui/ps_hover.png") +local glowMat = Material("particles/fire_glow") +function blueprintIconPaint(self, aWide, aTall) + if (self.nextGlowSpawn == nil || CurTime() > self.nextGlowSpawn) then + if (self.glows == nil) then + self.glows = {} + end + + table.insert(self.glows, {delta = 1, speed = math.random(30, 60), size = math.random(12, 24), x = math.random(6, aWide - 6), y = aWide - 16}) + self.nextGlowSpawn = CurTime() + math.random(0.3, 0.5) + end + + surface.SetMaterial(glowMat) + for i, glow in pairs(self.glows) do + glow.delta = glow.delta - FrameTime() + glow.y = glow.y - (glow.speed * FrameTime()) + surface.SetDrawColor(255, 255, 255, math.sin(math.pi * glow.delta) * 255) + surface.DrawTexturedRectRotated(glow.x, glow.y, glow.size, glow.size, CurTime() + glow.size + glow.speed) + + if (glow.delta <= 0) then + table.remove(self.glows, i) + end + end + + --surface.SetDrawColor(255, 255, 255, 255) + --surface.SetMaterial(specialMat) + --self:DrawTexturedRect() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/client/cl_worldmodel_render.lua b/lua/weapons/mg_base/modules/client/cl_worldmodel_render.lua new file mode 100644 index 0000000..aaa21b2 --- /dev/null +++ b/lua/weapons/mg_base/modules/client/cl_worldmodel_render.lua @@ -0,0 +1,53 @@ +AddCSLuaFile() + +require("mw_math") +require("mw_utils") + +function SWEP:RenderOverride(flags) + if (IsValid(self.SpawnEffect)) then + self.SpawnEffect.ParentEntity = nil + --https://github.com/Facepunch/garrysmod-issues/issues/5345 + end + + if (GetConVar("mgbase_debug_wmrender"):GetInt() <= 0) then + return + end + + local bone = mw_utils.LookupBoneCached(self, self.WorldModelOffsets.Bone) + + if (bone != nil && bone > 0) then + if (IsValid(self:GetOwner())) then + self:ManipulateBoneAngles(bone, self.WorldModelOffsets.Angles) + self:ManipulateBonePosition(bone, self.WorldModelOffsets.Pos) + else + self:ManipulateBoneAngles(bone, mw_math.ZeroAngle) + self:ManipulateBonePosition(bone, mw_math.ZeroVector) + end + end + + --self:InvalidateBoneCache() + self:SetupBones() + + self:DrawModel(flags) + for _, att in pairs(self:GetAllAttachmentsInUse()) do + if (IsValid(att.m_TpModel) && #att.m_TpModel:GetChildren() <= 0) then + att.m_TpModel:DrawModel(flags) + + if ((!att.RenderOverride && att.Render != nil) || att.WorldModelRender != nil) then + if (att.WorldModelRender != nil) then + att:WorldModelRender(self) + else + att:Render(self, att.m_TpModel) + end + end + end + end +end + +function SWEP:DrawWorldModel(flags) + self:DrawModel(flags) +end + +function SWEP:DrawWorldModelTranslucent(flags) + self:DrawWorldModel(flags) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/languages/de.lua b/lua/weapons/mg_base/modules/languages/de.lua new file mode 100644 index 0000000..9a596a7 --- /dev/null +++ b/lua/weapons/mg_base/modules/languages/de.lua @@ -0,0 +1,183 @@ +MWBLTL.AddLanguage("de", "German") + +-- Stat Info +MWBLTL.LANGUAGE["StatInfo_RecoilStability"] = "Recoil Stability" +MWBLTL.LANGUAGE["StatInfo_Shake"] = "Ziel Stabilität" +MWBLTL.LANGUAGE["StatInfo_AimSway"] = "Zielfernrohr Ziel Schwankung" +MWBLTL.LANGUAGE["StatInfo_MovementMultiplier"] = "Stetigkeit der Waffenbewegung" +MWBLTL.LANGUAGE["StatInfo_HeadshotMultiplier"] = "Kopfschussschaden" +MWBLTL.LANGUAGE["StatInfo_ProjectileSpeed"] = "Projektilgeschwindigkeit" +MWBLTL.LANGUAGE["StatInfo_ProjectileGravity"] = "Projektilstabilität" +MWBLTL.LANGUAGE["StatInfo_ClipSize"] = "Magazine Größe" +MWBLTL.LANGUAGE["StatInfo_RPM"] = "Feuerrate pro Minute" +MWBLTL.LANGUAGE["StatInfo_AimSpeed"] = "ADS Geschwindigkeit" +MWBLTL.LANGUAGE["StatInfo_SprintSpeed"] = "Sprint zum Feuern Geschwindigkeit" -- I don't know if this is correct, as it's pretty hard to translate. +MWBLTL.LANGUAGE["StatInfo_AimLength"] = "ADS Zeit" +MWBLTL.LANGUAGE["StatInfo_RechamberSpeed"] = "Umkammergeschwindigkeit" +MWBLTL.LANGUAGE["StatInfo_AimAccuracy"] = "ADS Streuung" +MWBLTL.LANGUAGE["StatInfo_ConeIncrease"] = "Schussungenauigkeit" +MWBLTL.LANGUAGE["StatInfo_Accuracy"] = "Streuung" +MWBLTL.LANGUAGE["StatInfo_ReloadSpeed"] = "Nachladegeschwindigkeit" +MWBLTL.LANGUAGE["StatInfo_SwitchSpeed"] = "Handhabungsgeschwindigkeit" +MWBLTL.LANGUAGE["StatInfo_DrawLength"] = "Ziehgeschwindigkeit" +MWBLTL.LANGUAGE["StatInfo_HolsterLength"] = "Holsterzeit" +MWBLTL.LANGUAGE["StatInfo_ReloadLength"] = "Nachladezeit" +MWBLTL.LANGUAGE["StatInfo_DamageClose"] = "Schaden Nah" +MWBLTL.LANGUAGE["StatInfo_DamageRange"] = "Schaden Fern" +MWBLTL.LANGUAGE["StatInfo_EffectiveRange"] = "Effektive Reichweite" +MWBLTL.LANGUAGE["StatInfo_MaxRange"] = "Maximale Reichweite" +MWBLTL.LANGUAGE["StatInfo_PenetrationThickness"] = "Penetration Kraft" +MWBLTL.LANGUAGE["StatInfo_HorizontalRecoil"] = "Rückstoß Horizontal" +MWBLTL.LANGUAGE["StatInfo_Recoil"] = "Rückstoß Kick" +MWBLTL.LANGUAGE["StatInfo_VerticalRecoil"] = "Rückstoß Vertical" +MWBLTL.LANGUAGE["StatInfo_MeleeSpeed"] = "Nahkampf Erholung" +MWBLTL.LANGUAGE["StatInfo_MeleeDamage"] = "Schaden Nahkampf" +MWBLTL.LANGUAGE["StatInfo_Bullets"] = "Anzahl der Kugeln" +MWBLTL.LANGUAGE["StatInfo_SprintLength"] = "Sprint-to-Fire Time" + +-- HUD +MWBLTL.LANGUAGE["HUD_Debug_Text1"] = "Beim Standardvisier sollte das grüne Kreuz gelb werden. (perfekte Ausrichtung)" +MWBLTL.LANGUAGE["HUD_Debug_Text2"] = "Wenn Sie ein Entwickler sind, setzen Sie den Ausrichtungsknochen in die Mitte des Standardvisiers und richten Sie es mit entsprechenden Offsets aus." +MWBLTL.LANGUAGE["HUD_Debug_Text3"] = "Pixeldifferenz (je näher an 0, desto besser): " +MWBLTL.LANGUAGE["HUD_Debug_Text4"] = "Folge der violetten Linie, um den Winkel zu sehen, ändere die Winkelversätze, falls nötig (!)" +MWBLTL.LANGUAGE["HUD_FireMode_Safety"] = "GESICHERT" +MWBLTL.LANGUAGE["HUD_Key_NotBound"] = "TASTE NICHT BELEGT: " +MWBLTL.LANGUAGE["HUD_Commands_Text1"] = "x 2: VISIER" +MWBLTL.LANGUAGE["HUD_Commands_Text2"] = "ATMEN ANHALTEN" +MWBLTL.LANGUAGE["HUD_Commands_Text3"] = ": TASCHENLAMPE" + +-- Customization Menu +MWBLTL.LANGUAGE["CuzMenu_Nom_Text1"] = "FAVORIT" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text2"] = "VOREINSTELLUNGEN" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text3"] = "Namen eingeben..." +MWBLTL.LANGUAGE["CuzMenu_Method_Text1"] = "NICHTS" +MWBLTL.LANGUAGE["CuzMenu_Method_Text2"] = "ZUFÄLLIG" +MWBLTL.LANGUAGE["CuzMenu_Method_Text3"] = "ZUFÄLLIG KURATIERT" +MWBLTL.LANGUAGE["CuzMenu_Method_Text4"] = "ZUFÄLLIG FAVORIT" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text4"] = "SPAWNEN MIT:" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text5"] = "Blockiert von" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text6"] = "Kosmetik" +MWBLTL.LANGUAGE["CuzMenu_Title_Text"] = "ANPASSEN" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text7"] = "VERLASSEN" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text8"] = "STATISTIKEN" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text9"] = "m" -- (Metre: Unit of length) +MWBLTL.LANGUAGE["CuzMenu_Nom_Text10"] = "s" -- (Second: Unit of time) + +-- Spawn Menu +MWBLTL.LANGUAGE["SpawnMenu_VM_Title"] = "Viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_VM_Text1"] = "FOV" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help1"] = "Verändert das Viewmodel FOV." +MWBLTL.LANGUAGE["SpawnMenu_VM_Text2"] = "FOV - ADS" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help2"] = "Verändert das Viewmodel FOV beim zielen." +MWBLTL.LANGUAGE["SpawnMenu_VM_Help3"] = "Note: Zielfernrohre ignorieren alles unter 1!" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help4"] = "VIEWMODEL ARME" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Title"] = "Effekte" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text1"] = "Laufrauch" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help1"] = "Überhitzungsrauch aus den Lauf umschalten." +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text2"] = "Sichtunschärfe FX" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help2"] = "Schaltet die DOF-Unschärfe beim Nachladen/Anpassen um." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Title"] = "HUD" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help1"] = "Fadenkreuz Farbe" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text1"] = "Fadenkreuz" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help2"] = "Fadenkreuz umschalten." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text2"] = "Feuermodus Helfer" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help3"] = "Feuermodus-HUD umschalten." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text3"] = "Taschenlampenanzeige" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help4"] = "Umschalten des Taschenlampen-HUD" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text4"] = "Visier Helfer" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help5"] = "Visier HUD umschalten." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text5"] = "Benutzerdefinierte Laser" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help6"] = "Schaltet die Farbe der Sandbox-Waffe für Laser um." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Title"] = "Kontrollen" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text1"] = "ADS umschalten" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help1"] = "Umschalten zwischen Halten und Umschalten auf ADS." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text2"] = "Automatisches Nachladen" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help2"] = "Schaltet das automatische Nachladen einer Waffe ein, wenn sie lehr ist." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text3"] = "Manuelles Umkammern" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help3"] = "Schaltet das manuelle Umkammern um (Pumpen oder Nachladen einer Repetierbüchse). Abfeuern loslassen, um zum umkammern." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help4"] = "Anpassungsmenu Belegung" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help5"] = "Sobald dies eingestellt ist, wird das Menü nicht angezeigt, wenn die Kontextmenütaste gedrückt wird!" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text4"] = "Zielhilfe" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help6"] = "Zielhilfe aktivieren." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text5"] = "Preset Spawn With:" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text6"] = "Nichts" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text7"] = "Zufällig" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text8"] = "Zufällig Kuratiert" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text9"] = "Zufällig Favorit" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text10"] = "Waffe anpassen" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Title"] = "Debug" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text1"] = "Free Viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help1"] = "Toggle free view model transform." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text2"] = "Freeze Viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help2"] = "Animation Delta" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text3"] = "Reload Animation List" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text4"] = "Ironsights Crosshair" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help3"] = "Toggle ironsights crosshair." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text5"] = "Disable Breathing" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help4"] = "Toggle breathing (NOTE: this is still enabled on server)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text6"] = "Reverb" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help5"] = "Show reverb (requires developer convar)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text7"] = "Range Helper" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help6"] = "Show distance of impact (requires developer convar)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text8"] = "Projectiles" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help7"] = "Show projectile travel and aim assist (requires developer convar)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text9"] = "Viewmodel Rendering" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help8"] = "Toggle viewmodel rendering." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text10"] = "Worldmodel Rendering" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help9"] = "Toggle worldmodel rendering." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text11"] = "Magazine" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help10"] = "Forces magazine to one round." +MWBLTL.LANGUAGE["SpawnMenu_SC_Title"] = "Server Kontrollen" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text1"] = "PvP Schaden Multiplikator" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help1"] = "Verändert den Schaden gegenüber Spielern." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text2"] = "PvE Schaden Multiplikator" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help2"] = "Verändert den Schaden gegenüber NPCs und Nextbots." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text3"] = "Rückstoß Multiplikator" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help3"] = "Verändert die Rückstoßintensität." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text4"] = "Genauigkeit Multiplikator" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help4"] = "Verändert die Intesität der Genauigkeit." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text5"] = "Reichweite Multiplikator" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help5"] = "Verändert die Reichweitengrenze." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text6"] = "Zielhilfe" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help6"] = "Zielhilfe zulassen." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text7"] = "Zielfernrohr Atmung/Schwanken" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help7"] = "Schwankungen bei Zielfernrohren zulassen." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text8"] = "Anpassung umschalten" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help8"] = "Erlaubt die Anpassung von Waffen." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text9"] = "Detaillierte Penetration" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help9"] = "Umschalten auf ein detaillierteres Penetrationsmodell (kann zu Leistungsproblemen führen)." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text10"] = "Anpassungslimit" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help10"] = "Begrenzt die Anzahl der Aufsätze, die auf eine Waffe installiert werden kann. Null bedeutet keine Begrenzung" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text11"] = "First Draws" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help11"] = "Enable first draws on weapon equip." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text12"] = "Sprint Reloads" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help12"] = "Allows reloading while sprinting." +MWBLTL.LANGUAGE["SpawnMenu_RC_Text1"] = "Rig" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text2"] = "C_Hands" +MWBLTL.LANGUAGE["MWBLTL_Options_Title"] = "Sprachen" +MWBLTL.LANGUAGE["MWBLTL_Options_Text1"] = "WÄHLE EINE SPRACHE AUS" +MWBLTL.LANGUAGE["MWBLTL_Options_Text2"] = "Wenn es keine Änderungen gibt, starte deine Map neu." + +-- Attachments +MWBLTL.LANGUAGE["Atts_Category_Accessories"] = "Zubehör" +MWBLTL.LANGUAGE["Atts_Category_Ammo"] = "Munition" +MWBLTL.LANGUAGE["Atts_Category_Arms"] = "Arm" +MWBLTL.LANGUAGE["Atts_Category_Arrows"] = "Pfeile" +MWBLTL.LANGUAGE["Atts_Category_Barrels"] = "Läufe" +MWBLTL.LANGUAGE["Atts_Category_Bolts"] = "Verschluss" +MWBLTL.LANGUAGE["Atts_Category_Conversions"] = "Umwandlungen" +MWBLTL.LANGUAGE["Atts_Category_Forends"] = "Vorderteile" +MWBLTL.LANGUAGE["Atts_Category_Grips"] = "Griffe" +MWBLTL.LANGUAGE["Atts_Category_Lasers"] = "Lasers" +MWBLTL.LANGUAGE["Atts_Category_Magazines"] = "Magazine" +MWBLTL.LANGUAGE["Atts_Category_Misc"] = "Misc" +MWBLTL.LANGUAGE["Atts_Category_Muzzle_Devices"] = "Mündungsgeräte" +MWBLTL.LANGUAGE["Atts_Category_Perks"] = "Vorteile" +MWBLTL.LANGUAGE["Atts_Category_Pistol_Grips"] = "Pistolengriffe" +MWBLTL.LANGUAGE["Atts_Category_Pumps"] = "Pumps" +MWBLTL.LANGUAGE["Atts_Category_Rails"] = "Schienen" +MWBLTL.LANGUAGE["Atts_Category_Receivers"] = "Receiver" +MWBLTL.LANGUAGE["Atts_Category_Sights"] = "Visiere" +MWBLTL.LANGUAGE["Atts_Category_Stocks"] = "Schaft" +MWBLTL.LANGUAGE["Atts_Category_Toprails"] = "Toprails" +MWBLTL.LANGUAGE["Atts_Category_Cables"] = "Kabel" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/languages/en.lua b/lua/weapons/mg_base/modules/languages/en.lua new file mode 100644 index 0000000..b336ef3 --- /dev/null +++ b/lua/weapons/mg_base/modules/languages/en.lua @@ -0,0 +1,211 @@ +-- Thank you for participating in the translation work of this addon. +-- Below are the guidelines and requirements. If you are already familiar with them, you can skip ahead. + +-- Notes & Requirements +/* +1. For accuracy, please use English as the reference for your translation, even though you may be familiar with many languages. +2. Please use formal grammar as much as possible when translating content. Don't use slang, abbreviations, misspellings, incorrect grammar, homophones, etc. for translation. +3. If there is any content that you can't translate or don't understand, please use English instead. +*/ + +-- First Step +/* +First, you need to rename the file to your language code. (e.g. en-PT.lua) +*/ + +-- Second Step +/* +Before we start, you need to fill in the language code and its full name. [e.g. MWBLTL.AddLanguage("en-PT", "Pirate English")] +Valid Language Code: bg cs da de el en en-PT es-ES et fi fr he hr hu it ja ko lt nl no pl pt-BR pt-PT ru sk sv-SE th tr uk vi zh-CN zh-TW +If you don't know the language corresponding to a certain code, you can check it on https://wiki.facepunch.com/gmod/Addon_Localization. +*/ + +-- Third Step +/* +You can now officially start your translation work. If you have any questions or concerns, please add my Discord to ask. (NizcKM#5992) +After you have finished, you can send the file to me using any method you prefer, or add me on Steam/Discord. +*/ + +MWBLTL.AddLanguage("en", "English") + +-- Stat Info +MWBLTL.LANGUAGE["StatInfo_RecoilStability"] = "Recoil Stability" +MWBLTL.LANGUAGE["StatInfo_Shake"] = "Aim Stability" +MWBLTL.LANGUAGE["StatInfo_AimSway"] = "Scope Aim Sway" +MWBLTL.LANGUAGE["StatInfo_MovementMultiplier"] = "Weapon Moving Steadiness" +MWBLTL.LANGUAGE["StatInfo_HeadshotMultiplier"] = "Headshot Damage" +MWBLTL.LANGUAGE["StatInfo_ProjectileSpeed"] = "Projectile Velocity" +MWBLTL.LANGUAGE["StatInfo_ProjectileGravity"] = "Projectile Stability" +MWBLTL.LANGUAGE["StatInfo_ClipSize"] = "Magazine Size" +MWBLTL.LANGUAGE["StatInfo_RPM"] = "Rounds Per Minute" +MWBLTL.LANGUAGE["StatInfo_AimSpeed"] = "ADS Speed" +MWBLTL.LANGUAGE["StatInfo_SprintSpeed"] = "Sprint-to-Fire Speed" +MWBLTL.LANGUAGE["StatInfo_AimLength"] = "ADS Time" +MWBLTL.LANGUAGE["StatInfo_RechamberSpeed"] = "Rechamber Speed" +MWBLTL.LANGUAGE["StatInfo_AimAccuracy"] = "ADS Spread" +MWBLTL.LANGUAGE["StatInfo_ConeIncrease"] = "Firing Inaccuracy" +MWBLTL.LANGUAGE["StatInfo_Accuracy"] = "Spread" +MWBLTL.LANGUAGE["StatInfo_ReloadSpeed"] = "Reload Speed" +MWBLTL.LANGUAGE["StatInfo_SwitchSpeed"] = "Handling Speed" +MWBLTL.LANGUAGE["StatInfo_DrawLength"] = "Draw Time" +MWBLTL.LANGUAGE["StatInfo_HolsterLength"] = "Holster Time" +MWBLTL.LANGUAGE["StatInfo_ReloadLength"] = "Reload Time" +MWBLTL.LANGUAGE["StatInfo_DamageClose"] = "Damage Close" +MWBLTL.LANGUAGE["StatInfo_DamageRange"] = "Damage Range" +MWBLTL.LANGUAGE["StatInfo_EffectiveRange"] = "Effective Range" +MWBLTL.LANGUAGE["StatInfo_MaxRange"] = "Max Range" +MWBLTL.LANGUAGE["StatInfo_PenetrationThickness"] = "Penetration Power" +MWBLTL.LANGUAGE["StatInfo_HorizontalRecoil"] = "Recoil Horizontal" +MWBLTL.LANGUAGE["StatInfo_Recoil"] = "Recoil Kick" +MWBLTL.LANGUAGE["StatInfo_VerticalRecoil"] = "Recoil Vertical" +MWBLTL.LANGUAGE["StatInfo_MeleeSpeed"] = "Melee Recovery" +MWBLTL.LANGUAGE["StatInfo_MeleeDamage"] = "Damage Melee" +MWBLTL.LANGUAGE["StatInfo_Bullets"] = "Number Of Pellets" +MWBLTL.LANGUAGE["StatInfo_SprintLength"] = "Sprint-to-Fire Time" + +-- HUD +MWBLTL.LANGUAGE["HUD_Debug_Text1"] = "With default sight, the green cross should turn yellow (perfect alignment)" +MWBLTL.LANGUAGE["HUD_Debug_Text2"] = "If you're a developer, put the align bone in the middle of your default sight's picture, align with offsets accordingly" +MWBLTL.LANGUAGE["HUD_Debug_Text3"] = "Pixel difference (closer to 0 the better): " +MWBLTL.LANGUAGE["HUD_Debug_Text4"] = "Follow purple line to see angle, modify angle offsets if needed (!)" +MWBLTL.LANGUAGE["HUD_FireMode_Safety"] = "SAFETY" +MWBLTL.LANGUAGE["HUD_Key_NotBound"] = "KEY NOT BOUND: " +MWBLTL.LANGUAGE["HUD_Commands_Text1"] = "x 2: SIGHTS" +MWBLTL.LANGUAGE["HUD_Commands_Text2"] = "HOLD BREATH" +MWBLTL.LANGUAGE["HUD_Commands_Text3"] = ": FLASHLIGHT" + +-- Customization Menu +MWBLTL.LANGUAGE["CuzMenu_Nom_Text1"] = "FAVORITE" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text2"] = "PRESETS" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text3"] = "Type name..." +MWBLTL.LANGUAGE["CuzMenu_Method_Text1"] = "NONE" +MWBLTL.LANGUAGE["CuzMenu_Method_Text2"] = "RANDOM" +MWBLTL.LANGUAGE["CuzMenu_Method_Text3"] = "RANDOM CURATED" +MWBLTL.LANGUAGE["CuzMenu_Method_Text4"] = "RANDOM FAVORITE" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text4"] = "SPAWN WITH:" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text5"] = "Blocked by " +MWBLTL.LANGUAGE["CuzMenu_Nom_Text6"] = "Cosmetic" +MWBLTL.LANGUAGE["CuzMenu_Title_Text"] = "CUSTOMIZE" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text7"] = "EXIT" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text8"] = "STATS" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text9"] = "m" -- (Metre: Unit of length) +MWBLTL.LANGUAGE["CuzMenu_Nom_Text10"] = "s" -- (Second: Unit of time) + +-- Spawn Menu +MWBLTL.LANGUAGE["SpawnMenu_VM_Title"] = "View Model" +MWBLTL.LANGUAGE["SpawnMenu_VM_Text1"] = "FOV" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help1"] = "Change view model FOV." +MWBLTL.LANGUAGE["SpawnMenu_VM_Text2"] = "FOV - ADS" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help2"] = "Change view model FOV when aiming." +MWBLTL.LANGUAGE["SpawnMenu_VM_Help3"] = "Note: scopes ignore anything lower than 1!" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help4"] = "VIEW MODEL RIGS" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Title"] = "Effects" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text1"] = "Barrel Smoke" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help1"] = "Toggle overheat smoke coming from the barrels." +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text2"] = "View Blur FX" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help2"] = "Toggle DOF blur when reloading/customizing." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Title"] = "HUD" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help1"] = "Crosshair Color" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text1"] = "Crosshair" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help2"] = "Toggle crosshair." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text2"] = "Firemode Helper" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help3"] = "Toggle firemode HUD." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text3"] = "Flashlight Indicator" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help4"] = "Toggle flashlight HUD." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text4"] = "Sights Helper" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help5"] = "Toggle sights HUD." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text5"] = "Custom Lasers" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help6"] = "Toggle sandbox weapon color for lasers." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Title"] = "Controls" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text1"] = "Toggle ADS" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help1"] = "Switch between hold and toggle to ADS." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text2"] = "Auto Reload" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help2"] = "Toggle auto reload when magazine is empty." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text3"] = "Manual Rechamber" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help3"] = "Toggle manual rechamber (pumping or reloading a bolt-action). Release fire to rechamber." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help4"] = "Customize Menu Bind" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help5"] = "Once this is set, the menu won't show up when pressing the context menu key!" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text4"] = "Aim Assist" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help6"] = "Enable aim assist." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text5"] = "Preset Spawn With:" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text6"] = "None" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text7"] = "Random" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text8"] = "Random Curated" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text9"] = "Random Favorite" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text10"] = "Customize Gun" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Title"] = "Debug" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text1"] = "Free View Model" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help1"] = "Toggle free view model transform." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text2"] = "Freeze Viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help2"] = "Animation Delta" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text3"] = "Reload Animation List" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text4"] = "Ironsights Crosshair" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help3"] = "Toggle ironsights crosshair." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text5"] = "Disable Breathing" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help4"] = "Toggle breathing (NOTE: this is still enabled on server)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text6"] = "Reverb" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help5"] = "Show reverb (requires developer convar)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text7"] = "Range Helper" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help6"] = "Show distance of impact (requires developer convar)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text8"] = "Projectiles" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help7"] = "Show projectile travel and aim assist (requires developer convar)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text9"] = "Viewmodel Rendering" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help8"] = "Toggle viewmodel rendering." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text10"] = "Worldmodel Rendering" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help9"] = "Toggle worldmodel rendering." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text11"] = "Magazine" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help10"] = "Forces magazine to one round." +MWBLTL.LANGUAGE["SpawnMenu_SC_Title"] = "Server Controls" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text1"] = "PvP Damage Multiplier" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help1"] = "Change damage towards players." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text2"] = "PvE Damage Multiplier" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help2"] = "Change damage towards NPCs and Nextbots." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text3"] = "Recoil Multiplier" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help3"] = "Change recoil intensity." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text4"] = "Accuracy Multiplier" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help4"] = "Change accuracy intensity." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text5"] = "Range Multiplier" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help5"] = "Change range limit." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text6"] = "Aim Assist" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help6"] = "Allow aim assist." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text7"] = "Scope Breathing/Sway" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help7"] = "Allow scopes to sway aim." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text8"] = "Toggle Customization" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help8"] = "Allow gun customization." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text9"] = "Detailed Penetration" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help9"] = "Toggle more detailed penetration model (heavier on performance)." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text10"] = "Customization Limit" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help10"] = "Limit the amount of attachments a gun can take. Zero means no limits." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text11"] = "First Draws" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help11"] = "Enable first draws on weapon equip." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text12"] = "Sprint Reloads" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help12"] = "Allows reloading while sprinting." +MWBLTL.LANGUAGE["SpawnMenu_RC_Text1"] = "Rig" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text2"] = "C_Hands" +MWBLTL.LANGUAGE["MWBLTL_Options_Title"] = "Languages" +MWBLTL.LANGUAGE["MWBLTL_Options_Text1"] = "SELECT A LANGUAGES" +MWBLTL.LANGUAGE["MWBLTL_Options_Text2"] = "If there are no changes, restart your map." + +-- Attachments +MWBLTL.LANGUAGE["Atts_Category_Accessories"] = "Accessories" +MWBLTL.LANGUAGE["Atts_Category_Ammo"] = "Ammo" +MWBLTL.LANGUAGE["Atts_Category_Arms"] = "Arms" +MWBLTL.LANGUAGE["Atts_Category_Arrows"] = "Arrows" +MWBLTL.LANGUAGE["Atts_Category_Barrels"] = "Barrels" +MWBLTL.LANGUAGE["Atts_Category_Bolts"] = "Bolts" +MWBLTL.LANGUAGE["Atts_Category_Conversions"] = "Conversions" +MWBLTL.LANGUAGE["Atts_Category_Forends"] = "Forends" +MWBLTL.LANGUAGE["Atts_Category_Grips"] = "Grips" +MWBLTL.LANGUAGE["Atts_Category_Lasers"] = "Lasers" +MWBLTL.LANGUAGE["Atts_Category_Magazines"] = "Magazines" +MWBLTL.LANGUAGE["Atts_Category_Misc"] = "Misc" +MWBLTL.LANGUAGE["Atts_Category_Muzzle_Devices"] = "Muzzle Devices" +MWBLTL.LANGUAGE["Atts_Category_Perks"] = "Perks" +MWBLTL.LANGUAGE["Atts_Category_Pistol_Grips"] = "Pistol Grips" +MWBLTL.LANGUAGE["Atts_Category_Pumps"] = "Pumps" +MWBLTL.LANGUAGE["Atts_Category_Rails"] = "Rails" +MWBLTL.LANGUAGE["Atts_Category_Receivers"] = "Receivers" +MWBLTL.LANGUAGE["Atts_Category_Sights"] = "Sights" +MWBLTL.LANGUAGE["Atts_Category_Stocks"] = "Stocks" +MWBLTL.LANGUAGE["Atts_Category_Toprails"] = "Toprails" +MWBLTL.LANGUAGE["Atts_Category_Cables"] = "Cables" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/languages/es-ES.lua b/lua/weapons/mg_base/modules/languages/es-ES.lua new file mode 100644 index 0000000..ec0d607 --- /dev/null +++ b/lua/weapons/mg_base/modules/languages/es-ES.lua @@ -0,0 +1,183 @@ +MWBLTL.AddLanguage("es-ES", "Spanish") + +-- Stat Info +MWBLTL.LANGUAGE["StatInfo_RecoilStability"] = "Estabilidad del Retroceso" +MWBLTL.LANGUAGE["StatInfo_Shake"] = "Estabilidad al Apuntar" +MWBLTL.LANGUAGE["StatInfo_AimSway"] = "Balanceo de la Mira" +MWBLTL.LANGUAGE["StatInfo_MovementMultiplier"] = "Estabilidad en el Movimiento del Arma" +MWBLTL.LANGUAGE["StatInfo_HeadshotMultiplier"] = "Daño por Tiro a la Cabeza" +MWBLTL.LANGUAGE["StatInfo_ProjectileSpeed"] = "Velocidad del Proyectil" +MWBLTL.LANGUAGE["StatInfo_ProjectileGravity"] = "Estabilidad del Proyectil" +MWBLTL.LANGUAGE["StatInfo_ClipSize"] = "Tamaño del Cargador" +MWBLTL.LANGUAGE["StatInfo_RPM"] = "Rondas por Minuto" +MWBLTL.LANGUAGE["StatInfo_AimSpeed"] = "Velocidad de Apuntado" +MWBLTL.LANGUAGE["StatInfo_SprintSpeed"] = "Velocidad de Correr a Disparar" +MWBLTL.LANGUAGE["StatInfo_AimLength"] = "Tiempo de Apuntado" +MWBLTL.LANGUAGE["StatInfo_RechamberSpeed"] = "Velocidad de Ciclado" +MWBLTL.LANGUAGE["StatInfo_AimAccuracy"] = "Dispersión al Apuntar" +MWBLTL.LANGUAGE["StatInfo_ConeIncrease"] = "Imprecisión al Disparar" +MWBLTL.LANGUAGE["StatInfo_Accuracy"] = "Dispersión" +MWBLTL.LANGUAGE["StatInfo_ReloadSpeed"] = "Velocidad de Recarga" +MWBLTL.LANGUAGE["StatInfo_SwitchSpeed"] = "Velocidad de Manejo" +MWBLTL.LANGUAGE["StatInfo_DrawLength"] = "Velocidad de Desenfundado" +MWBLTL.LANGUAGE["StatInfo_HolsterLength"] = "Velocidad de Enfundado" +MWBLTL.LANGUAGE["StatInfo_ReloadLength"] = "Longitud de Recarga" +MWBLTL.LANGUAGE["StatInfo_DamageClose"] = "Daño a Corta Distancia" +MWBLTL.LANGUAGE["StatInfo_DamageRange"] = "Daño a Distancia" +MWBLTL.LANGUAGE["StatInfo_EffectiveRange"] = "Rango Efectivo" +MWBLTL.LANGUAGE["StatInfo_MaxRange"] = "Rango Máximo" +MWBLTL.LANGUAGE["StatInfo_PenetrationThickness"] = "Poder de Penetración" +MWBLTL.LANGUAGE["StatInfo_HorizontalRecoil"] = "Retroceso Horizontal" +MWBLTL.LANGUAGE["StatInfo_Recoil"] = "Patada del Retroceso" +MWBLTL.LANGUAGE["StatInfo_VerticalRecoil"] = "Retroceso Vertical" +MWBLTL.LANGUAGE["StatInfo_MeleeSpeed"] = "Velocidad del Cuerpo a Cuerpo" +MWBLTL.LANGUAGE["StatInfo_MeleeDamage"] = "Daño Cuerpo a Cuerpo" +MWBLTL.LANGUAGE["StatInfo_Bullets"] = "Número de Perdigones" +MWBLTL.LANGUAGE["StatInfo_SprintLength"] = "Tiempo de Esprintar a Disparar" + +-- HUD +MWBLTL.LANGUAGE["HUD_Debug_Text1"] = "Con la mira por defecto, la cruz verde deberia volverse amarilla (Esto significa alineación perfecta)" +MWBLTL.LANGUAGE["HUD_Debug_Text2"] = "Si eres un desarrollador, pon el 'align bone' en el medio de tu mira por defecto. Alinea con los 'offset' respectivamente" +MWBLTL.LANGUAGE["HUD_Debug_Text3"] = "Diferencia en los pixeles (Mientras este mas cerca del 0, mejor): " +MWBLTL.LANGUAGE["HUD_Debug_Text4"] = "Sigue la linea morada para ver el angulo, modifica el angulo de el 'offset' si es necesario (!)" +MWBLTL.LANGUAGE["HUD_FireMode_Safety"] = "SEGURO" +MWBLTL.LANGUAGE["HUD_Key_NotBound"] = "TECLA NO ASIGNADA: " +MWBLTL.LANGUAGE["HUD_Commands_Text1"] = "x 2: MIRAS" +MWBLTL.LANGUAGE["HUD_Commands_Text2"] = "AGUANTAR RESPIRACION" +MWBLTL.LANGUAGE["HUD_Commands_Text3"] = ": LINTERNA" + +-- Customization Menu +MWBLTL.LANGUAGE["CuzMenu_Nom_Text1"] = "FAVORITOS" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text2"] = "PREAJUSTES" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text3"] = "Escribe un nombre..." +MWBLTL.LANGUAGE["CuzMenu_Method_Text1"] = "NINGUNO" +MWBLTL.LANGUAGE["CuzMenu_Method_Text2"] = "ALEATORIO" +MWBLTL.LANGUAGE["CuzMenu_Method_Text3"] = "ALEATORIO PREDEFINIDO" +MWBLTL.LANGUAGE["CuzMenu_Method_Text4"] = "ALEATORIO FAVORITO" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text4"] = "REAPARECER CON:" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text5"] = "Bloqueado por " +MWBLTL.LANGUAGE["CuzMenu_Nom_Text6"] = "Cosmético" +MWBLTL.LANGUAGE["CuzMenu_Title_Text"] = "PERSONALIZAR" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text7"] = "SALIR" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text8"] = "ESTADÍSTICAS" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text9"] = "m" -- (Metre: Unit of length) +MWBLTL.LANGUAGE["CuzMenu_Nom_Text10"] = "s" -- (Second: Unit of time) + +-- Spawn Menu +MWBLTL.LANGUAGE["SpawnMenu_VM_Title"] = "View Model" +MWBLTL.LANGUAGE["SpawnMenu_VM_Text1"] = "Campo de Visión" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help1"] = "Cambia el campo de visión de tu viewmodel." +MWBLTL.LANGUAGE["SpawnMenu_VM_Text2"] = "Campo de Visión - Apuntado" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help2"] = "Cambia el campo de visión de tu viewmodel mientras apuntas." +MWBLTL.LANGUAGE["SpawnMenu_VM_Help3"] = "Nota: Las miras con zoom ignoran cualquier valor debajo de 1." +MWBLTL.LANGUAGE["SpawnMenu_VM_Help4"] = "RIGS DE VIEWMODEL" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Title"] = "Efectos" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text1"] = "Humo del Cañon" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help1"] = "Activa el humo por sobrecalientamiento de los cañones." +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text2"] = "Efectos de Profundidad De Campo" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help2"] = "Activa la profundidad de campo mientras recargas/modificas tu arma." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Title"] = "INTERFAZ" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help1"] = "Color de la Reticula" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text1"] = "Reticula" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help2"] = "Activa la reticula." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text2"] = "Asistencia de Modo de Fuego" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help3"] = "Activa la interfaz del modo de fuego." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text3"] = "Indicador de Linterna" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help4"] = "Activa la intefaz de la Linterna." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text4"] = "Interfaz de Apuntado" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help5"] = "Activar la interfaz de miras." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text5"] = "Láseres Personalizables" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help6"] = "Activar el color personal de las armas para los láseres." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Title"] = "Controles" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text1"] = "Alternar Apuntado" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help1"] = "Cambia entre mantener, o alternar para apuntar." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text2"] = "Recarga Automatica" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help2"] = "Activa la recarga automatica cuando te quedas sin balas." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text3"] = "Bombeo Automatico" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help3"] = "Alternar el bombeo manual (bombeo de una escopeta, o el ciclo de un rifle de cerrojo) deja de presionar tu boton para atacar para bombear/ciclar." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help4"] = "Asigna una tecla para el menu" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help5"] = "¡Cuando esto este asignado, el menu no aparecera cuando presiones la tecla para el menu de contexto!" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text4"] = "Asistencia de Apuntado" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help6"] = "Activa la asistencia de apuntado." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text5"] = "Spawnear con preajuste:" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text6"] = "Ninguna" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text7"] = "Aleatoria" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text8"] = "Aleartoria Predefinida" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text9"] = "Aleatoria Favorita" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text10"] = "Personalizar Arma" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Title"] = "Debug" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text1"] = "Vista Libre de View Model" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help1"] = "Activar la vista libre de tu view model." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text2"] = "Congelar Viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help2"] = "Animation Delta" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text3"] = "Recargar la lista de Animaciones" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text4"] = "Reticula de Apuntado" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help3"] = "Activa la reticula de apuntado." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text5"] = "Desactivar Respiración" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help4"] = "Alternar la respiración (NOTA: esto aun esta activado en el servidor)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text6"] = "Reverb" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help5"] = "Muestra la trayectoria del reverb (requiere el comando de developer)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text7"] = "Vista fisica de el alcance" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help6"] = "Muestra la distancia de impacto(requiere el comando de developer)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text8"] = "Proyectiles" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help7"] = "Muestra el recorrido de los proyectiles y la asistencia de apuntado(requiere el comando de developer)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text9"] = "Renderizado de Viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help8"] = "Alterna el renderizado de el viewmodel." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text10"] = "Renderizado en Tercera Persona" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help9"] = "Alterna el renderizado del viewmodel en tercera persona." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text11"] = "Cargador" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help10"] = "Fuerza todos los cargadores a que tengan solo una bala." +MWBLTL.LANGUAGE["SpawnMenu_SC_Title"] = "Controles del Servidor" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text1"] = "Multiplicador de daño en PvP" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help1"] = "Modifica el daño hacia los jugadores" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text2"] = "Multiplicador de daño en PvE" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help2"] = "Modifica el daño hacia los NPC o Nextbot." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text3"] = "Multiplicador de Retroceso" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help3"] = "Modifica la intensidad del retroceso." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text4"] = "Multiplicador de Precisión" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help4"] = "Modifica el grado de precisión." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text5"] = "Multiplicador de Alcance" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help5"] = "Modifica el limite de alcance." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text6"] = "Asistencia de Apuntado" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help6"] = "Activa la asistencia de apuntado." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text7"] = "Balanceo de Pantalla con Miras" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help7"] = "permite el balanceo con miras." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text8"] = "Alternar la Modificación" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help8"] = "Permite la modificación de armas." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text9"] = "Penetracion Detallada" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help9"] = "Activa un modelo de penetración mucho mas detallada (consumira mas recursos)." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text10"] = "Limite de Modificación" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help10"] = "Limita el numero de accesorios que puede llevar un arma. El numero 0 quitara los limites." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text11"] = "Primer desenfundado" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help11"] = "Activa el Primer desenfundado al equipar el arma." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text12"] = "Esprintar mientras recargas" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help12"] = "Activa poder Esprintar mientras recargas." +MWBLTL.LANGUAGE["SpawnMenu_RC_Text1"] = "Rig" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text2"] = "C_Hands" +MWBLTL.LANGUAGE["MWBLTL_Options_Title"] = "Idiomas" +MWBLTL.LANGUAGE["MWBLTL_Options_Text1"] = "SELECCIONA UN IDIOMA" +MWBLTL.LANGUAGE["MWBLTL_Options_Text2"] = "Si no vez cambios, reinicia el mapa." + +-- Attachments +MWBLTL.LANGUAGE["Atts_Category_Accessories"] = "Accesorios" +MWBLTL.LANGUAGE["Atts_Category_Ammo"] = "Munición" +MWBLTL.LANGUAGE["Atts_Category_Arms"] = "Brazos" +MWBLTL.LANGUAGE["Atts_Category_Arrows"] = "Flechas" +MWBLTL.LANGUAGE["Atts_Category_Barrels"] = "Cañones" +MWBLTL.LANGUAGE["Atts_Category_Bolts"] = "Cerrojos" +MWBLTL.LANGUAGE["Atts_Category_Conversions"] = "Conversiones" +MWBLTL.LANGUAGE["Atts_Category_Forends"] = "Guardamanos" +MWBLTL.LANGUAGE["Atts_Category_Grips"] = "Acoples" +MWBLTL.LANGUAGE["Atts_Category_Lasers"] = "Láseres" +MWBLTL.LANGUAGE["Atts_Category_Magazines"] = "Cargadores" +MWBLTL.LANGUAGE["Atts_Category_Misc"] = "Varios" +MWBLTL.LANGUAGE["Atts_Category_Muzzle_Devices"] = "Boca de cañon" +MWBLTL.LANGUAGE["Atts_Category_Perks"] = "Ventajas" +MWBLTL.LANGUAGE["Atts_Category_Pistol_Grips"] = "Empuñaduras" +MWBLTL.LANGUAGE["Atts_Category_Pumps"] = "Bombas" +MWBLTL.LANGUAGE["Atts_Category_Rails"] = "Rieles" +MWBLTL.LANGUAGE["Atts_Category_Receivers"] = "Receptores" +MWBLTL.LANGUAGE["Atts_Category_Sights"] = "Miras" +MWBLTL.LANGUAGE["Atts_Category_Stocks"] = "Culatas" +MWBLTL.LANGUAGE["Atts_Category_Toprails"] = "Rieles Superiores" +MWBLTL.LANGUAGE["Atts_Category_Cables"] = "Cables" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/languages/fr.lua b/lua/weapons/mg_base/modules/languages/fr.lua new file mode 100644 index 0000000..801bf0b --- /dev/null +++ b/lua/weapons/mg_base/modules/languages/fr.lua @@ -0,0 +1,183 @@ +MWBLTL.AddLanguage("fr", "French") + +-- Stat Info +MWBLTL.LANGUAGE["StatInfo_RecoilStability"] = "Contrôle du recul" +MWBLTL.LANGUAGE["StatInfo_Shake"] = "Stabilité" +MWBLTL.LANGUAGE["StatInfo_AimSway"] = "Oscillation de l'optique" +MWBLTL.LANGUAGE["StatInfo_MovementMultiplier"] = "Stabilité en mouvement" +MWBLTL.LANGUAGE["StatInfo_HeadshotMultiplier"] = "Dégâts causés par les tirs dans la tête" +MWBLTL.LANGUAGE["StatInfo_ProjectileSpeed"] = "Vélocité du projectile" +MWBLTL.LANGUAGE["StatInfo_ProjectileGravity"] = "Stabilité du projectile" +MWBLTL.LANGUAGE["StatInfo_ClipSize"] = "Taille du chargeur" +MWBLTL.LANGUAGE["StatInfo_RPM"] = "Coups par minute" +MWBLTL.LANGUAGE["StatInfo_AimSpeed"] = "Vitesse de visée" +MWBLTL.LANGUAGE["StatInfo_SprintSpeed"] = "Vitesse de transition course/visée" +MWBLTL.LANGUAGE["StatInfo_AimLength"] = "Temps de visée" +MWBLTL.LANGUAGE["StatInfo_RechamberSpeed"] = "Vitesse de rechambrement" +MWBLTL.LANGUAGE["StatInfo_AimAccuracy"] = "Dispersion de la visée" +MWBLTL.LANGUAGE["StatInfo_ConeIncrease"] = "Imprécision du tir" +MWBLTL.LANGUAGE["StatInfo_Accuracy"] = "Dispersion" +MWBLTL.LANGUAGE["StatInfo_ReloadSpeed"] = "Vitesse de rechargement" +MWBLTL.LANGUAGE["StatInfo_SwitchSpeed"] = "Vitesse de maniement" +MWBLTL.LANGUAGE["StatInfo_DrawLength"] = "Vitesse de dégainé" +MWBLTL.LANGUAGE["StatInfo_HolsterLength"] = "Vitesse de rengainé" +MWBLTL.LANGUAGE["StatInfo_ReloadLength"] = "Temps de rechargement" +MWBLTL.LANGUAGE["StatInfo_DamageClose"] = "Dégâts rapprochés" +MWBLTL.LANGUAGE["StatInfo_DamageRange"] = "Dégâts à distance" +MWBLTL.LANGUAGE["StatInfo_EffectiveRange"] = "Portée effective" +MWBLTL.LANGUAGE["StatInfo_MaxRange"] = "Portée maximale" +MWBLTL.LANGUAGE["StatInfo_PenetrationThickness"] = "Force de pénétration" +MWBLTL.LANGUAGE["StatInfo_HorizontalRecoil"] = "Recul horizontal" +MWBLTL.LANGUAGE["StatInfo_Recoil"] = "Choc du recul" +MWBLTL.LANGUAGE["StatInfo_VerticalRecoil"] = "Recul vertical" +MWBLTL.LANGUAGE["StatInfo_MeleeSpeed"] = "Rétablissement de la mêlée" +MWBLTL.LANGUAGE["StatInfo_MeleeDamage"] = "Dégâts de la mêlée" +MWBLTL.LANGUAGE["StatInfo_Bullets"] = "Nombre de plombs" +MWBLTL.LANGUAGE["StatInfo_SprintLength"] = "Temps de transition course/visée" + +-- HUD +MWBLTL.LANGUAGE["HUD_Debug_Text1"] = "Avec le viseur par défaut, le réticule vert devrait devenir jaune (indiquant un alignement parfait)" +MWBLTL.LANGUAGE["HUD_Debug_Text2"] = "Si vous êtes un développeur, placez l'os d'alignement au milieu de l'image de votre viseur par défaut et alignez les décalages en conséquence" +MWBLTL.LANGUAGE["HUD_Debug_Text3"] = "Différence de pixel (le plus proche de 0 le meilleur):" +MWBLTL.LANGUAGE["HUD_Debug_Text4"] = "Suivez la ligne violette pour voir l'angle, modifiez les décalages d'angle si nécessaire (!)" +MWBLTL.LANGUAGE["HUD_FireMode_Safety"] = "SÉCURITÉ" +MWBLTL.LANGUAGE["HUD_Key_NotBound"] = "TOUCHE NON CONFIGURÉE: " +MWBLTL.LANGUAGE["HUD_Commands_Text1"] = "x 2: OPTIQUES" +MWBLTL.LANGUAGE["HUD_Commands_Text2"] = "RETENIR SA RESPIRATION" +MWBLTL.LANGUAGE["HUD_Commands_Text3"] = ": LAMPE TORCHE" + +-- Customization Menu +MWBLTL.LANGUAGE["CuzMenu_Nom_Text1"] = "FAVORI" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text2"] = "PRÉSETS" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text3"] = "Entrer le nom..." +MWBLTL.LANGUAGE["CuzMenu_Method_Text1"] = "AUCUN" +MWBLTL.LANGUAGE["CuzMenu_Method_Text2"] = "ALÉATOIRE" +MWBLTL.LANGUAGE["CuzMenu_Method_Text3"] = "ALÉATOIRE PARMI LES PRÉSETS" +MWBLTL.LANGUAGE["CuzMenu_Method_Text4"] = "ALÉATOIRE PARMI LES FAVORIS" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text4"] = "APPARAÎTRE AVEC:" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text5"] = "Bloqué par " +MWBLTL.LANGUAGE["CuzMenu_Nom_Text6"] = "Cosmétique" +MWBLTL.LANGUAGE["CuzMenu_Title_Text"] = "CUSTOMISATION" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text7"] = "QUITTER" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text8"] = "STATS" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text9"] = "m" -- (Metre: Unit of length) +MWBLTL.LANGUAGE["CuzMenu_Nom_Text10"] = "s" -- (Second: Unit of time) + +-- Spawn Menu +MWBLTL.LANGUAGE["SpawnMenu_VM_Title"] = "Viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_VM_Text1"] = "FOV" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help1"] = "Change le FOV du viewmodel." +MWBLTL.LANGUAGE["SpawnMenu_VM_Text2"] = "FOV - Visée" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help2"] = "Change le FOV du viewmodel en visant." +MWBLTL.LANGUAGE["SpawnMenu_VM_Help3"] = "Note: les optiques ignorent toute valeur inférieure à 1!" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help4"] = "MAINS" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Title"] = "Effets" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text1"] = "Fumée du canon" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help1"] = "Activer la fumée du canon en cas de surchauffe" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text2"] = "Flou de l'affichage" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help2"] = "Activer le flou de profondeur de champ lors de la customisation et des rechargements" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Title"] = "HUD" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help1"] = "Couleur du réticule" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text1"] = "Réticule" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help2"] = "Activer le réticule." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text2"] = "Indicateur de mode de tir" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help3"] = "Active le HUD du mode de tir." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text3"] = "Indicateur de lampe torche" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help4"] = "Active le HUD de la lampe torche" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text4"] = "Indicateur d'optiques" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help5"] = "Active le HUD des optiques." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text5"] = "Lasers customisables" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help6"] = "Sélectionne la couleur d'arme custom pour les lasers" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Title"] = "Contrôles" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text1"] = "Activer la visée" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help1"] = "Alterne entre maintenir et activer la visée" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text2"] = "Rechargement automatique" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help2"] = "Active le rechargement automatique quand le chargeur est vide" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text3"] = "Rechambrement manuel" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help3"] = "Active le rechambrement manuel (actionner le verrou ou la pompe). Relâchez la touche de tir pour rechambrer." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help4"] = "Touche du menu de customisation" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help5"] = "Une fois assigné, le menu ne s'ouvrira plus en appuyant sur la touche du menu contextuel" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text4"] = "Assistance à la visée" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help6"] = "Active l'assistance à la visée." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text5"] = "Apparition avec le préset:" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text6"] = "Aucun" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text7"] = "Aléatoire" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text8"] = "Aléatoire parmi les présets" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text9"] = "Aléatoire parmi les favoris" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text10"] = "Customiser l'arme" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Title"] = "Debug" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text1"] = "Affichage libre du viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help1"] = "Active l'affichage libre du viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text2"] = "Geler le viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help2"] = "Delta d'animation" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text3"] = "Recharger la liste des animations" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text4"] = "Réticule de mire" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help3"] = "Active le réticule de mire" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text5"] = "Désactiver la respiration" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help4"] = "Désactive la respiration (NOTE: celle-ci est toujours activée sur le serveur)" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text6"] = "Reverbération" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help5"] = "Montre reverbération (requiert le convar de développeur)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text7"] = "Indicateur de distance" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help6"] = "Montre la distance d'impact (requiert le convar de développeur)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text8"] = "Projectiles" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help7"] = "Montre la trajectoire et l'assistance de visée des projectiles (requiert le convar de développeur)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text9"] = "Rendu du viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help8"] = "Active le rendu du viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text10"] = "Rendu du worldmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help9"] = "Active le rendu du worldmodel." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text11"] = "Chargeurs" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help10"] = "Force tous les chargeurs à 1 cartouche." +MWBLTL.LANGUAGE["SpawnMenu_SC_Title"] = "Paramètres serveur" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text1"] = "Multiplicateur des dégâts PvP" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help1"] = "Change les dégâts causés aux joueurs." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text2"] = "Multiplicateur des dégâts PvE" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help2"] = "Change les dégâts causés aux NPCs et Nextbots." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text3"] = "Multiplicateur du recul" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help3"] = "Change l'intensité du recul." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text4"] = "Multiplicateur de précision" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help4"] = "Change l'intensité de la précision." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text5"] = "Multiplicateur de portée" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help5"] = "Change la limite de portée." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text6"] = "Assistance à la visée" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help6"] = "Autorise l'assistance à la visée." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text7"] = "Oscillation/Respiration des optiques" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help7"] = "Autorise les optiques à osciller." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text8"] = "Activer la customisation" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help8"] = "Autorise la customisation des armes." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text9"] = "Pénétration détaillée" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help9"] = "Active un modèle de pénétration plus détaillé (plus coûteux en performances)." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text10"] = "Limite de customisation" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help10"] = "Limite le nombre d'accessoires qu'une arme peut accepter. 0 ne met pas de limite." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text11"] = "Premiers dégaînés" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help11"] = "Active les premiers dégaînés lors de l'équipement de l'arme." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text12"] = "Rechargements en sprint" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help12"] = "Autorise les rechargements en courant." +MWBLTL.LANGUAGE["SpawnMenu_RC_Text1"] = "Mains" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text2"] = "C_Hands" +MWBLTL.LANGUAGE["MWBLTL_Options_Title"] = "Languages" +MWBLTL.LANGUAGE["MWBLTL_Options_Text1"] = "SÉLECTIONNER UNE LANGUE" +MWBLTL.LANGUAGE["MWBLTL_Options_Text2"] = "S'il n'y a aucun changement, relancez votre map." + +-- Attachments +MWBLTL.LANGUAGE["Atts_Category_Accessories"] = "Accessoires" +MWBLTL.LANGUAGE["Atts_Category_Ammo"] = "Munitions" +MWBLTL.LANGUAGE["Atts_Category_Arms"] = "Branches" +MWBLTL.LANGUAGE["Atts_Category_Arrows"] = "Flèches" +MWBLTL.LANGUAGE["Atts_Category_Barrels"] = "Canons" +MWBLTL.LANGUAGE["Atts_Category_Bolts"] = "Ensemble mobile" +MWBLTL.LANGUAGE["Atts_Category_Conversions"] = "Conversions" +MWBLTL.LANGUAGE["Atts_Category_Forends"] = "Garde-main" +MWBLTL.LANGUAGE["Atts_Category_Grips"] = "Poignées" +MWBLTL.LANGUAGE["Atts_Category_Lasers"] = "Lasers" +MWBLTL.LANGUAGE["Atts_Category_Magazines"] = "Chargeurs" +MWBLTL.LANGUAGE["Atts_Category_Misc"] = "Divers" +MWBLTL.LANGUAGE["Atts_Category_Muzzle_Devices"] = "Accessoires de bouche" +MWBLTL.LANGUAGE["Atts_Category_Perks"] = "Atouts" +MWBLTL.LANGUAGE["Atts_Category_Pistol_Grips"] = "Poignées pistolet" +MWBLTL.LANGUAGE["Atts_Category_Pumps"] = "Pompes" +MWBLTL.LANGUAGE["Atts_Category_Rails"] = "Rails" +MWBLTL.LANGUAGE["Atts_Category_Receivers"] = "Carcasse" +MWBLTL.LANGUAGE["Atts_Category_Sights"] = "Optiques" +MWBLTL.LANGUAGE["Atts_Category_Stocks"] = "Crosses" +MWBLTL.LANGUAGE["Atts_Category_Toprails"] = "Rails supérieurs" +MWBLTL.LANGUAGE["Atts_Category_Cables"] = "Câbles" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/languages/pt-BR.lua b/lua/weapons/mg_base/modules/languages/pt-BR.lua new file mode 100644 index 0000000..39639bf --- /dev/null +++ b/lua/weapons/mg_base/modules/languages/pt-BR.lua @@ -0,0 +1,183 @@ +MWBLTL.AddLanguage("pt-BR", "Portuguese Brazil") + +-- Stat Info +MWBLTL.LANGUAGE["StatInfo_RecoilStability"] = "Estabilidade de Recuo" +MWBLTL.LANGUAGE["StatInfo_Shake"] = "Estabilidade De Mira" +MWBLTL.LANGUAGE["StatInfo_AimSway"] = "Mira de Scope Balançando" +MWBLTL.LANGUAGE["StatInfo_MovementMultiplier"] = "Estabilidade No Movimento Da Arma" +MWBLTL.LANGUAGE["StatInfo_HeadshotMultiplier"] = "Dano Em Headshot" +MWBLTL.LANGUAGE["StatInfo_ProjectileSpeed"] = "Velocidade Do Projétil" +MWBLTL.LANGUAGE["StatInfo_ProjectileGravity"] = "Estabilidade Do Projétil" +MWBLTL.LANGUAGE["StatInfo_ClipSize"] = "Tamanho do Pente" +MWBLTL.LANGUAGE["StatInfo_RPM"] = "Disparos Por Segundo" +MWBLTL.LANGUAGE["StatInfo_AimSpeed"] = "Velocidade ADS" +MWBLTL.LANGUAGE["StatInfo_SprintSpeed"] = "Correr-Para-Atirar Velocidade" +MWBLTL.LANGUAGE["StatInfo_AimLength"] = "Tempo De ADS" +MWBLTL.LANGUAGE["StatInfo_RechamberSpeed"] = "Velocidade De Recâmara" +MWBLTL.LANGUAGE["StatInfo_AimAccuracy"] = "Velocidade De Espalhamento" +MWBLTL.LANGUAGE["StatInfo_ConeIncrease"] = "Tiro De imprecisão" +MWBLTL.LANGUAGE["StatInfo_Accuracy"] = "Espalhar" +MWBLTL.LANGUAGE["StatInfo_ReloadSpeed"] = "Velocidade Para Recarregar" +MWBLTL.LANGUAGE["StatInfo_SwitchSpeed"] = "Velocidade Da Mão" +MWBLTL.LANGUAGE["StatInfo_DrawLength"] = "Velocidade De Equipar" +MWBLTL.LANGUAGE["StatInfo_HolsterLength"] = "Tempo De Holster" +MWBLTL.LANGUAGE["StatInfo_ReloadLength"] = "Tempo De Recarregar" +MWBLTL.LANGUAGE["StatInfo_DamageClose"] = "Dano De Perto" +MWBLTL.LANGUAGE["StatInfo_DamageRange"] = "Dano De Longe" +MWBLTL.LANGUAGE["StatInfo_EffectiveRange"] = "Efetividade Em Distância" +MWBLTL.LANGUAGE["StatInfo_MaxRange"] = "Distância Máxima" +MWBLTL.LANGUAGE["StatInfo_PenetrationThickness"] = "Poder De Penetração" +MWBLTL.LANGUAGE["StatInfo_HorizontalRecoil"] = "Recuo Horizontal" +MWBLTL.LANGUAGE["StatInfo_Recoil"] = "O Quão Forte é o Recuo" +MWBLTL.LANGUAGE["StatInfo_VerticalRecoil"] = "Recuo Vertical" +MWBLTL.LANGUAGE["StatInfo_MeleeSpeed"] = "Recuperação Corpo a Corpo" +MWBLTL.LANGUAGE["StatInfo_MeleeDamage"] = "Dano De Corpo a Corpo" +MWBLTL.LANGUAGE["StatInfo_Bullets"] = "Número de Pelotas" +MWBLTL.LANGUAGE["StatInfo_SprintLength"] = "Correr-Para-Atirar Tempo" + +-- HUD +MWBLTL.LANGUAGE["HUD_Debug_Text1"] = "Com a mira padrão, A cruz deve se tornar amarela (Alinhamento Perfeito)" +MWBLTL.LANGUAGE["HUD_Debug_Text2"] = "Se você é um desenvolvendor, Coloque a linha padrão no centro da imagem da sua mira, alinhe com os deslocamentos de acordo" +MWBLTL.LANGUAGE["HUD_Debug_Text3"] = "Diferença de Pixel (perto de 0 fica melhor): " +MWBLTL.LANGUAGE["HUD_Debug_Text4"] = "siga a mira roxa para alinhar, modifique o angulo do offset se necessário (!)" +MWBLTL.LANGUAGE["HUD_FireMode_Safety"] = "SEGURO" +MWBLTL.LANGUAGE["HUD_Key_NotBound"] = "CHAVE NÃO LIGADA: " +MWBLTL.LANGUAGE["HUD_Commands_Text1"] = "x 2: MIRA" +MWBLTL.LANGUAGE["HUD_Commands_Text2"] = "SEGURAR RESPIRAÇÃO" +MWBLTL.LANGUAGE["HUD_Commands_Text3"] = ": LANTERNA" + +-- Customization Menu +MWBLTL.LANGUAGE["CuzMenu_Nom_Text1"] = "FAVORITO" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text2"] = "PRESETS" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text3"] = "Digite o nome..." +MWBLTL.LANGUAGE["CuzMenu_Method_Text1"] = "NENHUM" +MWBLTL.LANGUAGE["CuzMenu_Method_Text2"] = "ALEATÓRIO" +MWBLTL.LANGUAGE["CuzMenu_Method_Text3"] = "CURADO ALEATÓRIO" +MWBLTL.LANGUAGE["CuzMenu_Method_Text4"] = "FAVORITO ALEATÓRIO" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text4"] = "NASCER COM:" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text5"] = "Bloqueado por " +MWBLTL.LANGUAGE["CuzMenu_Nom_Text6"] = "Cosmetico" +MWBLTL.LANGUAGE["CuzMenu_Title_Text"] = "CUSTOMIZAR" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text7"] = "SAIR" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text8"] = "STATUS" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text9"] = "m" -- (Metre: Unit of length) +MWBLTL.LANGUAGE["CuzMenu_Nom_Text10"] = "s" -- (Second: Unit of time) + +-- Spawn Menu +MWBLTL.LANGUAGE["SpawnMenu_VM_Title"] = "View Model" +MWBLTL.LANGUAGE["SpawnMenu_VM_Text1"] = "FOV" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help1"] = "Trocar view model FOV." +MWBLTL.LANGUAGE["SpawnMenu_VM_Text2"] = "FOV - ADS" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help2"] = "Trocar view model FOV Quando estiver mirando." +MWBLTL.LANGUAGE["SpawnMenu_VM_Help3"] = "Nota: miras de sniper ignoram tudo abaixo de 1!" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help4"] = "VIEW MODEL RIGS" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Title"] = "Efeitos" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text1"] = "Fumaça na Boca da Arma" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help1"] = "Selecionar fumaça quente demais na boca da arma." +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text2"] = "View Blur FX" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help2"] = "Seleceionar DOF Blur quando estiver reloading/customizing." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Title"] = "HUD" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help1"] = "Cor da Mira" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text1"] = "Mira" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help2"] = "Selecionar Mira." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text2"] = "Ajuda de Selecionador de Tiro" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help3"] = "Desativar Ou Ativar Ajuda de Selecionador de Tiro." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text3"] = "Indicador de Lanterna" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help4"] = "Desativar Ou Ativer HUD de lanterna." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text4"] = "Ajuda de Mira de Arma" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help5"] = "Desativar ou Ativar Ajuda de Mira de Arma." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text5"] = "Lasers Customizados" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help6"] = "Selecionar Cor da arma no Modo Sandbox Para customizar a cor do Laser." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Title"] = "Controles" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text1"] = "Desativar ou Ativar ADS" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help1"] = "Trocar entre Pressionar ou Aperta Para ADS." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text2"] = "Recarregar Automáticamente" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help2"] = "Ativar Ou Desativar Recarregar Automáticamente quando pente da arma estiver vázio." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text3"] = "Puxar Gatilho Manualmente" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help3"] = "Desativar Ou Ativar Puxar Gatilho Manualmente (Quando estiver bombeando ou recarregando uma arma de ação de ferrolho). Soltar o botão de atirar para Puxar o Gatilho." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help4"] = "Mudar a tecla do menu de Customização da Arma" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help5"] = "Quando isso estiver feito, o menu não vai aparecer quando apertar a tecla de contexto (Tecla padrão usada antes, C)!" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text4"] = "Assistente de mira" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help6"] = "Ativar Assistente de mura." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text5"] = "Spawnar com Preset:" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text6"] = "Nenhum" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text7"] = "Aleatório" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text8"] = "Curado Aleatório" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text9"] = "Favorito Aleátorio" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text10"] = "Customizar Arma" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Title"] = "Debug" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text1"] = "View Model Livre" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help1"] = "Selecionar view model livre transformação." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text2"] = "Congelar Viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help2"] = "Animação Delta" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text3"] = "Lista de Animação de recarregamento" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text4"] = "Mira de Mira de aço" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help3"] = "Selecinar Mira de Mira de aço." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text5"] = "Desativar Respiração" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help4"] = "Selecionar respiração (NOTA: isso ainda vai ficar ativado no servidor)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text6"] = "Ressonância" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help5"] = "Mostrar Ressonância (Precisa de um convar de desenvolvedor)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text7"] = "Ajuda de distância" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help6"] = "Mostrar distância de impacto (Precisa de um convar de desenvolvedor)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text8"] = "Projetil" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help7"] = "Mostrar o caminho do projétil e do assistente de mira (Precisa de um convar de desenvolvedor)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text9"] = "Renderização de Viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help8"] = "Selecionar Renderização de viewmodel." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text10"] = "Renderização de Worldmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help9"] = "Selecionar Renderização de worldmodel." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text11"] = "Pente" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help10"] = "Forçar pente para uma munição." +MWBLTL.LANGUAGE["SpawnMenu_SC_Title"] = "Controles do Servidor" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text1"] = "Multiplicador de Dano de PvP" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help1"] = "Trocar dano Contra Jogadores." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text2"] = "Multiplicador de Dano de PvE" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help2"] = "Trocar dano Contra NPCs e Nextbots." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text3"] = "Multiplicador de Recuo" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help3"] = "Trocar Intensidade de Recuo." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text4"] = "Multiplicador de Acerto" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help4"] = "Trocar intensidade de acertos." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text5"] = "Multiplicador de Distância" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help5"] = "Trocar limite de distância." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text6"] = "Assistente de mira" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help6"] = "Habilitar Assistente de mira." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text7"] = "Mira de Respirar/Balanço" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help7"] = "Deixar Mira Balançar quando estiver mirando." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text8"] = "Selecionar Customização" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help8"] = "Habilitar Customização de Arma." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text9"] = "Penetração Detalhada" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help9"] = "Selecionar Penetração detalhada no modelo (Pesado na perfomance)." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text10"] = "Limite de Customização" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help10"] = "Limite de Customização a arma pode ter. Zero significa sem limites." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text11"] = "Primeira vez equipando" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help11"] = "Habilitar Primeira vez Equipando para toda vez que você equipar." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text12"] = "Recarregando correndo" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help12"] = "Habilitar Reload enquanto estiver correndo." +MWBLTL.LANGUAGE["SpawnMenu_RC_Text1"] = "Rig" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text2"] = "C_Hands" +MWBLTL.LANGUAGE["MWBLTL_Options_Title"] = "Linguagens" +MWBLTL.LANGUAGE["MWBLTL_Options_Text1"] = "SELECIONE UMA LINGUAGEM" +MWBLTL.LANGUAGE["MWBLTL_Options_Text2"] = "Se não possue nenhuma trocar, Renicie o Mapa" + +-- Attachments +MWBLTL.LANGUAGE["Atts_Category_Accessories"] = "Accessorios" +MWBLTL.LANGUAGE["Atts_Category_Ammo"] = "Munição" +MWBLTL.LANGUAGE["Atts_Category_Arms"] = "Braços" +MWBLTL.LANGUAGE["Atts_Category_Arrows"] = "Flechas" +MWBLTL.LANGUAGE["Atts_Category_Barrels"] = "Barril" +MWBLTL.LANGUAGE["Atts_Category_Bolts"] = "Ferrolhos" +MWBLTL.LANGUAGE["Atts_Category_Conversions"] = "Conversões" +MWBLTL.LANGUAGE["Atts_Category_Forends"] = "Concordar" +MWBLTL.LANGUAGE["Atts_Category_Grips"] = "Grips" +MWBLTL.LANGUAGE["Atts_Category_Lasers"] = "Lasers" +MWBLTL.LANGUAGE["Atts_Category_Magazines"] = "Pentes" +MWBLTL.LANGUAGE["Atts_Category_Misc"] = "Outros" +MWBLTL.LANGUAGE["Atts_Category_Muzzle_Devices"] = "Aparelho de muzzle" +MWBLTL.LANGUAGE["Atts_Category_Perks"] = "Habilidades" +MWBLTL.LANGUAGE["Atts_Category_Pistol_Grips"] = "Grips De pistolas" +MWBLTL.LANGUAGE["Atts_Category_Pumps"] = "Pumps" +MWBLTL.LANGUAGE["Atts_Category_Rails"] = "Trilhos" +MWBLTL.LANGUAGE["Atts_Category_Receivers"] = "Recebedores" +MWBLTL.LANGUAGE["Atts_Category_Sights"] = "Miras" +MWBLTL.LANGUAGE["Atts_Category_Stocks"] = "Stocks" +MWBLTL.LANGUAGE["Atts_Category_Toprails"] = "TrilhasDoTopo" +MWBLTL.LANGUAGE["Atts_Category_Cables"] = "Cabos" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/languages/ru.lua b/lua/weapons/mg_base/modules/languages/ru.lua new file mode 100644 index 0000000..93c26f0 --- /dev/null +++ b/lua/weapons/mg_base/modules/languages/ru.lua @@ -0,0 +1,183 @@ +MWBLTL.AddLanguage("ru", "Russian") + +-- Stat Info +MWBLTL.LANGUAGE["StatInfo_RecoilStability"] = "Стабильн. отдачи" +MWBLTL.LANGUAGE["StatInfo_Shake"] = "Стабильн. прицелив." +MWBLTL.LANGUAGE["StatInfo_AimSway"] = "Дрожание прицела" +MWBLTL.LANGUAGE["StatInfo_MovementMultiplier"] = "Стабильн. оруж. при перемещ." +MWBLTL.LANGUAGE["StatInfo_HeadshotMultiplier"] = "Урон в голову" +MWBLTL.LANGUAGE["StatInfo_ProjectileSpeed"] = "Скорость пуль" +MWBLTL.LANGUAGE["StatInfo_ProjectileGravity"] = "Стабильн. пуль" +MWBLTL.LANGUAGE["StatInfo_ClipSize"] = "Размер магазина" +MWBLTL.LANGUAGE["StatInfo_RPM"] = "Выст. в минуту" +MWBLTL.LANGUAGE["StatInfo_AimSpeed"] = "Скор. прицелив." +MWBLTL.LANGUAGE["StatInfo_SprintSpeed"] = "Задерж. стр. после бега" +MWBLTL.LANGUAGE["StatInfo_AimLength"] = "Время прицелив." +MWBLTL.LANGUAGE["StatInfo_RechamberSpeed"] = "Скор. перезарядки" +MWBLTL.LANGUAGE["StatInfo_AimAccuracy"] = "Точность в прицелив." +MWBLTL.LANGUAGE["StatInfo_ConeIncrease"] = "Разброс при стрельбе" +MWBLTL.LANGUAGE["StatInfo_Accuracy"] = "Точность" +MWBLTL.LANGUAGE["StatInfo_ReloadSpeed"] = "Скор. перезарядки" +MWBLTL.LANGUAGE["StatInfo_SwitchSpeed"] = "Скор. смены оружия" +MWBLTL.LANGUAGE["StatInfo_DrawLength"] = "Время достав. оружия" +MWBLTL.LANGUAGE["StatInfo_HolsterLength"] = "Время убир. оружия" +MWBLTL.LANGUAGE["StatInfo_ReloadLength"] = "Время перезарядки" +MWBLTL.LANGUAGE["StatInfo_DamageClose"] = "Урон вблизи" +MWBLTL.LANGUAGE["StatInfo_DamageRange"] = "Дистанция урона" +MWBLTL.LANGUAGE["StatInfo_EffectiveRange"] = "Эффект. дистанция" +MWBLTL.LANGUAGE["StatInfo_MaxRange"] = "Макс. дистанция" +MWBLTL.LANGUAGE["StatInfo_PenetrationThickness"] = "Проникающая сила" +MWBLTL.LANGUAGE["StatInfo_HorizontalRecoil"] = "Гориз. отдача" +MWBLTL.LANGUAGE["StatInfo_Recoil"] = "Отдача" +MWBLTL.LANGUAGE["StatInfo_VerticalRecoil"] = "Вертик. отдача" +MWBLTL.LANGUAGE["StatInfo_MeleeSpeed"] = "Скорость удара" +MWBLTL.LANGUAGE["StatInfo_MeleeDamage"] = "Урон в ближнем бою" +MWBLTL.LANGUAGE["StatInfo_Bullets"] = "Количество пуль" +MWBLTL.LANGUAGE["StatInfo_SprintLength"] = "Задерж. стр. после бега" + +-- HUD +MWBLTL.LANGUAGE["HUD_Debug_Text1"] = "При стандартном прицеле зелёный крест должен стать жёлтым (идеальное выравнивание)." +MWBLTL.LANGUAGE["HUD_Debug_Text2"] = "Если вы разработчик, поместите кость выравнивания в середину изображения вашего прицела по умолчанию, выровняйте со смещением соответствующим образом." +MWBLTL.LANGUAGE["HUD_Debug_Text3"] = "Разница в пикселях (чем ближе к 0, тем лучше): " +MWBLTL.LANGUAGE["HUD_Debug_Text4"] = "Следуйте фиолетовой линии, чтобы увидеть угол, при необходимости измените смещение угла (!)" +MWBLTL.LANGUAGE["HUD_FireMode_Safety"] = "ПРЕДОХР" +MWBLTL.LANGUAGE["HUD_Key_NotBound"] = "КЛАВИША НЕ НАЗНАЧЕНА: " +MWBLTL.LANGUAGE["HUD_Commands_Text1"] = "x 2: ПРИЦЕЛ" +MWBLTL.LANGUAGE["HUD_Commands_Text2"] = "ЗАДЕРЖАТЬ ДЫХАНИЕ" +MWBLTL.LANGUAGE["HUD_Commands_Text3"] = ": ФОНАРИК" + +-- Customization Menu +MWBLTL.LANGUAGE["CuzMenu_Nom_Text1"] = "ИЗБРАННОЕ" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text2"] = "СНАРЯЖЕНИЯ" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text3"] = "Введите имя..." +MWBLTL.LANGUAGE["CuzMenu_Method_Text1"] = "НЕТ" +MWBLTL.LANGUAGE["CuzMenu_Method_Text2"] = "СЛУЧАЙНЫМ" +MWBLTL.LANGUAGE["CuzMenu_Method_Text3"] = "СЛУЧАЙНО ВЫБРАННЫМ" +MWBLTL.LANGUAGE["CuzMenu_Method_Text4"] = "СЛУЧАЙНЫМ ИЗБРАННЫМ" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text4"] = "ПОЯВЛЕНИЕ С:" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text5"] = "Заблокировано " +MWBLTL.LANGUAGE["CuzMenu_Nom_Text6"] = "Аксессуар" +MWBLTL.LANGUAGE["CuzMenu_Title_Text"] = "ОФОРМЛЕНИЕ" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text7"] = "ВЫХОД" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text8"] = "СТАТИСТИКА" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text9"] = "м" -- (Metre: Unit of length) +MWBLTL.LANGUAGE["CuzMenu_Nom_Text10"] = "сек." -- (Second: Unit of time) + +-- Spawn Menu +MWBLTL.LANGUAGE["SpawnMenu_VM_Title"] = "Модель оружия" +MWBLTL.LANGUAGE["SpawnMenu_VM_Text1"] = "Угол обзора" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help1"] = "Изменение дальн. отображ. модели оружия." +MWBLTL.LANGUAGE["SpawnMenu_VM_Text2"] = "Угол обз. - прицел" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help2"] = "Изменение дальн. отображ. модели оружия при прицеливании." +MWBLTL.LANGUAGE["SpawnMenu_VM_Help3"] = "Примечание: прицелы игнорируют значения, что меньше 1!" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help4"] = "РУКИ ДЛЯ МОДЕЛИ ОРУЖИЯ" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Title"] = "Эффекты" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text1"] = "Дым из ствола" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help1"] = "Включение дыма из ствола от перегрева." +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text2"] = "Размытие" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help2"] = "Включение эффекта размытия при перезарядке/оформлении оружия." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Title"] = "Интерфейс" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help1"] = "Цвет прицела" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text1"] = "Прицел" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help2"] = "Включение прицела." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text2"] = "Помощник режима огня" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help3"] = "Включение информации о режима огня." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text3"] = "Индикатор фонарика" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help4"] = "Включение информации о фонарике." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text4"] = "Помощник по прицеливанию" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help5"] = "Включение информации прицеле." +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text5"] = "Свои лазеры" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help6"] = "Включение цвета оружия из обычной игры для лазеров." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Title"] = "Управление" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text1"] = "Перекл. прицеливания" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help1"] = "Переключение между удержанием и переключением кнопки прицеливания." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text2"] = "Автоперезарядка" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help2"] = "Включение автоматической перезарядки при пустом магазине." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text3"] = "Перезарядка вручную" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help3"] = "Включение ручного перезаряжания (передёргивание или перезарядка затвора). Прекратите огонь для перезарядки." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help4"] = "Настроить привязку меню" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help5"] = "После установки этого параметра меню не будет отображаться при нажатии клавиши контекстного меню!" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text4"] = "Помощь в прицеливании" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help6"] = "Включение функции помощи при прицеливании." +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text5"] = "Появление снаряжения:" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text6"] = "Ничего" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text7"] = "Случайное" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text8"] = "Случайно выбранное" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text9"] = "Случайное избранное" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text10"] = "Настроить оружие" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Title"] = "Отладка" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text1"] = "Свободная модель" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help1"] = "Включение свободной трансформации модели оружия в руках." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text2"] = "Заморозить модель" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help2"] = "Дельта анимация" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text3"] = "Обновление списка анимаций" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text4"] = "Перекрестье прицела" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help3"] = "Включение перекрестия прицела." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text5"] = "Отключить дыхание" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help4"] = "Отключение дыхания (ПРИМЕЧАНИЕ: оно всё ещё включено на сервере)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text6"] = "Реверберация" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help5"] = "Отображение реверберации (переменная разработчика)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text7"] = "Помощник дистанции" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help6"] = "Отображение расстояние попадания (переменная разработчика)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text8"] = "Полёт пуль" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help7"] = "Отображение перемещения пули и помощи при прицеливании (переменная разработчика)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text9"] = "Отображение модели (руки)" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help8"] = "Включение отображения модели оружия в руках." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text10"] = "Отображение модели (мир)" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help9"] = "Включение отображения модели оружия в мире." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text11"] = "Магазин" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help10"] = "Заряжание магазина на один патрон." +MWBLTL.LANGUAGE["SpawnMenu_SC_Title"] = "Управление сервером" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text1"] = "Множ. урона по игрокам" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help1"] = "Изменение урона по игрокам." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text2"] = "Множ. урона по окружению" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help2"] = "Изменение урона по NPC и другим персонажам." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text3"] = "Множ. отдачи" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help3"] = "Изменение силы отдачи оружия." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text4"] = "Множ. точности" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help4"] = "Изменение точности оружия." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text5"] = "Множ. дистанции" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help5"] = "Изменение ограничения дистанции оружия." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text6"] = "Помощь в прицеливании" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help6"] = "Разрешение помощи в прицеливании." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text7"] = "Дыхание/дрожание в прицеливании" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help7"] = "Разрешение прицелам дрожать при прицеливании." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text8"] = "Включение оформления" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help8"] = "Разрешение оформления оружия." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text9"] = "Подробная проникающая способность" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help9"] = "Включение более подробной модель проникновения (сильная нагрузка на производительность)." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text10"] = "Огранич. по оформлению" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help10"] = "Ограничение количества модулей, которые может принимать оружие. 0 = нет ограничений." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text11"] = "Первая анимация" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help11"] = "Включить анимацию при выборе нового оружия впервые." +MWBLTL.LANGUAGE["SpawnMenu_SC_Text12"] = "Перезарядка на бегу" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help12"] = "Позволяет перезаряжаться во время бега." +MWBLTL.LANGUAGE["SpawnMenu_RC_Text1"] = "Руки" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text2"] = "C_Hands" +MWBLTL.LANGUAGE["MWBLTL_Options_Title"] = "Язык" +MWBLTL.LANGUAGE["MWBLTL_Options_Text1"] = "ВЫБОР ЯЗЫКА" +MWBLTL.LANGUAGE["MWBLTL_Options_Text2"] = "Если изменений нет, перезагрузите карту." + +-- Attachments +MWBLTL.LANGUAGE["Atts_Category_Accessories"] = "АКСЕССУАР" +MWBLTL.LANGUAGE["Atts_Category_Ammo"] = "БОЕПРИПАСЫ" +MWBLTL.LANGUAGE["Atts_Category_Arms"] = "ЦЕВЬЕ" +MWBLTL.LANGUAGE["Atts_Category_Arrows"] = "СТРЕЛЫ" +MWBLTL.LANGUAGE["Atts_Category_Barrels"] = "СТВОЛ" +MWBLTL.LANGUAGE["Atts_Category_Bolts"] = "ЗАТВОР" +MWBLTL.LANGUAGE["Atts_Category_Conversions"] = "СБОРКА" +MWBLTL.LANGUAGE["Atts_Category_Forends"] = "ЦЕВЬЕ" +MWBLTL.LANGUAGE["Atts_Category_Grips"] = "РУКОЯТЬ" +MWBLTL.LANGUAGE["Atts_Category_Lasers"] = "ЛАЗЕР" +MWBLTL.LANGUAGE["Atts_Category_Magazines"] = "МАГАЗИН" +MWBLTL.LANGUAGE["Atts_Category_Misc"] = "РАЗНОЕ" +MWBLTL.LANGUAGE["Atts_Category_Muzzle_Devices"] = "ДУЛО" +MWBLTL.LANGUAGE["Atts_Category_Perks"] = "ПЕРКИ" +MWBLTL.LANGUAGE["Atts_Category_Pistol_Grips"] = "ПИСТОЛЕТНАЯ РУКОЯТЬ" +MWBLTL.LANGUAGE["Atts_Category_Pumps"] = "ЦЕВЬЕ РУЖЬЯ" +MWBLTL.LANGUAGE["Atts_Category_Rails"] = "ПЛАНКА" +MWBLTL.LANGUAGE["Atts_Category_Receivers"] = "РЕСИВЕР" +MWBLTL.LANGUAGE["Atts_Category_Sights"] = "ПРИЦЕЛ" +MWBLTL.LANGUAGE["Atts_Category_Stocks"] = "ТЫЛЬНАЯ ЧАСТЬ" +MWBLTL.LANGUAGE["Atts_Category_Toprails"] = "ВЕРХНЯЯ ПЛАНКА" +MWBLTL.LANGUAGE["Atts_Category_Cables"] = "ТРОС" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/languages/th.lua b/lua/weapons/mg_base/modules/languages/th.lua new file mode 100644 index 0000000..aa34ad0 --- /dev/null +++ b/lua/weapons/mg_base/modules/languages/th.lua @@ -0,0 +1,183 @@ +MWBLTL.AddLanguage("th", "Thai") + +-- Stat Info +MWBLTL.LANGUAGE["StatInfo_RecoilStability"] = "คว่ามเสถียรของแรงดีด" +MWBLTL.LANGUAGE["StatInfo_Shake"] = "ความนิ่งขณะเล็ง" +MWBLTL.LANGUAGE["StatInfo_AimSway"] = "การแกว่งของสโคป" +MWBLTL.LANGUAGE["StatInfo_MovementMultiplier"] = "ความนิ่งของการเล็งขณะเดิน" +MWBLTL.LANGUAGE["StatInfo_HeadshotMultiplier"] = "ดาเมจการยิงหัว" +MWBLTL.LANGUAGE["StatInfo_ProjectileSpeed"] = "ความเร็วกระสุน" +MWBLTL.LANGUAGE["StatInfo_ProjectileGravity"] = "ความเสถียรของวิถีกระสุน" +MWBLTL.LANGUAGE["StatInfo_ClipSize"] = "ขนาดบรรจุ" +MWBLTL.LANGUAGE["StatInfo_RPM"] = "อัตราการยิง (นัด/นาที)" +MWBLTL.LANGUAGE["StatInfo_AimSpeed"] = "ความเร็วในการเล็ง" +MWBLTL.LANGUAGE["StatInfo_SprintSpeed"] = "ความเร็วก่อนยิงหลังจากการวิ่ง" +MWBLTL.LANGUAGE["StatInfo_AimLength"] = "เวลาในการเล็ง" +MWBLTL.LANGUAGE["StatInfo_RechamberSpeed"] = "ความเร็วการขึ้นลำ" +MWBLTL.LANGUAGE["StatInfo_AimAccuracy"] = "ขนาดของกลุ่มกระสุนขณะเล็ง" +MWBLTL.LANGUAGE["StatInfo_ConeIncrease"] = "การกระจายของกระสุน" +MWBLTL.LANGUAGE["StatInfo_Accuracy"] = "ขนาดของกลุ่มกระสุน" +MWBLTL.LANGUAGE["StatInfo_ReloadSpeed"] = "ความเร็วในการรีโหลด" +MWBLTL.LANGUAGE["StatInfo_SwitchSpeed"] = "ความเร็วในการเปลี่ยนปืน" +MWBLTL.LANGUAGE["StatInfo_DrawLength"] = "เวลาในการหยิบปืน" +MWBLTL.LANGUAGE["StatInfo_HolsterLength"] = "เวลาในการเก็บปืน" +MWBLTL.LANGUAGE["StatInfo_ReloadLength"] = "เวลาในการรีโหลด" +MWBLTL.LANGUAGE["StatInfo_DamageClose"] = "ดาเมจระยะใกล้" +MWBLTL.LANGUAGE["StatInfo_DamageRange"] = "ดาเมจระยะไกล" +MWBLTL.LANGUAGE["StatInfo_EffectiveRange"] = "ระยะหวังผล" +MWBLTL.LANGUAGE["StatInfo_MaxRange"] = "ระยะสูงสุด" +MWBLTL.LANGUAGE["StatInfo_PenetrationThickness"] = "ความสามารถในการทะลุทะลวง" +MWBLTL.LANGUAGE["StatInfo_HorizontalRecoil"] = "แรงดีดในแนวนอน" +MWBLTL.LANGUAGE["StatInfo_Recoil"] = "แรงถีบ" +MWBLTL.LANGUAGE["StatInfo_VerticalRecoil"] = "แรงดีดในแนวตั้ง" +MWBLTL.LANGUAGE["StatInfo_MeleeSpeed"] = "ความเร็วการตบด้วยท้ายปืน" +MWBLTL.LANGUAGE["StatInfo_MeleeDamage"] = "ดาเมจจากการตบด้วยท้ายปืน" +MWBLTL.LANGUAGE["StatInfo_Bullets"] = "จำนวนลูกปราย" +MWBLTL.LANGUAGE["StatInfo_SprintLength"] = "เวลาก่อนยิงหลังจากการวิ่ง" + +-- HUD +MWBLTL.LANGUAGE["HUD_Debug_Text1"] = "ปกติแล้ว Crosshair สีเขียวกับแดงจะทับกันเป็นสีเหลือง" +MWBLTL.LANGUAGE["HUD_Debug_Text2"] = "ถ้าคุณเป็น Developer ให้ขยับ tag_align ให้ตรงกับศูนย์เหล็ก" +MWBLTL.LANGUAGE["HUD_Debug_Text3"] = "ความต่างในหน่วย Pixel: " +MWBLTL.LANGUAGE["HUD_Debug_Text4"] = "ดูมุมจากเส้นสีม่วง ปรับเท่าที่จำเป็น" +MWBLTL.LANGUAGE["HUD_FireMode_Safety"] = "เซฟตี้" +MWBLTL.LANGUAGE["HUD_Key_NotBound"] = "ไม่ได้กำหนด Key ใว้: " +MWBLTL.LANGUAGE["HUD_Commands_Text1"] = "x 2: ซูมหลังดอท" +MWBLTL.LANGUAGE["HUD_Commands_Text2"] = "กลั้นหายใจ" +MWBLTL.LANGUAGE["HUD_Commands_Text3"] = ": ไฟฉาย" + +-- Customization Menu +MWBLTL.LANGUAGE["CuzMenu_Nom_Text1"] = "พรีเซ็ตโปรด" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text2"] = "พรีเซ็ต" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text3"] = "พิมพ์ชื่อ" +MWBLTL.LANGUAGE["CuzMenu_Method_Text1"] = "ไม่มี" +MWBLTL.LANGUAGE["CuzMenu_Method_Text2"] = "สุ่ม" +MWBLTL.LANGUAGE["CuzMenu_Method_Text3"] = "สุ่มที่แนะนำ" +MWBLTL.LANGUAGE["CuzMenu_Method_Text4"] = "สุ่มพรีเซ็ตโปรด" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text4"] = "เกิดพร้อมกับ :" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text5"] = "บล็อคโดย " +MWBLTL.LANGUAGE["CuzMenu_Nom_Text6"] = "ของตกแต่ง" +MWBLTL.LANGUAGE["CuzMenu_Title_Text"] = "แต่งปืน" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text7"] = "ออก" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text8"] = "ข้อมูลปืน" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text9"] = "เมตร" -- (Metre: Unit of length) +MWBLTL.LANGUAGE["CuzMenu_Nom_Text10"] = "วินาที" -- (Second: Unit of time) + +-- Spawn Menu +MWBLTL.LANGUAGE["SpawnMenu_VM_Title"] = "View Model" +MWBLTL.LANGUAGE["SpawnMenu_VM_Text1"] = "FOV" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help1"] = "เปลี่ยน FOV ของ View Model" +MWBLTL.LANGUAGE["SpawnMenu_VM_Text2"] = "FOV ขณะเล็ง" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help2"] = "เปลี่ยน FOV ของ View Model ขณะเล็ง" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help3"] = "ไม่ส่งผลต่อสโคปถ้าน้อยกว่า 1" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help4"] = "VIEW MODEL RIGS" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Title"] = "เอฟเฟกต์" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text1"] = "ควันปากลำกล้อง" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help1"] = "เปิดเอฟเฟกต์ควันปากลำกล้องหลังจากการยิง" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text2"] = "เอฟเฟกต์เบลอ" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help2"] = "เปิดเอฟเฟกต์เบลอเมื่อรีโหลดหรือแต่งปืน" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Title"] = "HUD" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help1"] = "สี Crosshair" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text1"] = "Crosshair" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help2"] = "เปิดการใช้ Crosshair" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text2"] = "ตัวช่วยโหมดการยิง" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help3"] = "แสดงโหมดการยิงบน HUD" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text3"] = "ตัวช่วยไฟฉาย" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help4"] = "แสดงการเปิดไฟฉายบน HUD" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text4"] = "ตัวช่วยศูนย์เล็ง" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help5"] = "แสดงการเปลี่ยนศูนย์เล็งบน HUD" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text5"] = "ปรับแต่งสีเลเซอร์" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help6"] = "เปิดการใช้ปรับแต่งสีเลเซอร์ เลือกสีจากสี Physgun" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Title"] = "ปุ่มควบคุม" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text1"] = "วิธีการเล็งแบบกดทีเดียว" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help1"] = "เปลี่ยนวิธีการเล็งระหว่างการกดค้างหรือกดทีเดียว" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text2"] = "รีโหลดอัตโนมัติ" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help2"] = "เปิดใช้การรีโหลดอัตโนมัติเมื่อกระสุนหมด" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text3"] = "ปิดการขึ้นลำอัตโนมัติ" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help3"] = "ปิดการขึ้นลำอัตโนมัติสำหรับปืนลูกซองชักและ Bolt-Action ปล่อยเมาส์ซ้ายเพื่อขึ้นลำ" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help4"] = "เปลี่ยนปุ่มเปิดเมนูแต่งปืน" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help5"] = "ถ้าเปลี่ยนแล้ว เวลากดปุ่ม Context Menu จะไม่ขึ้นเมนูแต่งปืนให้" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text4"] = "ตัวช่วยเล็ง" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help6"] = "เปิดใช้ตัวช่วยเล็ง" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text5"] = "เกิดพร้อมกับพรีเซ็ต :" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text6"] = "ไม่มี" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text7"] = "สุ่ม" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text8"] = "สุ่มที่แนะนำ" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text9"] = "สุ่มพรีเซ็ตโปรด" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text10"] = "เข้าเมนูแต่งปืน" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Title"] = "Debug" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text1"] = "เปิดใช้การค้าง View Model อยู่กับที่" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help1"] = "ค้าง View Model อยู่กับทีเพื่อใช้ในการ Debug" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text2"] = "ค้าง View Model" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help2"] = "Animation Delta" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text3"] = "รีโหลดรายการ Animation" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text4"] = "Crosshair ขณะเล็ง" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help3"] = "เปิดใช้ Crosshair ขณะเล็ง" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text5"] = "ปิดการหายใจ" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help4"] = "ปิดระบบการหายใจขณะเล็ง(ยังคงขึ้นกับ Server)." +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text6"] = "เสียงสะท้อน" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help5"] = "เสียงสะท้อน (ต้องใช้คอมมานด์ developer 1)" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text7"] = "แสดงระยะ" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help6"] = "แสดงระยะที่กระสุนกระทบ (ต้องใช้คอมมานด์ developer 1)" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text8"] = "โพรเจกไทล์" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help7"] = "แสดงโพรเจกไทล์ของกระสุนและตัวช่วยเล็ง (ต้องใช้คอมมานด์ developer 1)" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text9"] = "เรนเดอร์ Viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help8"] = "เปิดใช้การเรนเดอร์ Viewmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text10"] = "เรนเดอร์ Worldmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help9"] = "เปิดใช้การเรนเดอร์ Worldmodel" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text11"] = "บรรจุนัดเดียว" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help10"] = "จำกัดกระสุนในซองกระสุนให้เหลือนัดเดียว" +MWBLTL.LANGUAGE["SpawnMenu_SC_Title"] = "ตัวควบคุมสำหรับเซิฟเวอร์" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text1"] = "ตัวคูณดาเมจต่อผู้เล่น" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help1"] = "เปลี่ยนตัวคูณดาเมจต่อผู้เล่น" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text2"] = "ตัวคูณดาเมจต่อ NPC" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help2"] = "เปลี่ยนตัวคูณดาเมจต่อ NPC และ Nextbot ต่างๆ" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text3"] = "ตัวคูณแรงดีด" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help3"] = "เปลี่ยนความดีดของปืน" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text4"] = "ตัวคูณความแม่นยำ" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help4"] = "เปลี่ยนความแม่นยำของปืน" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text5"] = "ตัวคูณระยะ" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help5"] = "เปลี่ยนระยะสูงสุดของปืน" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text6"] = "ตัวช่วยเล็ง" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help6"] = "เปิดใช้ตัวช่วยเล็ง" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text7"] = "การแกว่งของสโคป" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help7"] = "อนุญาตการแกว่งของสโคป" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text8"] = "อนุญาตการแต่งปืน" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help8"] = "เปิดใช้การแต่งปืน" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text9"] = "คำนวนการเจาะของกระสุนแบบละเอียด" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help9"] = "เปลี่ยนการคำนวนการเจาะของกระสุนให้ละเอียดยิ่งขึ้น (ส่งผลต่อ Performance)" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text10"] = "จำกัดการแต่งปืน" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help10"] = "จำกัดจำนวนของแต่งปืน, 0 หมายความว่าไม่มีจำกัดการปรับแต่ง" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text11"] = "อนิเมชันหยิบปืนครั้งแรก" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help11"] = "เปิดการเล่นอนิเมชันเหมื่อหยิบปืนครั้งแรก" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text12"] = "รีโหลดขณะวิ่ง" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help12"] = "เปิดการใช้การรีโหลดขณะวิ่ง" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text1"] = "Rig" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text2"] = "C_Hands" +MWBLTL.LANGUAGE["MWBLTL_Options_Title"] = "ภาษา" +MWBLTL.LANGUAGE["MWBLTL_Options_Text1"] = "เลือกภาษา" +MWBLTL.LANGUAGE["MWBLTL_Options_Text2"] = "ถ้าภาษาไม่เปลี่ยนให้, กรุณารีโหลดเข้าแผนที่อีกครั้ง" + +-- Attachments +MWBLTL.LANGUAGE["Atts_Category_Accessories"] = "อุปกรณ์" +MWBLTL.LANGUAGE["Atts_Category_Ammo"] = "ลูกกระสุน" +MWBLTL.LANGUAGE["Atts_Category_Arms"] = "คันโก่ง" +MWBLTL.LANGUAGE["Atts_Category_Arrows"] = "ลูกธนู" +MWBLTL.LANGUAGE["Atts_Category_Barrels"] = "ลำกล้อง" +MWBLTL.LANGUAGE["Atts_Category_Bolts"] = "ลูกเลื่อน" +MWBLTL.LANGUAGE["Atts_Category_Conversions"] = "ชุดแปลงปืน" +MWBLTL.LANGUAGE["Atts_Category_Forends"] = "ชุดหน้า" +MWBLTL.LANGUAGE["Atts_Category_Grips"] = "กริปมือหน้า" +MWBLTL.LANGUAGE["Atts_Category_Lasers"] = "เลเซอร์" +MWBLTL.LANGUAGE["Atts_Category_Magazines"] = "ซองกระสุน" +MWBLTL.LANGUAGE["Atts_Category_Misc"] = "อื่นๆ" +MWBLTL.LANGUAGE["Atts_Category_Muzzle_Devices"] = "อุปกรณ์ติดปลายปืน" +MWBLTL.LANGUAGE["Atts_Category_Perks"] = "เพิร์ค" +MWBLTL.LANGUAGE["Atts_Category_Pistol_Grips"] = "กริปมือ" +MWBLTL.LANGUAGE["Atts_Category_Pumps"] = "กระโจมมือ" +MWBLTL.LANGUAGE["Atts_Category_Rails"] = "ราง" +MWBLTL.LANGUAGE["Atts_Category_Receivers"] = "โครงปืน" +MWBLTL.LANGUAGE["Atts_Category_Sights"] = "ศูนย์เล็ง" +MWBLTL.LANGUAGE["Atts_Category_Stocks"] = "พานท้าย" +MWBLTL.LANGUAGE["Atts_Category_Toprails"] = "รางบน" +MWBLTL.LANGUAGE["Atts_Category_Cables"] = "สายหน้าไม้" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/languages/zh-CN.lua b/lua/weapons/mg_base/modules/languages/zh-CN.lua new file mode 100644 index 0000000..7a82476 --- /dev/null +++ b/lua/weapons/mg_base/modules/languages/zh-CN.lua @@ -0,0 +1,183 @@ +MWBLTL.AddLanguage("zh-CN", "Chinese Simplified") + +-- Stat Info +MWBLTL.LANGUAGE["StatInfo_RecoilStability"] = "后坐力稳定性" +MWBLTL.LANGUAGE["StatInfo_Shake"] = "瞄准稳定性" +MWBLTL.LANGUAGE["StatInfo_AimSway"] = "瞄具晃动" +MWBLTL.LANGUAGE["StatInfo_MovementMultiplier"] = "武器移动稳定性" +MWBLTL.LANGUAGE["StatInfo_HeadshotMultiplier"] = "爆头伤害" +MWBLTL.LANGUAGE["StatInfo_ProjectileSpeed"] = "弹道速度" +MWBLTL.LANGUAGE["StatInfo_ProjectileGravity"] = "弹道重力" +MWBLTL.LANGUAGE["StatInfo_ClipSize"] = "弹夹容量" +MWBLTL.LANGUAGE["StatInfo_RPM"] = "每分钟射速" +MWBLTL.LANGUAGE["StatInfo_AimSpeed"] = "切换瞄准速度" +MWBLTL.LANGUAGE["StatInfo_SprintSpeed"] = "切换冲刺速度" +MWBLTL.LANGUAGE["StatInfo_AimLength"] = "切换瞄准耗时" +MWBLTL.LANGUAGE["StatInfo_RechamberSpeed"] = "上膛速度" +MWBLTL.LANGUAGE["StatInfo_AimAccuracy"] = "瞄准精准度" +MWBLTL.LANGUAGE["StatInfo_ConeIncrease"] = "开火散射" +MWBLTL.LANGUAGE["StatInfo_Accuracy"] = "散射" +MWBLTL.LANGUAGE["StatInfo_ReloadSpeed"] = "装填速度" +MWBLTL.LANGUAGE["StatInfo_SwitchSpeed"] = "切换速度" +MWBLTL.LANGUAGE["StatInfo_DrawLength"] = "取出武器耗时" +MWBLTL.LANGUAGE["StatInfo_HolsterLength"] = "收起武器耗时" +MWBLTL.LANGUAGE["StatInfo_ReloadLength"] = "装填耗时" +MWBLTL.LANGUAGE["StatInfo_DamageClose"] = "近距离伤害" +MWBLTL.LANGUAGE["StatInfo_DamageRange"] = "伤害距离" +MWBLTL.LANGUAGE["StatInfo_EffectiveRange"] = "有效距离" +MWBLTL.LANGUAGE["StatInfo_MaxRange"] = "最大距离" +MWBLTL.LANGUAGE["StatInfo_PenetrationThickness"] = "穿透力" +MWBLTL.LANGUAGE["StatInfo_HorizontalRecoil"] = "水平后坐力" +MWBLTL.LANGUAGE["StatInfo_Recoil"] = "击退后坐力" +MWBLTL.LANGUAGE["StatInfo_VerticalRecoil"] = "垂直后坐力" +MWBLTL.LANGUAGE["StatInfo_MeleeSpeed"] = "近战恢复速度" +MWBLTL.LANGUAGE["StatInfo_MeleeDamage"] = "近战伤害" +MWBLTL.LANGUAGE["StatInfo_Bullets"] = "弹丸量" +MWBLTL.LANGUAGE["StatInfo_SprintLength"] = "切换冲刺耗时" + +-- HUD +MWBLTL.LANGUAGE["HUD_Debug_Text1"] = "默认瞄具下,绿色十字应该变成黄色(表示完美对齐)" +MWBLTL.LANGUAGE["HUD_Debug_Text2"] = "若你是开发者,你应该将调整用骨骼放在默认瞄具的成像中间,然后调整误差。" +MWBLTL.LANGUAGE["HUD_Debug_Text3"] = "像素差距(越接近 0 越好)" +MWBLTL.LANGUAGE["HUD_Debug_Text4"] = "紫色直线表示角度,根据需要调整角度误差 (!)" +MWBLTL.LANGUAGE["HUD_FireMode_Safety"] = "保险" +MWBLTL.LANGUAGE["HUD_Key_NotBound"] = "未绑定键位: " +MWBLTL.LANGUAGE["HUD_Commands_Text1"] = "x 2: 瞄具" +MWBLTL.LANGUAGE["HUD_Commands_Text2"] = "屏气" +MWBLTL.LANGUAGE["HUD_Commands_Text3"] = ": 手电" + +-- Customization Menu +MWBLTL.LANGUAGE["CuzMenu_Nom_Text1"] = "最爱" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text2"] = "预设" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text3"] = "输入名称……" +MWBLTL.LANGUAGE["CuzMenu_Method_Text1"] = "无" +MWBLTL.LANGUAGE["CuzMenu_Method_Text2"] = "随机" +MWBLTL.LANGUAGE["CuzMenu_Method_Text3"] = "随机精选" +MWBLTL.LANGUAGE["CuzMenu_Method_Text4"] = "随机最爱" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text4"] = "出生自带:" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text5"] = "被此阻挡: " +MWBLTL.LANGUAGE["CuzMenu_Nom_Text6"] = "外观" +MWBLTL.LANGUAGE["CuzMenu_Title_Text"] = "自定义" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text7"] = "退出" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text8"] = "属性" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text9"] = "米" -- (Metre: Unit of length) +MWBLTL.LANGUAGE["CuzMenu_Nom_Text10"] = "秒" -- (Second: Unit of time) + +-- Spawn Menu +MWBLTL.LANGUAGE["SpawnMenu_VM_Title"] = "第一人称模型" +MWBLTL.LANGUAGE["SpawnMenu_VM_Text1"] = "视野" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help1"] = "调整第一人称模型的视野(FOV)." +MWBLTL.LANGUAGE["SpawnMenu_VM_Text2"] = "视野 - 瞄准" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help2"] = "调整瞄准时的第一人称模型视野(FOV)。" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help3"] = "注意: 小于 1 的值对准镜无效!" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help4"] = "第一人称骨骼架构" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Title"] = "视觉效果" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text1"] = "枪口烟雾" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help1"] = "是否显示武器过热后枪口出现的烟雾。" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text2"] = "模糊效果" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help2"] = "是否显示装填/自定义时的景深模糊。" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Title"] = "抬头显示(HUD)" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help1"] = "十字准星颜色" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text1"] = "十字准星" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help2"] = "启用屏幕中间的十字准星。" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text2"] = "火控指示" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help3"] = "启用显示火控的抬头显示(HUD)模组。" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text3"] = "手电筒指示" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help4"] = "启用显示手电筒状态的抬头显示(HUD)模组。" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text4"] = "准镜指示" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help5"] = "切换使用准镜瞄准时的抬头显示(HUD)模组。" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text5"] = "自定义激光颜色" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help6"] = "让激光使用沙盘模式下玩家的武器颜色。" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Title"] = "控制" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text1"] = "切换瞄准" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help1"] = "启用后,按下键位会进入或离开瞄准;禁用时按住键位进入瞄准,松开离开。" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text2"] = "自动装填" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help2"] = "启用后,弹夹空时会立刻装填,不需要按键。" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text3"] = "手动上膛" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help3"] = "使用泵动或栓动武器后,松开开火键才会上膛。" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help4"] = "自定义菜单键位" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help5"] = "设置此键位后,环境菜单键位(默认 C)不再会打开自定义菜单!" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text4"] = "瞄准辅助" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help6"] = "启用瞄准辅助。" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text5"] = "出生自带预设:" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text6"] = "无" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text7"] = "随机" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text8"] = "随机精选" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text9"] = "随机最爱" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text10"] = "自定义武器" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Title"] = "开发者调试" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text1"] = "固定第一人称模型" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help1"] = "模型不会跟随玩家视角移动。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text2"] = "冻结第一人称模型" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help2"] = "动画差值" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text3"] = "刷新动画列表" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text4"] = "机械瞄具下显示十字准星" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help3"] = "切换使用机械瞄具下十字准星的显示。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text5"] = "禁用摇晃和屏气" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help4"] = "禁用后可以固定准镜视角(注意:服务器端仍然会处理摇晃和屏气)。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text6"] = "混响" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help5"] = "显示混响检测(需要启用 \"developer\" 参数)。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text7"] = "射程助手" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help6"] = "显示弹道落点的距离和伤害(需要启用 \"developer\" 参数)。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text8"] = "弹道助手" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help7"] = "显示弹道轨迹和瞄准辅助(需要启用 \"developer\" 参数)。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text9"] = "渲染第一人称模型" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help8"] = "切换第一人称(视觉)模型的显示状态。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text10"] = "渲染第三人称模型" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help9"] = "切换第三人称(世界)模型的显示状态。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text11"] = "装填调试" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help10"] = "弹夹容量固定为 1 发。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Title"] = "服务器设置" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text1"] = "PvP 伤害倍率" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help1"] = "调整武器对玩家的伤害。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text2"] = "PvE 伤害倍率" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help2"] = "调整武器对 NPC 和 Nextbot 的伤害。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text3"] = "后坐力倍率" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help3"] = "调整武器后坐力强度。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text4"] = "精准度倍率" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help4"] = "调准武器精准度。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text5"] = "射程倍率" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help5"] = "调整射程长度。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text6"] = "瞄准辅助" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help6"] = "启用瞄准辅助。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text7"] = "瞄具屏气/晃动" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help7"] = "启用使用瞄具时的晃动效果。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text8"] = "允许自定义" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help8"] = "允许武器自定义。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text9"] = "高质量穿透模拟" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help9"] = "使用更精致的穿透算法(对性能有负面影响)。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text10"] = "武器配件上限" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help10"] = "一个武器能有的最多配件量。设为零则没有上限。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text11"] = "初始取出动画" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help11"] = "第一次装备武器时使用特殊动画。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text12"] = "冲刺时装填" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help12"] = "允许冲刺时装填。" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text1"] = "骨骼架构" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text2"] = "第一人称手臂" +MWBLTL.LANGUAGE["MWBLTL_Options_Title"] = "语言" +MWBLTL.LANGUAGE["MWBLTL_Options_Text1"] = "选择语言" +MWBLTL.LANGUAGE["MWBLTL_Options_Text2"] = "如果更改没有生效,则需要重启地图。" + +-- Attachments +MWBLTL.LANGUAGE["Atts_Category_Accessories"] = "配件" +MWBLTL.LANGUAGE["Atts_Category_Ammo"] = "弹药" +MWBLTL.LANGUAGE["Atts_Category_Arms"] = "弩臂" +MWBLTL.LANGUAGE["Atts_Category_Arrows"] = "弩箭" +MWBLTL.LANGUAGE["Atts_Category_Barrels"] = "枪管" +MWBLTL.LANGUAGE["Atts_Category_Bolts"] = "枪栓" +MWBLTL.LANGUAGE["Atts_Category_Conversions"] = "转换套件" +MWBLTL.LANGUAGE["Atts_Category_Forends"] = "鱼骨" +MWBLTL.LANGUAGE["Atts_Category_Grips"] = "前握把" +MWBLTL.LANGUAGE["Atts_Category_Lasers"] = "激光指示器" +MWBLTL.LANGUAGE["Atts_Category_Magazines"] = "弹匣" +MWBLTL.LANGUAGE["Atts_Category_Misc"] = "杂项" +MWBLTL.LANGUAGE["Atts_Category_Muzzle_Devices"] = "膛口装置" +MWBLTL.LANGUAGE["Atts_Category_Perks"] = "特长" +MWBLTL.LANGUAGE["Atts_Category_Pistol_Grips"] = "后握把" +MWBLTL.LANGUAGE["Atts_Category_Pumps"] = "护木" +MWBLTL.LANGUAGE["Atts_Category_Rails"] = "导轨" +MWBLTL.LANGUAGE["Atts_Category_Receivers"] = "机匣" +MWBLTL.LANGUAGE["Atts_Category_Sights"] = "瞄具" +MWBLTL.LANGUAGE["Atts_Category_Stocks"] = "枪托" +MWBLTL.LANGUAGE["Atts_Category_Toprails"] = "顶部导轨" +MWBLTL.LANGUAGE["Atts_Category_Cables"] = "弩弦" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/languages/zh-TW.lua b/lua/weapons/mg_base/modules/languages/zh-TW.lua new file mode 100644 index 0000000..d326664 --- /dev/null +++ b/lua/weapons/mg_base/modules/languages/zh-TW.lua @@ -0,0 +1,183 @@ +MWBLTL.AddLanguage("zh-TW", "Chinese Traditional") + +-- Stat Info +MWBLTL.LANGUAGE["StatInfo_RecoilStability"] = "後座力穩定性" +MWBLTL.LANGUAGE["StatInfo_Shake"] = "瞄準穩定性" +MWBLTL.LANGUAGE["StatInfo_AimSway"] = "瞄具晃動" +MWBLTL.LANGUAGE["StatInfo_MovementMultiplier"] = "武器移動穩定性" +MWBLTL.LANGUAGE["StatInfo_HeadshotMultiplier"] = "暴頭傷害" +MWBLTL.LANGUAGE["StatInfo_ProjectileSpeed"] = "彈道速度" +MWBLTL.LANGUAGE["StatInfo_ProjectileGravity"] = "彈道重力" +MWBLTL.LANGUAGE["StatInfo_ClipSize"] = "彈匣容量" +MWBLTL.LANGUAGE["StatInfo_RPM"] = "每分鐘射速" +MWBLTL.LANGUAGE["StatInfo_AimSpeed"] = "切換瞄準速度" +MWBLTL.LANGUAGE["StatInfo_SprintSpeed"] = "切換衝刺速度" +MWBLTL.LANGUAGE["StatInfo_AimLength"] = "切換瞄準時間" +MWBLTL.LANGUAGE["StatInfo_RechamberSpeed"] = "上膛速度" +MWBLTL.LANGUAGE["StatInfo_AimAccuracy"] = "瞄準精準度" +MWBLTL.LANGUAGE["StatInfo_ConeIncrease"] = "開火散射" +MWBLTL.LANGUAGE["StatInfo_Accuracy"] = "散射" +MWBLTL.LANGUAGE["StatInfo_ReloadSpeed"] = "裝填速度" +MWBLTL.LANGUAGE["StatInfo_SwitchSpeed"] = "切換速度" +MWBLTL.LANGUAGE["StatInfo_DrawLength"] = "拿出武器時間" +MWBLTL.LANGUAGE["StatInfo_HolsterLength"] = "收起武器時間" +MWBLTL.LANGUAGE["StatInfo_ReloadLength"] = "裝填時間" +MWBLTL.LANGUAGE["StatInfo_DamageClose"] = "近距離傷害" +MWBLTL.LANGUAGE["StatInfo_DamageRange"] = "傷害距離" +MWBLTL.LANGUAGE["StatInfo_EffectiveRange"] = "有效距離" +MWBLTL.LANGUAGE["StatInfo_MaxRange"] = "最大距離" +MWBLTL.LANGUAGE["StatInfo_PenetrationThickness"] = "穿透力" +MWBLTL.LANGUAGE["StatInfo_HorizontalRecoil"] = "水平後座力" +MWBLTL.LANGUAGE["StatInfo_Recoil"] = "擊退後座力" +MWBLTL.LANGUAGE["StatInfo_VerticalRecoil"] = "垂直後座力" +MWBLTL.LANGUAGE["StatInfo_MeleeSpeed"] = "近戰恢復速度" +MWBLTL.LANGUAGE["StatInfo_MeleeDamage"] = "近戰傷害" +MWBLTL.LANGUAGE["StatInfo_Bullets"] = "彈丸數量" +MWBLTL.LANGUAGE["StatInfo_SprintLength"] = "切換衝刺時間" + +-- HUD +MWBLTL.LANGUAGE["HUD_Debug_Text1"] = "預設瞄具下,綠色十字線應該變成黃色(表示完美對齊)" +MWBLTL.LANGUAGE["HUD_Debug_Text2"] = "倘若你是開發者,你應該將調整用骨骼放在預設瞄具的成像中間後調整誤差。" +MWBLTL.LANGUAGE["HUD_Debug_Text3"] = "像素差距(越接近 0 越好)" +MWBLTL.LANGUAGE["HUD_Debug_Text4"] = "紫色直線表示角度,根據需要調整角度誤差 (!)" +MWBLTL.LANGUAGE["HUD_FireMode_Safety"] = "保險" +MWBLTL.LANGUAGE["HUD_Key_NotBound"] = "未綁定按鍵: " +MWBLTL.LANGUAGE["HUD_Commands_Text1"] = "x 2: 瞄具" +MWBLTL.LANGUAGE["HUD_Commands_Text2"] = "憋氣" +MWBLTL.LANGUAGE["HUD_Commands_Text3"] = ": 手電筒" + +-- Customization Menu +MWBLTL.LANGUAGE["CuzMenu_Nom_Text1"] = "我的最愛" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text2"] = "預設" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text3"] = "輸入名稱……" +MWBLTL.LANGUAGE["CuzMenu_Method_Text1"] = "無" +MWBLTL.LANGUAGE["CuzMenu_Method_Text2"] = "隨機" +MWBLTL.LANGUAGE["CuzMenu_Method_Text3"] = "隨機精選" +MWBLTL.LANGUAGE["CuzMenu_Method_Text4"] = "隨機最愛" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text4"] = "重生時派發:" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text5"] = "被此阻擋: " +MWBLTL.LANGUAGE["CuzMenu_Nom_Text6"] = "外觀" +MWBLTL.LANGUAGE["CuzMenu_Title_Text"] = "自訂" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text7"] = "退出" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text8"] = "屬性" +MWBLTL.LANGUAGE["CuzMenu_Nom_Text9"] = "米" -- (Metre: Unit of length) +MWBLTL.LANGUAGE["CuzMenu_Nom_Text10"] = "秒" -- (Second: Unit of time) + +-- Spawn Menu +MWBLTL.LANGUAGE["SpawnMenu_VM_Title"] = "第一人稱模型" +MWBLTL.LANGUAGE["SpawnMenu_VM_Text1"] = "視野" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help1"] = "調整第一人稱模型的視野(FOV)." +MWBLTL.LANGUAGE["SpawnMenu_VM_Text2"] = "視野 - 瞄準" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help2"] = "調整瞄準時第一人稱模型的視野(FOV)。" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help3"] = "注意: 小於 1 的值對準鏡無效!" +MWBLTL.LANGUAGE["SpawnMenu_VM_Help4"] = "第一人稱骨骼架構" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Title"] = "視差效果" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text1"] = "槍口煙霧" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help1"] = "是否顯示武器過熱後槍口出現煙霧。" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Text2"] = "模糊效果" +MWBLTL.LANGUAGE["SpawnMenu_Effs_Help2"] = "是否顯示裝填/自訂時的景深。" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Title"] = "抬頭顯示器(HUD)" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help1"] = "十字準星顏色" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text1"] = "十字準星" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help2"] = "開啟螢幕中見的十字準星。" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text2"] = "火控提示" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help3"] = "開啟顯示火控的抬頭顯示器(HUD)模組。" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text3"] = "手電筒提示" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help4"] = "啟用顯示手電筒狀態的抬頭顯示器(HUD)模組。" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text4"] = "準鏡提示" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help5"] = "切換使用準鏡瞄準時的抬頭顯示器(HUD)模組。" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Text5"] = "自訂雷射顏色" +MWBLTL.LANGUAGE["SpawnMenu_HUD_Help6"] = "讓雷射使用沙盒模式下玩家的武器顏色。" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Title"] = "控制" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text1"] = "切換瞄準" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help1"] = "開啟後,按下按鍵會進入或離開瞄準;禁用時按住按鍵進入瞄準,鬆開放開。" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text2"] = "自動裝填" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help2"] = "開啟後,彈匣空時會自動裝填,不需要手動裝填。" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text3"] = "手動上膛" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help3"] = "使用汞動栓動武氣候,放開開火鍵才會上膛。" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help4"] = "自訂菜單按鍵" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help5"] = "設定此按鍵後,環境選單按鍵(預設 C)不會再打開自訂選單!" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text4"] = "瞄準輔助" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Help6"] = "開啟準輔助。" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text5"] = "重生時使用預設配置:" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text6"] = "無" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text7"] = "隨機" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text8"] = "隨機精選" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text9"] = "隨機最愛" +MWBLTL.LANGUAGE["SpawnMenu_Cont_Text10"] = "自訂武器" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Title"] = "開發者調整" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text1"] = "固定第一人稱模型" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help1"] = "模型不會跟著玩家視角移動。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text2"] = "凍結第一人稱模型" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help2"] = "動畫差植" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text3"] = "刷新動畫列表" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text4"] = "機械瞄具下顯示十字準星" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help3"] = "切換使用機械瞄具下十字準星的顯示。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text5"] = "禁用晃動和憋氣" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help4"] = "禁用後可以固定準鏡視角(注意:伺服器端仍然會處理晃動和憋氣)。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text6"] = "混響" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help5"] = "顯示混響檢測(需要启用 \"developer\" 参数)。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text7"] = "射程小幫手" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help6"] = "顯示彈道落點的距離與傷害(需要開啟 \"developer\" 參數)。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text8"] = "彈道小幫手" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help7"] = "顯示彈道軌跡和瞄準輔助(需要启用 \"developer\" 參數)。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text9"] = "渲染第一人稱模型" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help8"] = "切換第一人稱模型(視差)模型的顯示狀態。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text10"] = "渲染第三人稱模型" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help9"] = "切換第三人稱(世界)模型顯示的狀態。" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Text11"] = "裝填調整" +MWBLTL.LANGUAGE["SpawnMenu_Debug_Help10"] = "彈匣容量固定為 1 發。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Title"] = "伺服器設定" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text1"] = "PvP 傷害倍率" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help1"] = "調整武器對玩家的傷害。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text2"] = "PvE 傷害倍率" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help2"] = "調整武器對 NPC 和 Nextbot 的傷害。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text3"] = "後座力倍率" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help3"] = "調整武器後座力強度。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text4"] = "精準度倍率" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help4"] = "調整武器精準度。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text5"] = "射程倍率" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help5"] = "調整射程長度。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text6"] = "瞄準輔助" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help6"] = "開啟瞄準輔助。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text7"] = "瞄具憋氣/晃動" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help7"] = "開啟瞄具時的晃動效果。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text8"] = "允許自訂" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help8"] = "允許自訂武器。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text9"] = "高級穿透模擬" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help9"] = "使用更精緻的穿透算法(對性能有負面影響)。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text10"] = "武器配件上限" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help10"] = "一個武器最多能有幾個配件。設定為0則是沒有上限。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text11"] = "初始拿出動畫" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help11"] = "第一是裝備武器時使用特殊動畫。" +MWBLTL.LANGUAGE["SpawnMenu_SC_Text12"] = "衝刺時裝填" +MWBLTL.LANGUAGE["SpawnMenu_SC_Help12"] = "允許衝刺時裝填。" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text1"] = "骨骼架構" +MWBLTL.LANGUAGE["SpawnMenu_RC_Text2"] = "第一人稱手臂" +MWBLTL.LANGUAGE["MWBLTL_Options_Title"] = "語言" +MWBLTL.LANGUAGE["MWBLTL_Options_Text1"] = "選擇語言" +MWBLTL.LANGUAGE["MWBLTL_Options_Text2"] = "如果更改沒有生效,則需要重新進入地圖。" + +-- Attachments +MWBLTL.LANGUAGE["Atts_Category_Accessories"] = "配件" +MWBLTL.LANGUAGE["Atts_Category_Ammo"] = "彈藥" +MWBLTL.LANGUAGE["Atts_Category_Arms"] = "弩臂" +MWBLTL.LANGUAGE["Atts_Category_Arrows"] = "弩箭" +MWBLTL.LANGUAGE["Atts_Category_Barrels"] = "槍管" +MWBLTL.LANGUAGE["Atts_Category_Bolts"] = "槍栓" +MWBLTL.LANGUAGE["Atts_Category_Conversions"] = "轉換套件" +MWBLTL.LANGUAGE["Atts_Category_Forends"] = "魚骨" +MWBLTL.LANGUAGE["Atts_Category_Grips"] = "前握把" +MWBLTL.LANGUAGE["Atts_Category_Lasers"] = "雷射指示器" +MWBLTL.LANGUAGE["Atts_Category_Magazines"] = "彈匣" +MWBLTL.LANGUAGE["Atts_Category_Misc"] = "其他" +MWBLTL.LANGUAGE["Atts_Category_Muzzle_Devices"] = "槍口" +MWBLTL.LANGUAGE["Atts_Category_Perks"] = "特長" +MWBLTL.LANGUAGE["Atts_Category_Pistol_Grips"] = "後握把" +MWBLTL.LANGUAGE["Atts_Category_Pumps"] = "護木" +MWBLTL.LANGUAGE["Atts_Category_Rails"] = "導軌" +MWBLTL.LANGUAGE["Atts_Category_Receivers"] = "機匣" +MWBLTL.LANGUAGE["Atts_Category_Sights"] = "瞄具" +MWBLTL.LANGUAGE["Atts_Category_Stocks"] = "槍托" +MWBLTL.LANGUAGE["Atts_Category_Toprails"] = "頂部導軌" +MWBLTL.LANGUAGE["Atts_Category_Cables"] = "弩弦" \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/presets/presets_uzulu_l4d.lua b/lua/weapons/mg_base/modules/presets/presets_uzulu_l4d.lua new file mode 100644 index 0000000..8ba5331 --- /dev/null +++ b/lua/weapons/mg_base/modules/presets/presets_uzulu_l4d.lua @@ -0,0 +1,4 @@ +PRESET.SWEP = "mg_uzulu" +PRESET.Name = "A Machinegun?!" +PRESET.Attachments = {"attachment_vm_sm_uzulu_stock_folded", "attachment_vm_sm_uzulu_magcalcust9mm", "attachment_vm_sm_uzulu_laser01"} +PRESET.UISound = Sound("viper/shared/takesubmachinegun02.wav") \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/reverb/mw_reverb.lua b/lua/weapons/mg_base/modules/reverb/mw_reverb.lua new file mode 100644 index 0000000..b5a7714 --- /dev/null +++ b/lua/weapons/mg_base/modules/reverb/mw_reverb.lua @@ -0,0 +1,189 @@ +AddCSLuaFile() + +--[[local MW_REVERB_SOUNDS = { + ["default"] = { + Outside = { + Layer = "Atmo_AR.Outside", + Reflection = "Reflection_AR.Outside", + }, + Inside = "Atmo_AR.Inside", + }, + + ["assault_rifle_1"] = { + Outside = { + Layer = "Atmo_AR.Outside", + Reflection = "Reflection_AR.Outside", + }, + Inside = "Atmo_AR.Inside", + }, + + ["assault_rifle_2"] = { + Outside = { + Layer = "Atmo_AR2.Outside", + Reflection = "Reflection_AR.Outside", + }, + Inside = "Atmo_AR.Inside", + }, + + ["assault_rifle_3"] = { + Outside = { + Layer = "Atmo_AR3.Outside", + Reflection = "Reflection_AR.Outside", + }, + Inside = "Atmo_AR.Inside", + }, + + ["assault_rifle_4"] = { + Outside = { + Layer = "Atmo_AR4.Outside", + Reflection = "Reflection_AR.Outside", + }, + Inside = "Atmo_AR.Inside", + }, + + ["assault_rifle_5"] = { + Outside = { + Layer = "Atmo_AR6.Outside", + Reflection = "Reflection_AR.Outside", + }, + Inside = "Atmo_AR.Inside", + }, + + ["pistol"] = { + Outside = { + Layer = "Atmo_Pistol.Outside", + Reflection = "Reflection_Pistol.Outside", + }, + Inside = "Atmo_Pistol.Inside", + }, + + ["suppressed_pistol"] = { + Outside = { + Layer = "Atmo_Pistol_Sup.Outside", + Reflection = "Reflection_Pistol.Outside", + }, + Inside = "Atmo_Pistol_Sup.Inside", + }, + + ["suppressed_assault_rifle"] = { + Outside = { + Layer = "Atmo_AR2_Sup.Outside", + Reflection = "Reflection_Rifle.Outside", + }, + Inside = "Atmo_AR_Sup.Inside", + }, + + ["pistol_heavy"] = { + Outside = { + Layer = "Atmo_Pistol_Mag2.Outside", + Reflection = "Reflection_Pistol.Outside", + }, + Inside = "Atmo_Shotgun.Inside", + }, + + ["smg"] = { + Outside = { + Layer = "Atmo_SMG.Outside", + Reflection = "Reflection_Pistol.Outside", + }, + Inside = "Atmo_SMG.Inside", + }, + + ["shotgun"] = { + Outside = { + Layer = "Atmo_Shotgun.Outside", + Reflection = "Reflection_Shotgun.Outside", + }, + Inside = "Atmo_Shotgun.Inside", + }, + + ["sniper"] = { + Outside = { + Layer = "Atmo_Sniper.Outside", + Reflection = "Reflection_Sniper.Outside", + }, + Inside = "Atmo_Sniper.Inside", + }, + + ["LMG"] = { + Outside = { + Layer = "Atmo_LMG.Outside", + Reflection = "Reflection_AR.Outside", + }, + Inside = "Atmo_LMG.Inside", + }, + + ["DMR"] = { + Outside = { + Layer = "Atmo_DMR.Outside", + Reflection = "Reflection_Sniper.Outside", + }, + Inside = "Atmo_Sniper.Inside", + }, + + ["RPG"] = { + Outside = { + Layer = "Atmo_RPG.Outside", + Reflection = "Atmo_RPG.Outside", + }, + Inside = "Atmo_RPG.Outside", + }, +}]] --IM LEAVING THESE HERE FOR REFERENCE + +function SWEP:HandleReverb() + if (!IsValid(self:GetOwner()) || !IsFirstTimePredicted()) then + return + end + + if (self.Reverb == nil) then + return + end + + local layer = "" + local reflection = "" + + if self.Reverb.Sounds then + local outside = self.LastReverbState + + if (outside) then + layer = self.Reverb.Sounds.Outside.Layer + reflection = self.Reverb.Sounds.Outside.Reflection + else + layer = self.Reverb.Sounds.Inside.Layer != nil && self.Reverb.Sounds.Inside.Layer || self.Reverb.Sounds.Inside + reflection = self.Reverb.Sounds.Inside.Reflection != nil && self.Reverb.Sounds.Inside.Reflection || "" + end + + if layer != "" then + if (!game.SinglePlayer()) then + self:EmitSound(layer) + else + self:GetOwner():SendLua("LocalPlayer():EmitSound('"..layer.."')") + end + end + + if reflection != "" then + if (!game.SinglePlayer()) then + self:EmitSound(reflection) + else + self:GetOwner():SendLua("LocalPlayer():EmitSound('"..reflection.."')") + end + end + end +end + +function SWEP:CreateAndResumeReverbJob() + if (self.ReverbJob == nil) then + self.ReverbJob = coroutine.create(function() + while (true) do + self:mg_IsPlayerReverbOutside() + end + end) + end + + local success, yield = coroutine.resume(self.ReverbJob) + + if (yield != nil) then + self.LastReverbState = yield + end + --self.LastReverbState = true +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/reverb/mw_reverbimpl.lua b/lua/weapons/mg_base/modules/reverb/mw_reverbimpl.lua new file mode 100644 index 0000000..37d46db --- /dev/null +++ b/lua/weapons/mg_base/modules/reverb/mw_reverbimpl.lua @@ -0,0 +1,74 @@ +AddCSLuaFile() + +local REVERB_RESOLUTION = 0.25 --Default: 0.1. Less means more raycasts. +local REVERB_ROOMSIZE = 2048 +local REVERB_TINYROOMSIZE = 320 + +function SWEP:CheckRoomScale(dist) + return dist > (REVERB_ROOMSIZE * REVERB_ROOMSIZE); +end + +local reverbSize = Vector(4, 4, 4) + +function SWEP:mg_IsPlayerReverbOutside() + if (!IsValid(self:GetOwner()) || !IsFirstTimePredicted()) then + coroutine.yield(nil) + end + + coroutine.wait(0.1) + + local dist = 0 + local start = self:GetOwner():EyePos() + local len = math.pow(self.Reverb.RoomScale, 1/3) * 100 + local resolution = 1 + + for r = 0.5, 0.1, (REVERB_RESOLUTION / resolution) * -0.5 do + local hCos = math.sin(r * math.pi) + for i = -1, 1, (REVERB_RESOLUTION / resolution) do + local sin = math.sin(i * math.pi) * hCos + local cos = math.cos(i * math.pi) * hCos + + local dir = Vector(sin, cos, math.cos(r * math.pi)) + local tr = util.TraceHull({ + start = start, + endpos = start + dir * 32768, + mask = MASK_SHOT, + mins = -reverbSize, + maxs = reverbSize, + filter = self:GetOwner() + }) + + local distToHitPos = start:DistToSqr(tr.HitPos) + local acceptableCloseDistance = REVERB_TINYROOMSIZE * REVERB_TINYROOMSIZE + + if (tr.HitSky || self:CheckRoomScale(distToHitPos)) then + dist = dist + (REVERB_ROOMSIZE * REVERB_ROOMSIZE) * 0.3 + else + if (distToHitPos <= acceptableCloseDistance) then + dist = dist - (REVERB_ROOMSIZE * REVERB_ROOMSIZE) * 0.15 + else + dist = dist - (distToHitPos * 0.4) + end + end + + if (GetConVar("mgbase_debug_reverb"):GetInt() > 0) then + local color = distToHitPos <= acceptableCloseDistance && Color(0, 255, 0, 1) || Color(255, 150, 0, 1) + debugoverlay.Line(start, tr.HitPos, 1, color) + debugoverlay.Box(tr.HitPos, -reverbSize, reverbSize, 1, color) + debugoverlay.Text(tr.HitPos, math.Round(math.sqrt(distToHitPos)), 1) + end + + --If room scale is already big enough, no need to cast any more rays. + if self:CheckRoomScale(dist) then + break + end + end + coroutine.wait(0) + end + + if (GetConVar("mgbase_debug_reverb"):GetInt() > 0) then + debugoverlay.ScreenText(0, 0.1, "Room scale: "..math.Round(math.sqrt(dist)), 0, Color(255, 150, 0, 255)) + end + + coroutine.yield(self:CheckRoomScale(dist)) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_aim_behaviour.lua b/lua/weapons/mg_base/modules/shared/sh_aim_behaviour.lua new file mode 100644 index 0000000..ac1a676 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_aim_behaviour.lua @@ -0,0 +1,329 @@ +AddCSLuaFile() + +function SWEP:CanPlayAimDownAnim() + return !self:HasFlag("Reloading") + && !self:HasFlag("Drawing") + && !self:HasFlag("Holstering") + && !self:HasFlag("Sprinting") + && CurTime() > self:GetNextSprintTime() + && CurTime() > self:GetNextFiremodeTime() + && CurTime() > self:GetNextMeleeTime() + && CurTime() > self:GetNextPrimaryFire() + && !self:HasFlag("Customizing") +end + +function SWEP:CanPlayAimUpAnim() + return !self:HasFlag("Reloading") + && !self:HasFlag("Drawing") + && !self:HasFlag("Holstering") + && !self:HasFlag("Sprinting") + && CurTime() > self:GetNextSprintTime() + && CurTime() > self:GetNextFiremodeTime() + && CurTime() > self:GetNextMeleeTime() + && CurTime() > self:GetNextPrimaryFire() +end + +function SWEP:CanAim() + return --[[!self:HasFlag("Reloading") + &&!self:HasFlag("Drawing") + &&]] !self:HasFlag("Holstering") + && !self:HasFlag("Sprinting") + && !self:HasFlag("Customizing") + && !self:HasFlag("PlayFirstDraw") + --&& (!self:GetOwner():KeyDown(IN_USE) || (self:GetOwner():KeyDown(IN_USE) && self:GetAimDelta() > 0)) + && CurTime() > self:GetNextSprintTime() + && CurTime() > self:GetNextMeleeTime() + --&& !self:HasFlag("Customizing") + && !(self.CanDisableAimReload && self:HasFlag("Reloading")) + && !(self:IsOwnerMoving() && self:GetOwner():KeyDown(IN_SPEED)) + --&& !self:GetOwner():KeyDown(IN_USE) + --&& CurTime() > self:GetNextFiremodeTime() +end + +function SWEP:AimLogic() + if (CLIENT && game.SinglePlayer()) then + return + end + + if (self:GetOwner():GetInfoNum("mgbase_toggleaim", 0) >= 1) then + if (self:GetOwner():KeyPressed(IN_ATTACK2)) then + self:SetToggleAim(!self:GetToggleAim()) + end + else + self:SetToggleAim(self:GetOwner():KeyDown(IN_ATTACK2)) + end + + if (self:CanAim() && self:GetToggleAim()) then + self:RemoveFlag("Lowered") + self:SetNextInspectTime(0) + + if (!self:HasFlag("Aiming") && self:CanPlayAimUpAnim()) then + self:PlayViewModelAnimation("Ads_In") + end + + self:AddFlag("Aiming") + + local speed = 1 / self:GetAnimLength("Ads_In"); + self:SetAimDelta(math.min(self:GetAimDelta() + speed * FrameTime(), 1)) + else + if (self:HasFlag("Aiming") && self:CanPlayAimDownAnim()) then + self:PlayViewModelAnimation("Ads_Out") + end + + self:RemoveFlag("Aiming") + + local speed = 1 / self:GetAnimLength("Ads_Out"); + self:SetAimDelta(math.max(self:GetAimDelta() - speed * FrameTime(), 0)) + end + + --aim mode + if (self:GetAimMode() > 0) then + local len = self:GetAnimLength("Ads_In") * 0.5 + + if (self:GetSight() != nil && self:GetSight().ReticleHybrid != nil && self:GetSight().ReticleHybrid.OnAnimation != nil) then + len = self:GetAnimLength(self:GetSight().ReticleHybrid.OnAnimation) + end + + local speed = 1 / len; + self:SetAimModeDelta(math.min(self:GetAimModeDelta() + speed * FrameTime(), 1)) + else + local len = self:GetAnimLength("Ads_Out") * 0.5 + + if (self:GetSight() != nil && self:GetSight().ReticleHybrid != nil && self:GetSight().ReticleHybrid.OffAnimation != nil) then + len = self:GetAnimLength(self:GetSight().ReticleHybrid.OffAnimation) + end + + local speed = 1 / len; + self:SetAimModeDelta(math.max(self:GetAimModeDelta() - speed * FrameTime(), 0)) + end + + --breathe + self:BreathingModule() +end + +function SWEP:LauncherAimLogic() + if (CLIENT && game.SinglePlayer()) then + return + end + + if (self:GetOwner():GetInfoNum("mgbase_toggleaim", 0) >= 1) then + if (self:GetOwner():KeyPressed(IN_ATTACK2)) then + self:SetToggleAim(!self:GetToggleAim()) + end + else + self:SetToggleAim(self:GetOwner():KeyDown(IN_ATTACK2)) + end + + if (self:CanAim() && (self:GetToggleAim() || (self:GetOwner():KeyDown(IN_ATTACK) && !self:HasFlag("Reloading")))) then + self:RemoveFlag("Lowered") + self:SetNextInspectTime(0) + + if (!self:HasFlag("Aiming") && self:CanPlayAimUpAnim()) then + self:PlayViewModelAnimation("Ads_In") + end + + self:AddFlag("Aiming") + + local speed = 1 / self:GetAnimLength("Ads_In"); + self:SetAimDelta(math.min(self:GetAimDelta() + speed * FrameTime(), 1)) + else + if (self:HasFlag("Aiming") && self:CanPlayAimDownAnim()) then + self:PlayViewModelAnimation("Ads_Out") + end + + self:RemoveFlag("Aiming") + + local speed = 1 / self:GetAnimLength("Ads_Out"); + self:SetAimDelta(math.max(self:GetAimDelta() - speed * FrameTime(), 0)) + end + + --aim mode + if (self:GetAimMode() > 0) then + local len = self:GetAnimLength("Ads_In") * 0.5 + + if (self:GetSight() != nil && self:GetSight().ReticleHybrid != nil && self:GetSight().ReticleHybrid.OnAnimation != nil) then + len = self:GetAnimLength(self:GetSight().ReticleHybrid.OnAnimation) + end + + local speed = 1 / len; + self:SetAimModeDelta(math.min(self:GetAimModeDelta() + speed * FrameTime(), 1)) + else + local len = self:GetAnimLength("Ads_Out") * 0.5 + + if (self:GetSight() != nil && self:GetSight().ReticleHybrid != nil && self:GetSight().ReticleHybrid.OffAnimation != nil) then + len = self:GetAnimLength(self:GetSight().ReticleHybrid.OffAnimation) + end + + local speed = 1 / len; + self:SetAimModeDelta(math.max(self:GetAimModeDelta() - speed * FrameTime(), 0)) + end + + --breathe + self:BreathingModule() + self:TrackingModule() +end + +function SWEP:BreathingModule() + if (self:GetSight() != nil && self:GetSight().Optic != nil && self:GetAimModeDelta() <= self.m_hybridSwitchThreshold && GetConVar("mgbase_sv_breathing"):GetInt() > 0) then + local mul = 0.5 + + if (self:HasFlag("Aiming")) then + if (self:GetOwner():KeyDown(IN_SPEED) && !self:GetHasRunOutOfBreath()) then + mul = 0.1 + + self:SetBreathingDelta(math.max(self:GetBreathingDelta() - FrameTime() * 0.3, 0)) + + if (self:GetBreathingDelta() <= 0) then + self:SetHasRunOutOfBreath(true) + end + end + else + self:SetBreathingDelta(math.min(self:GetBreathingDelta() + FrameTime() * 0.2, 1)) + end + + if (self:GetHasRunOutOfBreath()) then + mul = 0.5 + (3 * (1 - self:GetBreathingDelta())) + + self:SetBreathingDelta(math.min(self:GetBreathingDelta() + FrameTime() * 0.2, 1)) + + if (self:GetBreathingDelta() >= 1) then + self:SetHasRunOutOfBreath(false) + end + end + + local pitch = math.sin(CurTime() * 3) * math.cos(CurTime() * 1.5) + local yaw = math.cos(CurTime() * 1.5) * math.sin(CurTime() * 0.75) + + local ang = Angle(pitch * 0.2, yaw * 0.2, 0) + ang:Mul(self:GetAimDelta() * mul) + + self:SetBreathingAngle(ang) + else + self:SetBreathingAngle(mw_math.ZeroAngle) + end +end + +local function GetAngleDifference(AngA, AngB) + + local difference = 0 + + difference = difference + math.AngleDifference(AngA.p, AngB.p) + difference = difference + math.AngleDifference(AngA.r, AngB.r) + difference = difference + math.AngleDifference(AngA.y, AngB.y) + + return difference + +end + +function SWEP:TrackingModule() + + if !self.TrackingInfo then return end + + local angleForgiveness = 2.5 + + local dir + if self.PingedEntity && self.PingedEntity:IsValid() then + dir = self.PingedEntity:WorldSpaceAABB() - self:GetOwner():WorldSpaceAABB() + dir = dir:Angle() + end + + + if self:GetAimDelta() <= 0.8 then + self:StopPingingEntity() + self:StopTrackingEntity() + else + + local tr = self:GetOwner():GetEyeTrace() + + if tr.HitWorld || !self:CanTrackEntity(tr.Entity) then + + if self.PingedEntity && self.PingedEntity:IsValid() then + local dir = self.PingedEntity:WorldSpaceAABB() - self:GetOwner():WorldSpaceAABB() + dir = dir:Angle() + if GetAngleDifference(self:GetOwner():EyeAngles(), dir) > angleForgiveness then + self:StopPingingEntity() + self:StopTrackingEntity() + end + end + + if self.TrackingInfo.TrackWorldPositions && !self.PingedEntity then + self.TrackedPosition = tr.HitPos + self.TrackedEntity = nil + end + + elseif tr.Entity || GetAngleDifference(self:GetOwner():EyeAngles(), dir) > angleForgiveness then + + if !self.PingData then + self:StartPingingEntity(tr.Entity) + else + + if !self.TrackedEntity then + + if CurTime() >= self.PingData.TrackTime then + self:StartTrackingEntity(tr.Entity) + else + for k, v in pairs(self.PingData.Pings) do + if !v.WasActivated && CurTime() >= v.Time then + self:EmitSound(self.TrackingInfo.PingSound) + v.WasActivated = true + end + end + end + + end + end + + else + self:StopTrackingEntity() + end + + end +end + +function SWEP:StartTrackingEntity(ent) + if !self:CanTrackEntity(ent) then return end + self.TrackedEntity = ent + self.TrackingSound = self:StartLoopingSound(self.TrackingInfo.Sound) --self.TrackingInfo.Sound +end + +function SWEP:StopTrackingEntity() + self.TrackedEntity = nil + if self.TrackingSound then + self:StopLoopingSound(self.TrackingSound) + end +end + +function SWEP:StartPingingEntity(ent) + if !self:CanTrackEntity(ent) then return end + self.PingedEntity = ent + self.PingData = { + TrackTime = CurTime() + self.TrackingInfo.PingTime * (self.TrackingInfo.PingCount + 1) - self.TrackingInfo.PingTime, + Pings = {} + } + + for i = 1, self.TrackingInfo.PingCount, 1 do + self.PingData.Pings[i] = { + Time = (CurTime() + self.TrackingInfo.PingTime * i) - self.TrackingInfo.PingTime, + WasActivated = false, + } + end +end + +function SWEP:StopPingingEntity() + self.PingedEntity = nil + self.PingData = nil +end + +function SWEP:CanTrackEntity(ent) + return ent:IsNPC() || ent:IsNextBot() || ent:IsVehicle() || ent:IsPlayer() +end + +function SWEP:AdjustMouseSensitivity() + local mul = Lerp(self:GetAimModeDelta(), self.Zoom.FovMultiplier, 0.9) + + --[[if (self:GetSight() != nil && self:GetSight().Optic != nil && self:GetAimMode() <= 0) then + mul = mul / (self:GetSight().Optic.FOV * 0.95) * GetConVar("mgbase_scopesens"):GetFloat() + end]] + + return Lerp(self:GetAimDelta(), 1, mul) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_aim_mode_behavior.lua b/lua/weapons/mg_base/modules/shared/sh_aim_mode_behavior.lua new file mode 100644 index 0000000..089107c --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_aim_mode_behavior.lua @@ -0,0 +1,40 @@ +require("mw_math") +AddCSLuaFile() + +function SWEP:CanChangeAimMode() + return ((self:GetSight() != nil && self:GetSight().ReticleHybrid != nil) || (self:GetLaser() != nil && self.LaserAimAngles != nil && self.LaserAimPos != nil)) + && !self:HasFlag("Reloading") + && CurTime() > self:GetNextPrimaryFire() + && self:HasFlag("Aiming") + && CurTime() > self:GetNextAimModeTime() +end + +function SWEP:ChangeAimMode() + if (!self:CanChangeAimMode()) then + return + end + + self:SetAimMode(self:GetAimMode() == 1 && 0 || 1) + + if (self:GetAimMode() == 0) then + --self:SetNextAimModeTime(CurTime() + 0.25) + + if (self:GetSight() != nil && self:GetSight().ReticleHybrid != nil && self:GetSight().ReticleHybrid.OnAnimation != nil) then + self:PlayViewModelAnimation(self:GetSight().ReticleHybrid.OnAnimation) + self:SetNextPrimaryFire(CurTime() + self:GetAnimLength(self:GetSight().ReticleHybrid.OnAnimation)) + self:SetNextAimModeTime(CurTime() + self:GetAnimLength(self:GetSight().ReticleHybrid.OnAnimation)) + end + + self:EmitSound("Canted.Off") + else + --self:SetNextAimModeTime(CurTime() + 0.25) + + if (self:GetSight() != nil && self:GetSight().ReticleHybrid != nil && self:GetSight().ReticleHybrid.OffAnimation != nil) then + self:PlayViewModelAnimation(self:GetSight().ReticleHybrid.OffAnimation) + self:SetNextPrimaryFire(CurTime() + self:GetAnimLength(self:GetSight().ReticleHybrid.OffAnimation)) + self:SetNextAimModeTime(CurTime() + self:GetAnimLength(self:GetSight().ReticleHybrid.OffAnimation)) + end + + self:EmitSound("Canted.On") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_bipod_behavior.lua b/lua/weapons/mg_base/modules/shared/sh_bipod_behavior.lua new file mode 100644 index 0000000..d9df1dd --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_bipod_behavior.lua @@ -0,0 +1,69 @@ +AddCSLuaFile() + +function SWEP:CanDeployBipod() + return !self:HasFlag("Lowered") + && !self:HasFlag("Drawing") + && !self:HasFlag("Holstering") + && !self:HasFlag("Customizing") + && CurTime() >= self:GetNextMeleeTime() + && (!self:HasFlag("Reloading") || self:HasFlag("Aiming")) + && CurTime() >= self:GetNextInspectTime() +end + +function SWEP:BipodLogic() + if (CLIENT && game.SinglePlayer()) then + return + end + + if (self:GetBipod() == nil || !self:CanDeployBipod()) then + if (self:HasFlag("BipodDeployed")) then + self:EmitSound("ViewModel.BipodExit") + end + + self:RemoveFlag("BipodDeployed") + return + end + + local bDeployed = false + + if (!self:IsOwnerMoving() && self:GetOwner():IsOnGround()) then + local pos = self:GetOwner():EyePos() + Angle(0, self:GetOwner():EyeAngles().y, 0):Forward() * 16 + + if (!self:GetOwner():Crouching()) then + local tr = util.TraceHull({ + start = pos, + endpos = pos - Vector(0, 0, 32), + mins = Vector(-16, -16, 0), + maxs = Vector(16, 16, 2), + filter = player.GetAll(), + mask = MASK_PLAYERSOLID + }) + + bDeployed = tr.Hit && !tr.StartSolid + else + bDeployed = true + end + end + + if (self:HasFlag("BipodDeployed") != bDeployed) then + if (bDeployed) then + self:EmitSound("ViewModel.BipodDeploy") + + if (!self:HasFlag("Aiming")) then + self:PlayViewModelAnimation(self.Animations.Bipod_Deploy != nil && "Bipod_Deploy" || "Jog_Out") + end + else + self:EmitSound("ViewModel.BipodExit") + + if (!self:HasFlag("Aiming")) then + self:PlayViewModelAnimation(self.Animations.Bipod_Leave != nil && "Bipod_Leave" || "Jump") + end + end + end + + if (bDeployed) then + self:AddFlag("BipodDeployed") + else + self:RemoveFlag("BipodDeployed") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_button_dispatcher.lua b/lua/weapons/mg_base/modules/shared/sh_button_dispatcher.lua new file mode 100644 index 0000000..7f4659c --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_button_dispatcher.lua @@ -0,0 +1,23 @@ +AddCSLuaFile() + +local buttonFunctions = { + ["mgbase_binds_melee"] = function(weapon) weapon:Melee() end, + ["mgbase_binds_firemode"] = function(weapon) weapon:ChangeFiremode() end, + ["mgbase_binds_safety"] = function(weapon) weapon:ChangeSafety() end, + ["mgbase_binds_inspect"] = function(weapon) weapon:Inspect() end, + ["mgbase_binds_customize"] = function(weapon) weapon:Customize(!weapon:HasFlag("Customizing")) end, + ["mgbase_binds_switchsights"] = function(weapon) weapon:ChangeAimMode() end, + ["mgbase_binds_holster"] = function(weapon) if (weapon:HasFlag("Holstering") && weapon:GetNextWeapon() != weapon:GetOwner()) then weapon:Deploy() else weapon:Holster() end end +} + +function SWEP:HandleButton(btn) + if (btn == 0) then + return + end + + for convar, func in pairs(buttonFunctions) do + if (self:GetOwner():GetInfoNum(convar, -1) == btn) then + func(self) + end + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_customization.lua b/lua/weapons/mg_base/modules/shared/sh_customization.lua new file mode 100644 index 0000000..6ef9ed2 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_customization.lua @@ -0,0 +1,897 @@ +AddCSLuaFile() +require("mw_utils") + +function SWEP:StopCustomizing() + if (self:HasFlag("Customizing")) then + self:Customize(false) + end +end + +function SWEP:GetCustomizationCount() + if (!self.Customization) then + return 0 + end + + return #self.Customization +end + +function SWEP:GetAttachmentCount(slot) + if (!self.Customization) then + return 0 + end + + return #self.Customization[slot] +end + +function SWEP:CanCustomize() + if (self:CanPump() && !self:HasFlag("Rechambered")) then + return false + end + + return !self:HasFlag("Reloading") + && !self:HasFlag("Drawing") + && !self:HasFlag("Holstering") + && CurTime() > self:GetNextPrimaryFire() + --&& self:Clip1() > 0 + && self.Customization != nil + && self:GetAimDelta() <= 0 + && !self:HasFlag("Sprinting") + && GetConVar("mgbase_sv_customization"):GetBool() +end + +function SWEP:CanPlayInspectAfterCustomization() --people lagging could still be playing draws + return !self:HasFlag("Drawing") +end + +function SWEP:Customize(state) + state = tobool(state) + + if (state == true && !self:CanCustomize()) then + return + end + + if (state) then + self:AddFlag("Customizing") + self:RemoveFlag("StoppedInspectAnimation") + else + self:RemoveFlag("Customizing") + end + + if (state) then + self:AddFlag("Customizing") + self:SetNextInspectTime(0) + else + self:RemoveFlag("Customizing") + end + + self:RemoveFlag("Lowered") + + if (CLIENT) then + self:CustomizationMenu() + end + + if (self:HasFlag("Customizing") && self:CanPlayInspectAfterCustomization()) then + local inspIndex = (self:Clip1() <= 0 && self:GetAnimation("Inspect_Empty") != nil) && "Inspect_Empty" || "Inspect" + self:PlayViewModelAnimation(inspIndex) + end + + if (game.SinglePlayer() && SERVER) then + self:CallOnClient("Customize", tostring(state)) + end +end + +function SWEP:Attach(slot, attIndex) + if (self.Customization[slot] == nil) then + return + end + + local attachmentClass = self.Customization[slot][attIndex] + + self:CreateAttachmentForUse(attachmentClass) + + --BUILD: + self:BuildCustomizedGun() + + --reset inspect animation + if (CLIENT) then + self:GetViewModel():UpdateAnimation() + end +end + +function SWEP:IsBodygroupAllowed(bgName) + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + if (att.BlockedBodygroups != nil && table.HasValue(att.BlockedBodygroups, bgName)) then + return false + end + end + + return true +end + +local function doAttBodygroups(wep, model) + for i = 0, model:GetNumBodyGroups(), 1 do + model:SetBodygroup(i, 0) + end + + for slot, att in pairs(wep:GetAllAttachmentsInUse()) do + if (att.AttachmentBodygroups != nil) then + for bodyGroupName, value in pairs(att.AttachmentBodygroups) do + if (!wep:IsBodygroupAllowed(bodyGroupName)) then + continue + end + local id = model:FindBodygroupByName(bodyGroupName) + if (id != -1) then + model:SetBodygroup(id, value) + end + end + end + end +end + +local function doMaterialOverride(att, model, funcName) + for i, mat in pairs(model:GetMaterials()) do + local originalPath, originalName = string.GetPathFromFilename(mat), string.GetFileFromFilename(mat) + local path, name = att[funcName](att, originalPath, originalName) + if (path != originalPath || name != originalName) then + local material = Material(path..name) + if (!material:IsError()) then + model:SetSubMaterial(i - 1, path..name) + model.CustomizationAnimationDelta = 1 + model.CustomizationAnimationColor = att.UIColor || Color(255, 255, 255, 255) + end + end + end +end + +function SWEP:CreateAttachmentModel(attachment) + if (SERVER) then + return + end + + doMaterialOverride(attachment, self:GetViewModel(), "OverrideWeaponMaterial") + doMaterialOverride(attachment, self, "OverrideWeaponMaterial") + + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + if (att == attachment) then + continue + end + + if (IsValid(att.m_Model)) then + doMaterialOverride(attachment, att.m_Model, "OverrideAttachmentsMaterial") + end + + if (IsValid(att.m_TpModel)) then + doMaterialOverride(attachment, att.m_TpModel, "OverrideAttachmentsMaterial") + end + end + + if (attachment.Model == nil) then + return + end + + if (!IsValid(attachment.m_Model)) then + attachment.m_Model = ClientsideModel(attachment.Model, RENDERGROUP_VIEWMODEL) + attachment.m_Model:SetRenderMode(RENDERMODE_ENVIROMENTAL) + attachment.m_Model:SetMoveType(MOVETYPE_NONE) + attachment.m_Model:SetSolid(SOLID_NONE) + attachment.m_Model:SetNotSolid(true) + attachment.m_Model:SetOwner(self:GetViewModel()) + attachment.m_Model.bAttachmentRenderOverride = attachment.RenderOverride + attachment.m_Model:AddEffects(EF_PARENT_ANIMATES) + mw_utils.DealWithFullUpdate(attachment.m_Model) + + if (attachment.VElement == nil) then + attachment.m_Model:AddEffects(EF_BONEMERGE) + attachment.m_Model:AddEffects(EF_BONEMERGE_FASTCULL) + attachment.m_Model:SetParent(self:GetViewModel()) + else + attachment.m_Model:FollowBone(self:GetViewModel(), mw_utils.LookupBoneCached(self:GetViewModel(), attachment.VElement.Bone)) + end + + attachment.m_Model.CustomizationAnimationDelta = 0 + attachment.m_Model.CustomizationAnimationColor = Color(255, 255, 255, 255) + + --this is for the highlight effect on the attachments + if (attachment.Index > 1) then + attachment.m_Model.CustomizationAnimationDelta = 1 + attachment.m_Model.CustomizationAnimationColor = attachment.UIColor || attachment.m_Model.CustomizationAnimationColor + end + end + + if (attachment.VElement != nil) then + self:MoveVElement(self:GetViewModel(), attachment) + end + + if (!IsValid(attachment.m_TpModel)) then + attachment.m_TpModel = ClientsideModel(attachment.Model, self.RenderGroup) + attachment.m_TpModel:SetRenderMode(self.RenderMode) + attachment.m_TpModel:SetMoveType(MOVETYPE_NONE) + attachment.m_TpModel:SetSolid(SOLID_NONE) + attachment.m_TpModel:SetNotSolid(true) + attachment.m_TpModel:SetOwner(self) + attachment.m_TpModel:SetNoDraw(true) --perf + attachment.m_TpModel.ShowOnWorldModel = attachment.ShowOnWorldModel + attachment.m_TpModel:AddEffects(EF_PARENT_ANIMATES) + mw_utils.DealWithFullUpdate(attachment.m_TpModel) + + if (attachment.VElement == nil) then + attachment.m_TpModel:AddEffects(EF_BONEMERGE) + attachment.m_TpModel:AddEffects(EF_BONEMERGE_FASTCULL) + attachment.m_TpModel:SetParent(self) + else + attachment.m_TpModel:FollowBone(self, mw_utils.LookupBoneCached(self, attachment.VElement.Bone)) + end + + attachment:PostInitModels(self) + end + + if (attachment.VElement != nil) then + self:MoveVElement(self, attachment) + end + + doAttBodygroups(self, attachment.m_Model) + doAttBodygroups(self, attachment.m_TpModel) + doMaterialOverride(attachment, attachment.m_Model, "OverrideMaterial") + doMaterialOverride(attachment, attachment.m_TpModel, "OverrideMaterial") +end + +function SWEP:ShouldInvalidateBoneCache() + for _, att in pairs(self:GetAllAttachmentsInUse()) do + if (!IsValid(att.m_Model) || !att.m_Model:IsEffectActive(EF_FOLLOWBONE)) then + continue + end + + if (att.m_Model:GetAttachments() != nil) then + return true + end + end + + return false +end + +function SWEP:GetAttachmentInUseForSlot(slot) + return self.m_CustomizationInUse[slot] +end + +function SWEP:GetAttachmentInUseByCategory(cat) + for _, att in pairs(self:GetAllAttachmentsInUse()) do + if (att.Category == cat) then + return att + end + end + + return nil +end + +function SWEP:GetAllAttachmentsInUse() + return self.m_CustomizationInUse +end + +function SWEP:BuildCustomizedGun() + --this resets gun to defaults, but keeps the internal variables + self:DeepObjectCopy(weapons.Get(self:GetClass()), self) + + local oldSkin = IsValid(self:GetViewModel()) && self:GetViewModel():GetSkin() || 0 + self:ResetBodygroups() + + self:SetBurstRounds(0) + + self.reticle = nil + self.flashlight = nil + self.laser = nil + self.bipod = nil + + if (self.Customization == nil) then + return + end + + clearBaseClass(self.Customization) + clearBaseClass(self.Animations) + + local vmspeed = 1 + + if (IsValid(self:GetViewModel())) then + vmspeed = self:GetViewModel():GetPlaybackRate() + self:GetViewModel():SetPlaybackRate(0) + self:GetViewModel():SetModel(self.VModel) + end + + self:SetModel(self.WorldModel) + + if (CLIENT) then + if (IsValid(self:GetViewModel())) then + self:GetViewModel():SetSubMaterial() + self:GetViewModel().m_LeftHandGripPoseParameter = nil + self:GetViewModel().m_RightHandGripPoseParameter = nil + end + + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + if (att.Model != nil) then + if (IsValid(att.m_TpModel)) then + att.m_TpModel:SetSubMaterial() + end + + if (IsValid(att.m_Model)) then + att.m_Model:SetSubMaterial() + end + end + end + self:SetSubMaterial() + end + + --check if atts are allowed + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + if (att == nil || !self:IsAttachmentAllowed(att)) then + self:CreateAttachmentForUse(self.Customization[slot][1]) + end + end + + --this is needed for level transitions + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + table.Inherit(att, self:GetStoredAttachment(att.ClassName)) + end + + self:PreAttachments() + + local stats = {} + self:DeepObjectCopy(self:GetTable(), stats) + + stats.SetViewModel = function(self, vm) + mw_utils.ErrorPrint("SetViewModel: Don't call this in Stats!") + end + + local c = 0 + + for slot, attachment in pairs(self:GetAllAttachmentsInUse()) do + if (attachment.Flashlight != nil) then + self.flashlight = attachment + end + + if (attachment.Laser != nil) then + self.laser = attachment + end + + if (attachment.Reticle != nil) then + self.reticle = attachment + end + + if (attachment.Bipod) then + self.bipod = attachment + end + + attachment:Stats(stats) + + if (attachment.Index > 1) then + self:MakeBreadcrumbsForAttachment(attachment) + end + end + + --check if customization changed + local bChanged = false + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + if (stats.Customization[slot] == nil) then + mw_utils.DevPrint("BuildCustomizedGun: Slot "..slot.." got removed!") + self:RemoveAttachment(att) + bChanged = true + continue + end + + if (att.ClassName != stats.Customization[slot][att.Index]) then + local classToChangeTo = stats.Customization[slot][att.Index] != nil && stats.Customization[slot][att.Index] || stats.Customization[slot][1] + + mw_utils.DevPrint("BuildCustomizedGun: "..att.ClassName.." changed to "..classToChangeTo) + local newAtt = self:CreateAttachmentForUse(classToChangeTo, stats.Customization) + + if (CLIENT) then + if (newAtt.Base == att.ClassName || att.Base == newAtt.ClassName) then + if (mw_utils.IsAssetFavorite(self:GetClass(), att.ClassName)) then + mw_utils.FavoriteAsset(self:GetClass(), newAtt.ClassName) + else + mw_utils.UnfavoriteAsset(self:GetClass(), newAtt.ClassName) + end + end + end + + bChanged = true + end + end + + if (bChanged) then + mw_utils.DevPrint("BuildCustomizedGun: Customization changed! Redoing...") + self:BuildCustomizedGun() + return + end + + clearBaseClass(stats) + self:DeepObjectCopy(stats, self) + + local oldVm = self.SetViewModel + self.SetViewModel = function(self, vm) + self.VModel = vm + end + + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + local oldModel = self.VModel + att:PostProcess(self) + + if (self.VModel != oldModel && IsValid(self:GetViewModel())) then + self:GetViewModel().CustomizationAnimationColor = att.UIColor || Color(255, 255, 255, 255) + self:GetViewModel().CustomizationAnimationDelta = 1 + end + end + + self.SetViewModel = oldVm + + if (IsValid(self:GetViewModel())) then + self:GetViewModel():SetModel(self.VModel) + end + + self:SetModel(self.WorldModel) + + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + self:PostAttachment(att) --letting all atts do their thing and then run ours + end + + --check magazine: + if (IsValid(self:GetOwner())) then + local maxClip = self:GetMaxClip1WithChamber() + + if (!self:HasFlag("PlayFirstDraw")) then + if (self:Clip1() > maxClip) then + local diff = self:Clip1() - maxClip + self:SetClip1(self:Clip1() - diff) + self:GetOwner():SetAmmo(self:GetOwner():GetAmmoCount(self:GetPrimaryAmmoType()) + diff, self:GetPrimaryAmmoType()) + end + else + self:SetClip1(maxClip) + end + end + + --check if we can keep aim mode + if (!self:CanChangeAimMode()) then + self:SetAimMode(0) + end + + --create models: + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + self:CreateAttachmentModel(att) + end + + --bodygroups: + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + if (att.Bodygroups != nil) then + for bg, v in pairs(att.Bodygroups) do + if (!self:IsBodygroupAllowed(bg)) then + continue + end + self:DoBodygroup(bg, v) + end + end + end + + self:SetBonemergeParents() + self:GenerateAimOffset() + + if (CLIENT) then + local curSkin = IsValid(self:GetViewModel()) && self:GetViewModel():GetSkin() || 0 + local skinCount = IsValid(self:GetViewModel()) && self:GetViewModel():SkinCount() || 0 + + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + att:Appearance(self:GetViewModel(), "Weapon") + if (curSkin != oldSkin && curSkin > 0 && curSkin <= skinCount) then + self:GetViewModel().CustomizationAnimationColor = att.UIColor || Color(255, 255, 255, 255) + self:GetViewModel().CustomizationAnimationDelta = 1 + end + + att:Appearance(self, "Weapon") + + for _, att2 in pairs(self:GetAllAttachmentsInUse()) do + if (att2.Model != nil) then + att:Appearance(att2.m_Model, att2.Category) + + if (att2.m_Model:GetSkin() != oldSkin && att2.m_Model:GetSkin() > 0 && att2.m_Model:GetSkin() <= att2.m_Model:SkinCount()) then + att2.m_Model.CustomizationAnimationColor = att.UIColor || Color(255, 255, 255, 255) + att2.m_Model.CustomizationAnimationDelta = 1 + end + + att:Appearance(att2.m_TpModel, att2.Category) + end + end + end + end + + --meme marine + self:SetHoldType("camera") + timer.Simple(0, function() + if !IsValid(self) then return end + self:SetShouldHoldType(true) + end) + + --apply firemode first while resetting defaults: + self:ApplyFiremodeStats() + + --shadowdark was here + --this hook passes the swep object after stats are built, allowing for custom 3rd party stat scaling + hook.Call("OnBuildCustomizedGun", nil, self) + + if (IsValid(self:GetViewModel())) then + self:GetViewModel():SetPlaybackRate(vmspeed) + end +end + +--old way was just overcomplicated for no reason +function SWEP:MakeBreadcrumbsForAttachment(attachment) + if (attachment.Breadcrumbs == nil) then + --make breadcrumbs + --make another copy of swep + local breadcrumbs = {} + self:DeepObjectCopy(weapons.Get(self:GetClass()), breadcrumbs) + attachment:Stats(breadcrumbs) --run stats (lol he doesnt know its actually not a gun!!) + + --make bcs + local holder = {} + self:MakeBreadcrumbs(holder, weapons.Get(self:GetClass()), breadcrumbs) --looks at differences in numbers only + + attachment.Breadcrumbs = {} + + for statInfo, crumb in pairs(holder) do + crumb.statInfo = statInfo + table.insert(attachment.Breadcrumbs, crumb) + end + + local sort = function(a, b) + local aStat = self.StatInfo[a.statInfo] + local bStat = self.StatInfo[b.statInfo] + + local baPositive = a.Current <= a.Original + + if (aStat.ProIfMore) then + baPositive = !baPositive + end + + local bbPositive = b.Current <= b.Original + + if (bStat.ProIfMore) then + bbPositive = !bbPositive + end + + if (baPositive && !bbPositive) then + return true + elseif (!baPositive && bbPositive) then + return false + elseif ((baPositive && bbPositive) || (!baPositive && !bbPositive)) then + local aName = aStat.Name + local bName = bStat.Name + + return aName < bName + end + end + table.sort(attachment.Breadcrumbs, sort) + end +end + +function SWEP:MakeBreadcrumbs(holder, original, changed, currentPath) + currentPath = currentPath || "SWEP" + + for k, v in pairs(original) do + if (tostring(k) == "BaseClass" || tostring(k) == "m_Index") then + continue + end + + if (isnumber(v)) then + if (changed[k] != v) then + local path = currentPath.."."..tostring(k) + if (self.StatDefinitions[path] == nil) then + continue + end + + holder[self.StatDefinitions[path]] = holder[self.StatDefinitions[path]] || {} + table.Merge(holder[self.StatDefinitions[path]], {Original = v, Current = changed[k]}) + end + elseif (istable(v) && changed[k] != nil) then + self:MakeBreadcrumbs(holder, v, changed[k], currentPath.."."..tostring(k)) + end + end +end + +function SWEP:SetBonemergeParents() + if (SERVER) then + return + end + + for slot, attachment in pairs(self:GetAllAttachmentsInUse()) do + if (attachment.Model == nil) then + continue + end + + if (attachment.VElement == nil) then + for slot, attParent in pairs(self:GetAllAttachmentsInUse()) do + if (attParent.Model == nil) then + continue + end + + if (attParent == attachment) then + continue + end + + if (attachment.BonemergeToCategory != nil && table.HasValue(attachment.BonemergeToCategory, attParent.Category)) then + attachment.m_Model:SetParent(attParent.m_Model) + attachment.m_TpModel:SetParent(attParent.m_TpModel) + + attachment.m_Model:SetupBones() + attParent.m_Model:SetupBones() + + if (!mw_utils.CheckMatchingBones(attachment.m_Model, attParent.m_Model)) then + attachment.m_Model:SetParent(self:GetViewModel()) + attachment.m_TpModel:SetParent(self) + else + break + end + end + + if (attachment.BonemergeToAttachment != nil && table.HasValue(attachment.BonemergeToAttachment, attParent.ClassName)) then + if (mw_utils.CheckMatchingBones(attachment.m_Model, attParent.m_Model)) then + attachment.m_Model:SetParent(attParent.m_Model) + attachment.m_TpModel:SetParent(attParent.m_TpModel) + break + end + end + end + end + end +end + +function SWEP:GenerateAimOffset() + if (SERVER) then + return + end + + for _, attachment in pairs(self:GetAllAttachmentsInUse()) do + if (attachment.Model == nil) then + continue + end + + if (attachment.Reticle != nil) then + self:GetViewModel():SetPoseParameter("hybrid_offset", 0) + self:GetViewModel():InvalidateBoneCache() + self:GetViewModel():SetupBones() + + local alignAttachmentId = mw_utils.LookupAttachmentCached(self:GetViewModel(), self.ViewModelOffsets.Aim.AlignAttachment || "align") + + if (alignAttachmentId != nil) then + attachment.m_Model:InvalidateBoneCache() + attachment.m_Model:SetupBones() --shaky otherwise + attachment.m_Model:GetParent():InvalidateBoneCache() + attachment.m_Model:GetParent():SetupBones() + + local data = self:GetViewModel():GetAttachment(alignAttachmentId) + local reticleData = attachment.m_Model:GetAttachment(attachment.m_Model:LookupAttachment(attachment.Reticle.Attachment)) + + local localPos, localAng = WorldToLocal(data.Pos, data.Ang, reticleData.Pos, reticleData.Ang) + attachment.AimPos = Vector(-localPos.y, localPos.x + 4, localPos.z) --converted from stupid cod forward + attachment.AimAng = Angle(localAng.p, localAng.y, -localAng.r) --shouldnt need to change aim angles + + if (attachment.ReticleHybrid != nil) then + local reticle2Data = attachment.m_Model:GetAttachment(attachment.m_Model:LookupAttachment(attachment.ReticleHybrid.Attachment)) + + localPos, localAng = WorldToLocal(reticle2Data.Pos, reticle2Data.Ang, reticleData.Pos, reticleData.Ang) + attachment.HybridAimPos = attachment.AimPos + Vector(localPos.y, -localPos.x, -localPos.z) + attachment.HybridAimAng = attachment.AimAng + Angle(localAng.p, localAng.y, -localAng.r) + end + end + end + end +end + +function SWEP:MoveVElement(model, attachment) + local attModel = model == self:GetViewModel() && attachment.m_Model || attachment.m_TpModel + local ve = attachment.VElement + local bone = mw_utils.LookupBoneCached(model, ve.Bone) + local oPos, oAng = self:GetTotalAttachmentOffset(attachment) + + local ang = Angle() + ang:RotateAroundAxis(ang:Forward(), ve.Angles.r + oAng.r) + ang:RotateAroundAxis(ang:Right(), ve.Angles.y + oAng.y) + ang:RotateAroundAxis(ang:Up(), ve.Angles.p + oAng.p) + + local pos = Vector() + mw_math.VectorAddAndMul(pos, ang:Forward(), ve.Position.y + oPos.y) + mw_math.VectorAddAndMul(pos, ang:Right(), ve.Position.x + oPos.x) + mw_math.VectorAddAndMul(pos, ang:Up(), ve.Position.z + oPos.z) + + attModel:SetLocalPos(pos) + attModel:SetLocalAngles(ang) +end + +function SWEP:GetTotalAttachmentOffset(currentAttachment) + local pos = Vector() + local ang = Angle() + + local offsets = currentAttachment.VElement.Offsets + + if offsets != nil then + for slot, attachment in pairs(self:GetAllAttachmentsInUse()) do + if (offsets[attachment.ClassName] != nil) then + pos:Add(offsets[attachment.ClassName][1]) + ang:Add(offsets[attachment.ClassName][2]) + end + end + end + + return pos, ang +end + +function SWEP:DoBodygroup(name, value) + local ind = self:GetViewModel():FindBodygroupByName(name) + + if (ind != -1) then + self:GetViewModel():SetBodygroup(ind, value) + end + + ind = self:FindBodygroupByName(name) + + if (ind != -1) then + self:SetBodygroup(ind, value) + end +end + +function SWEP:ResetBodygroups() + if (IsValid(self:GetViewModel())) then + self:GetViewModel():SetSkin(0) + + for b = 0, self:GetViewModel():GetNumBodyGroups() do + self:GetViewModel():SetBodygroup(b, 0) + end + end + + if (IsValid(self)) then + self:SetSkin(0) + + for b = 0, self:GetNumBodyGroups() do + self:SetBodygroup(b, 0) + end + end +end + +function SWEP:GetAttachmentModels(slot) + return self.m_CustomizationInUse[slot].m_Model, self.m_CustomizationInUse[slot].m_TpModel +end + +function SWEP:GetSight() + return self.reticle +end + +function SWEP:GetLaser() + return self.laser +end + +function SWEP:GetFlashlightAttachment() + return self.flashlight +end + +function SWEP:GetBipod() + return self.bipod +end + +hook.Add("PlayerSwitchFlashlight", "MW19_PlayerSwitchFlashlight", function(ply, enabled) + local w = ply:GetActiveWeapon() + if (ply:CanUseFlashlight() && !ply:FlashlightIsOn() && IsValid(w) && weapons.IsBasedOn(w:GetClass(), "mg_base")) then + if (w:GetFlashlightAttachment() != nil) then + ply:EmitSound("MW.Flashlight") + w:ToggleFlag("FlashlightOn") + return false + end + end +end) + +function SWEP:HasAttachment(class) + if (self.Customization == nil) then + return false + end + + if (self.m_CustomizationInUse == nil) then + return false + end + + for slot, att in pairs(self:GetAllAttachmentsInUse()) do + if (att.ClassName == class) then + return true + end + end + + return false +end + +function SWEP:GetBlockerAttachment(attachment) + for slot, attachmentInUseInSlot in pairs(self:GetAllAttachmentsInUse()) do + --by class name (very specific) + if (attachmentInUseInSlot.ExcludedAttachments != nil) then + if (table.HasValue(attachmentInUseInSlot.ExcludedAttachments, attachment.ClassName)) then + return attachmentInUseInSlot + end + end + + --by category name (broad for more attachments) + if (attachmentInUseInSlot.ExcludedCategories != nil) then + if (table.HasValue(attachmentInUseInSlot.ExcludedCategories, attachment.Category)) then + return attachmentInUseInSlot + end + end + + if (attachment.ExcludedByAttachments != nil && table.HasValue(attachment.ExcludedByAttachments, attachmentInUseInSlot.ClassName)) then + return attachmentInUseInSlot + end + + if (attachment.ExcludedByCategories != nil && table.HasValue(attachment.ExcludedByCategories, attachmentInUseInSlot.Category) && attachmentInUseInSlot.Index > 1) then + return attachmentInUseInSlot + end + end + + return nil +end + +function SWEP:IsAttachmentAllowed(attachment) + if (attachment.Index == nil || attachment.Index > 1) then + if (!attachment.CosmeticChange) then + local attLimit = GetConVar("mgbase_sv_customization_limit"):GetInt() + local currentCount = 0 + + for slot, attachmentInUseInSlot in pairs(self:GetAllAttachmentsInUse()) do + if (attachment != attachmentInUseInSlot && attachmentInUseInSlot.Index > 1 && !attachmentInUseInSlot.CosmeticChange) then + currentCount = currentCount + 1 + end + end + + if (attLimit > 0 && currentCount >= attLimit) then + return false + end + end + + if (hook.Run("MW19_AllowAttachment", self, attachment) == false) then + return false + end + + if (self:GetBlockerAttachment(attachment) != nil) then + return false + end + end + + return true +end + +function SWEP:SetGripPoseParameter(value) + if (CLIENT) then + if (self.GripPoseParameters == nil) then + mw_utils.ErrorPrint("SetGripPoseParameter: No left hand grip pose parameters have been defined!") + return + end + + if (!table.HasValue(self.GripPoseParameters, value)) then + mw_utils.ErrorPrint("SetGripPoseParameter: Left hand grip pose parameter " ..value.. " was not defined in GripPoseParameters!") + return + end + + self:GetViewModel().m_LeftHandGripPoseParameter = value + end +end + +function SWEP:SetGripPoseParameter2(value) + if (CLIENT) then + if (self.GripPoseParameters2 == nil) then + mw_utils.ErrorPrint("SetGripPoseParameter2: No right hand grip pose parameters have been defined!") + return + end + + if (!table.HasValue(self.GripPoseParameters2, value)) then + mw_utils.ErrorPrint("SetGripPoseParameter2: Right hand grip pose parameter " ..value.. " was not defined in GripPoseParameters2!") + return + end + + self:GetViewModel().m_RightHandGripPoseParameter = value + end +end + +function SWEP:SetWorldModel(path) + self:SetModel(path) + self.WorldModel = path +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_datatables.lua b/lua/weapons/mg_base/modules/shared/sh_datatables.lua new file mode 100644 index 0000000..f4a0c28 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_datatables.lua @@ -0,0 +1,130 @@ +AddCSLuaFile() +require("mw_utils") + +--name, int +SWEP.NetworkedFlags = {} +SWEP.NetworkedFlagIndices = {} + +local function getFlagIndex(networkedFlag) + return math.floor(networkedFlag / 31) +end + +local function getFlagValue(networkedFlag) + return 2 ^ (networkedFlag % 31) +end + +--flag networking. using string literals as it's easier to add flags for custom functionality +--and lua takes care of them for us anyways +local function networkFlag(weapon, name) + local highestFlagValue = table.Count(weapon.NetworkedFlags) + local currentFlagIndex = getFlagIndex(highestFlagValue) + + --have to do 31 because it's signed int + if (highestFlagValue % 31 == 0) then + weapon:CustomNetworkVar("Int", "Flags"..currentFlagIndex) + weapon.NetworkedFlagIndices[currentFlagIndex] = "Flags"..currentFlagIndex + mw_utils.DevPrint("networkFlag: Registered new set of flags (Flags"..currentFlagIndex..").") + end + + weapon.NetworkedFlags[name] = highestFlagValue +end + +SWEP.VarCount = {} + +function SWEP:CustomNetworkVar(typ, name) + if (typ == "Flag") then + networkFlag(self, name) + return + end + + local count = self.VarCount[typ] || -1 + count = count + 1 + + self:NetworkVar(typ, count, name) + + self.VarCount[typ] = count +end + +--i've decided to not check if a flag name exists. if you're looking for a flag +--that doesn't exist i'd prefer if you checked your code when it errors +function SWEP:HasFlag(name) + local networkedFlag = self.NetworkedFlags[name] + local flagIndex, flagValue = getFlagIndex(networkedFlag), getFlagValue(networkedFlag) + return bit.band(self.dt[self.NetworkedFlagIndices[flagIndex]], flagValue) == flagValue +end + +function SWEP:AddFlag(name) + local networkedFlag = self.NetworkedFlags[name] + local flagIndex, flagValue = getFlagIndex(networkedFlag), getFlagValue(networkedFlag) + local flagDt = self.NetworkedFlagIndices[flagIndex] + self.dt[flagDt] = bit.bor(self.dt[flagDt], flagValue) +end + +function SWEP:RemoveFlag(name) + local networkedFlag = self.NetworkedFlags[name] + local flagIndex, flagValue = getFlagIndex(networkedFlag), getFlagValue(networkedFlag) + local flagDt = self.NetworkedFlagIndices[flagIndex] + self.dt[flagDt] = bit.band(self.dt[flagDt], bit.bnot(flagValue)) +end + +function SWEP:ToggleFlag(name) + if (self:HasFlag(name)) then + self:RemoveFlag(name) + else + self:AddFlag(name) + end +end + +--TODO: reconsider a lot of these vars, some probably dont need to be +function SWEP:SetupDataTables() + --idea: most of the gun's actions can be simplified with one timer. this game does not allow for overlayed animations, + --we can't have more than one action playing on the gun at the same time. + --get rid of all these "time" dtvars, just use one + self:CustomNetworkVar("Float", "NextActionTime") + + self:CustomNetworkVar("Float", "NextReloadTime") + self:CustomNetworkVar("Float", "NextMagTime") + self:CustomNetworkVar("Float", "NextHolsterTime") + self:CustomNetworkVar("Float", "AimDelta") + self:CustomNetworkVar("Float", "Cone") + self:CustomNetworkVar("Float", "NextSprintTime") + self:CustomNetworkVar("Float", "NextInspectTime") + self:CustomNetworkVar("Float", "NextFiremodeTime") + self:CustomNetworkVar("Float", "NextMeleeTime") + self:CustomNetworkVar("Float", "TriggerDelta") + self:CustomNetworkVar("Float", "NextAimModeTime") + self:CustomNetworkVar("Float", "AimModeDelta") + self:CustomNetworkVar("Float", "BreathingDelta") + + self:CustomNetworkVar("Flag", "MagInserted") + self:CustomNetworkVar("Flag", "PlayFirstDraw") + self:CustomNetworkVar("Flag", "Reloading") + self:CustomNetworkVar("Flag", "Drawing") + self:CustomNetworkVar("Flag", "Holstering") + self:CustomNetworkVar("Flag", "Aiming") + self:CustomNetworkVar("Flag", "Sprinting") + self:CustomNetworkVar("Flag", "Rechambered") + self:CustomNetworkVar("Flag", "HoldingTrigger") + self:CustomNetworkVar("Flag", "Customizing") + self:CustomNetworkVar("Flag", "Lowered") + self:CustomNetworkVar("Flag", "FlashlightOn") + self:CustomNetworkVar("Flag", "BipodDeployed") + self:CustomNetworkVar("Flag", "Inspecting") + self:CustomNetworkVar("Flag", "StoppedInspectAnimation") + + self:CustomNetworkVar("Bool", "ToggleAim") + self:CustomNetworkVar("Bool", "HasRunOutOfBreath") + + self:CustomNetworkVar("Entity", "NextWeapon") + self:CustomNetworkVar("Entity", "ViewModel") + + self:CustomNetworkVar("Int", "SprayRounds") + self:CustomNetworkVar("Int", "Firemode") + self:CustomNetworkVar("Int", "BurstRounds") + self:CustomNetworkVar("Int", "PenetrationCount") + self:CustomNetworkVar("Int", "AimMode") + + --self:CustomNetworkVar("String", "0", "Camo") + + self:CustomNetworkVar("Angle", "BreathingAngle") +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_firemode_behaviour.lua b/lua/weapons/mg_base/modules/shared/sh_firemode_behaviour.lua new file mode 100644 index 0000000..1918e08 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_firemode_behaviour.lua @@ -0,0 +1,64 @@ +AddCSLuaFile() + +function SWEP:CanChangeFiremode() + return !self:HasFlag("Reloading") + && !self:HasFlag("Drawing") + && !self:HasFlag("Holstering") + && (!self:HasFlag("Sprinting") || self:HasFlag("Lowered")) + && CurTime() > self:GetNextSprintTime() + && CurTime() > self:GetNextPrimaryFire() + && CurTime() > self:GetNextMeleeTime() + && CurTime() > self:GetNextFiremodeTime() + && !self:HasFlag("Customizing") +end + +function SWEP:ChangeFiremode() + if (CLIENT && game.SinglePlayer()) then + return + end + + if (!self:CanChangeFiremode()) then + return + end + + local index = self:GetFiremode() + + if (self.Firemodes[index + 1]) then + index = index + 1 + else + index = 1 + end + + if (self:GetFiremode() != index) then + local seqIndex = self:ApplyFiremode(index) + self:PlayViewModelAnimation(seqIndex) + + local length = self:GetAnimation(seqIndex).Length || 0.5 + self:SetNextFiremodeTime(CurTime() + length) + self:SetBurstRounds(0) + end +end + +function SWEP:ApplyFiremodeStats() + return self.Firemodes[self:GetFiremode()].OnSet(self) +end + +function SWEP:ApplyFiremode(index) + local seqIndex = "Idle" + + if (type(index) == "string") then + index = tonumber(index) + end + + self:SetFiremode(index) + + if (game.SinglePlayer() || IsFirstTimePredicted()) then + self:BuildCustomizedGun() --to reset to defaults + end + + if (game.SinglePlayer() && SERVER) then + self:CallOnClient("ApplyFiremode", index) + end + + return self:ApplyFiremodeStats() +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_holdtypes.lua b/lua/weapons/mg_base/modules/shared/sh_holdtypes.lua new file mode 100644 index 0000000..3b1997f --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_holdtypes.lua @@ -0,0 +1,135 @@ +AddCSLuaFile() + +SWEP.HoldTypes = { + BoltAction = { + Idle = {Crouching = "ar2", Standing = "ar2"}, + Aim = {Crouching = "ar2", Standing = "rpg"}, + Down = {Crouching = "knife", Standing = "passive"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN, + Reload = ACT_HL2MP_GESTURE_RELOAD_SMG1, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + BigGun = { + Idle = {Crouching = "ar2", Standing = "ar2"}, + Aim = {Crouching = "ar2", Standing = "rpg"}, + Down = {Crouching = "knife", Standing = "passive"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_REVOLVER, + Reload = ACT_HL2MP_GESTURE_RELOAD_SMG1, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + Rifle = { + Idle = {Crouching = "ar2", Standing = "ar2"}, + Aim = {Crouching = "ar2", Standing = "rpg"}, + Down = {Crouching = "knife", Standing = "passive"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG1, + Reload = ACT_HL2MP_GESTURE_RELOAD_SMG1, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + RifleWithVerticalGrip = { + Idle = {Crouching = "smg", Standing = "smg"}, + Aim = {Crouching = "smg", Standing = "rpg"}, + Down = {Crouching = "knife", Standing = "passive"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG1, + Reload = ACT_HL2MP_GESTURE_RELOAD_SMG1, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + RPG = { + Idle = {Crouching = "rpg", Standing = "rpg"}, + Aim = {Crouching = "rpg", Standing = "rpg"}, + Down = {Crouching = "knife", Standing = "passive"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN, + Reload = ACT_HL2MP_GESTURE_RELOAD_SMG1, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + TinyGun = { + Idle = {Crouching = "ar2", Standing = "rpg"}, + Aim = {Crouching = "ar2", Standing = "rpg"}, + Down = {Crouching = "normal", Standing = "passive"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG1, + Reload = ACT_HL2MP_GESTURE_RELOAD_SMG1, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + Saw = { + Idle = {Crouching = "physgun", Standing = "physgun"}, + Aim = {Crouching = "physgun", Standing = "physgun"}, + Down = {Crouching = "physgun", Standing = "physgun"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG1, + Reload = ACT_HL2MP_GESTURE_RELOAD_SMG1, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + Bipod = { + Idle = {Crouching = "rpg", Standing = "rpg"}, + Aim = {Crouching = "rpg", Standing = "rpg"}, + Down = {Crouching = "knife", Standing = "passive"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_SMG1, + Reload = ACT_HL2MP_GESTURE_RELOAD_SMG1, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + Shotgun = { + Idle = {Crouching = "crossbow", Standing = "crossbow"}, + Aim = {Crouching = "crossbow", Standing = "ar2"}, + Down = {Crouching = "knife", Standing = "passive"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_SHOTGUN, + Reload = ACT_HL2MP_GESTURE_RELOAD_SMG1, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + Pistol = { + Idle = {Crouching = "pistol", Standing = "revolver"}, + Aim = {Crouching = "pistol", Standing = "revolver"}, + Down = {Crouching = "knife", Standing = "normal"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL, + Reload = ACT_HL2MP_GESTURE_RELOAD_PISTOL, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + Revolver = { + Idle = {Crouching = "pistol", Standing = "revolver"}, + Aim = {Crouching = "pistol", Standing = "revolver"}, + Down = {Crouching = "knife", Standing = "normal"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL, + Reload = ACT_HL2MP_GESTURE_RELOAD_REVOLVER, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + AmmoBox = { + Idle = {Crouching = "fist", Standing = "fist"}, + Aim = {Crouching = "fist", Standing = "fist"}, + Down = {Crouching = "knife", Standing = "normal"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Deploy = ACT_GMOD_GESTURE_ITEM_PLACE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE2 + }, + + Shield = { + Idle = {Crouching = "fist", Standing = "fist"}, + Aim = {Crouching = "fist", Standing = "fist"}, + Down = {Crouching = "knife", Standing = "knife"}, + Attack = ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL, + Draw = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE, + Deploy = ACT_GMOD_GESTURE_ITEM_PLACE, + Melee = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE + } +} + +--for reload, attack and draw visit: https://wiki.facepunch.com/gmod/Enums/ACT (only ACT_HL2MP_GESTURE_*) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_inspect_behavior.lua b/lua/weapons/mg_base/modules/shared/sh_inspect_behavior.lua new file mode 100644 index 0000000..764af33 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_inspect_behavior.lua @@ -0,0 +1,70 @@ +AddCSLuaFile() + +function SWEP:CanInspect() + if (self:HasFlag("Customizing")) then + return false + end + + if (CurTime() < self:GetNextPrimaryFire()) then + return false + end + + if (self:HasFlag("Reloading") || self:HasFlag("Holstering") || self:HasFlag("Drawing") || self:HasFlag("Sprinting")) then + return false + end + + if (CurTime() < self:GetNextSprintTime()) then + return false + end + + if (CurTime() < self:GetNextMeleeTime()) then + return false + end + + if (CurTime() < self:GetNextFiremodeTime()) then + return false + end + + if (self:GetAimDelta() > 0) then + return false + end + + if (self:HasFlag("Sprinting")) then + return + end + + if (self:HasFlag("Drawing")) then + return false + end + + return CurTime() > self:GetNextInspectTime() +end + +function SWEP:Inspect() + if (CurTime() >= self:GetNextInspectTime()) then + self:RemoveFlag("StoppedInspectAnimation") + else + self:ToggleFlag("StoppedInspectAnimation") + end + + if (self:CanInspect()) then + local inspIndex = (self:Clip1() <= 0 && self:GetAnimation("Inspect_Empty") != nil) && "Inspect_Empty" || "Inspect" + self:PlayViewModelAnimation(inspIndex) + self:SetNextInspectTime(CurTime() + self:GetAnimLength(inspIndex)) + self:RemoveFlag("Lowered") + end +end + +function SWEP:InspectLogic() + if (self:HasFlag("StoppedInspectAnimation")) then + self:SetNextInspectTime(self:GetNextInspectTime() + FrameTime()) + end + + if (CurTime() >= self:GetNextInspectTime()) then + self:RemoveFlag("StoppedInspectAnimation") + else + if (self:GetOwner():KeyDown(IN_ATTACK) && self:Clip1() > 0) then + self:SetNextInspectTime(0) + end + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_melee_behaviour.lua b/lua/weapons/mg_base/modules/shared/sh_melee_behaviour.lua new file mode 100644 index 0000000..dc6d501 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_melee_behaviour.lua @@ -0,0 +1,54 @@ +AddCSLuaFile() + +function SWEP:CanMelee() + return !self:HasFlag("Sprinting") + && !self:HasFlag("Holstering") + && !self:HasFlag("Drawing") + && CurTime() > self:GetNextPrimaryFire() + && CurTime() > self:GetNextSprintTime() + && !self:HasFlag("Customizing") + && CurTime() > self:GetNextMeleeTime() +end + +function SWEP:Melee() + if (game.SinglePlayer() && CLIENT) then return end + + if (!self:CanMelee()) then + return + end + + self:RemoveFlag("Lowered") + self:SetNextInspectTime(0) + self:RemoveFlag("Reloading") + self:PlayerGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, self.HoldTypes[self:GetCurrentHoldType()].Melee) + + local size = self:GetAnimation("Melee").Size + local range = self:GetAnimation("Melee").Range + local bHit = false + + self:GetOwner():FireBullets({ + Src = self:GetOwner():EyePos(), + Dir = self:GetOwner():EyeAngles():Forward(), + Distance = range, + HullSize = size, + Tracer = 0, + Callback = function(attacker, btr, dmgInfo) + dmgInfo:SetDamage(self:GetAnimation("Melee_Hit").Damage) + dmgInfo:SetInflictor(self) + dmgInfo:SetAttacker(self:GetOwner()) + dmgInfo:SetDamagePosition(btr.HitPos) + dmgInfo:SetDamageForce(self:GetOwner():EyeAngles():Forward() * (self:GetAnimation("Melee_Hit").Damage * 100)) + dmgInfo:SetDamageType(DMG_CLUB + DMG_ALWAYSGIB) + + bHit = true + end + }) + + if (bHit) then + self:SetNextMeleeTime(CurTime() + self:GetAnimLength("Melee_Hit", self:GetAnimation("Melee_Hit").Length)) + self:PlayViewModelAnimation("Melee_Hit") + else + self:SetNextMeleeTime(CurTime() + self:GetAnimLength("Melee", self:GetAnimation("Melee").Length)) + self:PlayViewModelAnimation("Melee") + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_primaryattack_behaviour.lua b/lua/weapons/mg_base/modules/shared/sh_primaryattack_behaviour.lua new file mode 100644 index 0000000..30e3837 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_primaryattack_behaviour.lua @@ -0,0 +1,708 @@ +AddCSLuaFile() + +function SWEP:CanAttack() + if (self:Clip1() <= 0) then + return false + end + + if (self:GetAnimation("Rechamber") != nil && self:GetAnimation("Reload_Loop") != nil && self:HasFlag("Reloading") && !self:HasFlag("Customizing")) then + return true + end + + if (self:GetAnimation("Rechamber") != nil && !self:HasFlag("Rechambered")) then + return false + end + + if (self:HasFlag("Customizing")) then + return false + end + + if (CurTime() < self:GetNextPrimaryFire()) then + return false + end + + if (CurTime() < self:GetNextFiremodeTime()) then + return false + end + + --[[if (self:GetOwner():KeyDown(IN_USE)) then + return false + end]] + + if ((self:HasFlag("Reloading") && !self:CanAttackInterruptReload()) || self:HasFlag("Holstering") || self:HasFlag("Drawing") || self:HasFlag("Sprinting")) then + return false + end + + if (CurTime() < self:GetNextMeleeTime()) then + return false + end + + if (CurTime() < self:GetNextSprintTime()) then + return false + end + + if (self.Primary.BurstRounds > 1 && self:GetBurstRounds() >= self.Primary.BurstRounds) then + return false + end + + --[[if (CurTime() < self:GetNextReloadTime() && self:HasFlag("MagInserted")) then --avoid people from shooting after they canceled their reloads + return false + end]] + --yeah reward it + + return !self.Trigger || self:GetTriggerDelta() >= 1 +end + +function SWEP:GetRecoilDecreaseEveryShotMultiplier() + local globalMul = 1 + + if (self.Recoil.DecreaseEveryShot != nil) then + globalMul = 1 - (self:GetSprayRounds() * self.Recoil.DecreaseEveryShot) + globalMul = math.max(globalMul, self.Recoil.MinDecreaseEveryShot || 0) + end + + return globalMul +end + +function SWEP:GetRecoilMultiplier() + if (self:HasFlag("BipodDeployed")) then + return 0.1 + end + + return 1 +end + +function SWEP:CalculateRecoil() + math.randomseed(self.Recoil.Seed + self:GetSprayRounds()) + + local verticalRecoil = math.min(self:GetSprayRounds(), math.min(self:GetMaxClip1() * 0.33, 20)) * 0.1 + math.Rand(self.Recoil.Vertical[1], self.Recoil.Vertical[2]) * GetConVar("mgbase_sv_recoil"):GetFloat() + local horizontalRecoil = math.Rand(self.Recoil.Horizontal[1], self.Recoil.Horizontal[2]) * GetConVar("mgbase_sv_recoil"):GetFloat() + local angles = Angle(-verticalRecoil, horizontalRecoil, horizontalRecoil * -0.3) + + return angles * Lerp(self:GetAimDelta(), 1, self.Recoil.AdsMultiplier) * self:GetRecoilDecreaseEveryShotMultiplier() * self:GetRecoilMultiplier() +end + +function SWEP:MetersToHU(meters) + return (meters * 100) / 2.54 +end + +SWEP.FireSurfaces = { + MAT_ANTLION, MAT_BLOODYFLESH, MAT_EGGSHELL, MAT_FLESH, MAT_ALIENFLESH, MAT_PLASTIC, MAT_FOLIAGE, MAT_SLOSH, MAT_GRASS, MAT_WOOD, MAT_DIRT +} + +function SWEP:MakeLight(pos, color, brightness, dieTime) + if (SERVER && game.SinglePlayer()) then + local args = "Vector("..pos.x..", "..pos.y..", "..pos.z.."), Color("..color.r..", "..color.g..", "..color.b.."), "..brightness..", "..dieTime + self:GetOwner():SendLua("local e = Entity("..self:EntIndex()..") if (IsValid(e)) then e:MakeLight("..args..") end") + end + + if (CLIENT) then + local dlight = DynamicLight(-1) + if (dlight) then + dlight.pos = pos + dlight.r = color.r + dlight.g = color.g + dlight.b = color.b + dlight.brightness = brightness + dlight.Decay = 1000 + dlight.Size = 256 + dlight.DieTime = dieTime + end + end +end + +local function drawHitDebug(self, tr, damage, dist, effectiveRange, dropoffStart) + RunConsoleCommand("clear_debug_overlays") + + timer.Simple(0, function() + local original = weapons.Get(self:GetClass()) + local ang = tr.HitNormal:Angle() + debugoverlay.EntityTextAtPosition(tr.HitPos, 0, "°", 5, Color(0, 255, 0, 255)) + + --check if we have any atts that change range + if (self.Bullet.EffectiveRange != original.Bullet.EffectiveRange + || self.Bullet.DropOffStartRange != original.Bullet.DropOffStartRange + || self.Bullet.Damage[1] != original.Bullet.Damage[1] + || self.Bullet.Damage[2] != original.Bullet.Damage[2]) then + debugoverlay.ScreenText(0.55, 0.51, "You have attachments that modify range values!", 5, Color(255, 100, 50, 255)) + end + + debugoverlay.ScreenText(0.55, 0.52, math.Round(dist - dropoffStart).." / "..math.Round(effectiveRange).." units ("..self.Bullet.EffectiveRange.."m)", 5, Color(0, 200, 50, 255)) + debugoverlay.ScreenText(0.55, 0.53, math.floor(damage).." damage (raw)", 5, Color(255, 200, 0, 255)) + end) +end + +function SWEP:BulletCallbackInternal(attacker, tr, dmgInfo) + local dist = tr.HitPos:Distance(self:GetOwner():GetShootPos()) + local effectiveRange = self:MetersToHU(self.Bullet.EffectiveRange) + local dropoffStart = self.Bullet.DropOffStartRange && self:MetersToHU(self.Bullet.DropOffStartRange) || 0 + + local damage + if !self.Explosive then --regular hitscan damage + damage = Lerp(math.Clamp((dist - dropoffStart) / effectiveRange, 0, 1), self.Bullet.Damage[1], self.Bullet.Damage[2]) + damage = math.max(damage / self.Bullet.NumBullets, 1) + else --launcher damage + damage = self.Bullet.Damage[1] / self.Explosive.ImpactBlastRatio + end + + local pen = self.Bullet.Penetration + + if (SERVER && GetConVar("mgbase_debug_range"):GetInt() > 0) then + drawHitDebug(self, tr, damage, dist, effectiveRange, dropoffStart) + end + + local bCanPenetrate = (GetConVar("mgbase_sv_full_penetration"):GetBool() || (self:GetMaxClip1() <= 10 || self:Clip1() % 2 == 0)) + && self.Bullet.NumBullets <= 1 + && (self.Projectile == nil || self.Projectile.Penetrate) + + if (bCanPenetrate) then + if (self:GetPenetrationCount() < pen.MaxCount) then + local mul = pen.DamageMultiplier + local c = pen.MaxCount - self:GetPenetrationCount() + + while (c > 0) do + mul = mul * pen.DamageMultiplier + c = c - 1 + end + + damage = damage * mul + end + end + + if (tr.Entity:IsPlayer()) then + damage = damage * GetConVar("mgbase_sv_pvpdamage"):GetFloat() + elseif (tr.Entity:IsNPC() || tr.Entity:IsNextBot()) then + damage = damage * GetConVar("mgbase_sv_pvedamage"):GetFloat() + end + + local bGenericButHead = tr.Entity:EyePos() != tr.Entity:GetPos() && tr.HitGroup == HITGROUP_GENERIC && tr.HitPos.z > tr.Entity:EyePos().z + local bHeadshot = tr.HitGroup == HITGROUP_HEAD || bGenericButHead + + if (bGenericButHead) then + tr.HitGroup = HITGROUP_HEAD + damage = damage * 2 + end + + if (bHeadshot) then + dmgInfo:SetDamageCustom(1) + damage = damage * (self.Bullet.HeadshotMultiplier || 1) + elseif (tr.HitGroup == HITGROUP_LEFTARM || tr.HitGroup == HITGROUP_RIGHTARM) then + damage = damage * 4 + elseif (tr.HitGroup == HITGROUP_LEFTLEG || tr.HitGroup == HITGROUP_RIGHTLEG) then + damage = damage * 2 + end + + dmgInfo:SetDamage(damage + 1) + + if (tr.Entity == self.lastHitEntity && (tr.Entity:IsPlayer() || tr.Entity:IsNPC() || tr.Entity:IsNextBot())) then --if we are penetrating something again (bad coz we apply double damage this way) + dmgInfo:SetDamage(0) + end + + if (bCanPenetrate) then + self.lastHitEntity = tr.Entity + end + + if (self.Projectile == nil) then + dmgInfo:SetDamageType(DMG_BULLET) + end + + dmgInfo:SetDamageForce(tr.Normal * (self.Bullet.Damage[2] * self.Bullet.PhysicsMultiplier * 200) / self.Bullet.NumBullets) + + local bInWater = bit.band(util.PointContents(tr.HitPos), CONTENTS_WATER) == CONTENTS_WATER + + if (!bInWater) then + for _, att in pairs(self:GetAllAttachmentsInUse()) do + if (att.OnImpact != nil) then + att:OnImpact(self, dmgInfo, tr) + end + end + end + + local bCanRicochet = !tr.bFromRicochet && !bWater && (tr.Entity:IsWorld() || tr.Entity:Health() <= 0) && !tr.Entity:IsNPC() && !tr.Entity:IsPlayer() && !tr.Entity:IsNextBot() + math.randomseed(self:Clip1() + self:Ammo1()) + + if (self.Bullet.Ricochet && bCanRicochet && math.random(1, math.Clamp(self:GetMaxClip1() / 10, 2, 4)) == 1) then + local finalDir = tr.HitNormal + VectorRand() + + if (IsFirstTimePredicted()) then + for _, e in pairs(ents.FindInSphere(tr.HitPos, 1024)) do + if (e == self:GetOwner()) then + continue + end + + if (!e:IsNPC() && !e:IsPlayer() && !e:IsNextBot()) then + continue + end + + if (e:Health() <= 0) then + continue + end + + local dir = (e:WorldSpaceCenter() - tr.HitPos):GetNormalized() + local dot = tr.HitNormal:Dot(dir) + + if (dot < 0.5) then + continue + end + + if (!e:IsLineOfSightClear(tr.HitPos)) then + continue + end + + local bCanTarget = (e:IsNPC() || e:IsNextBot()) + || (e:IsPlayer() && (GetConVar("sbox_playershurtplayers"):GetInt() > 0 || e:Team() != self:GetOwner():Team())) + + if (bCanTarget) then + finalDir = dir + (VectorRand() * 0.01) + break + end + end + end + + if (SERVER) then + sound.Play("^viper/shared/blt_ricco_0"..math.random(1, 6)..".wav", tr.HitPos, 85, math.random(95, 105), 1) + end --i was forced, suppresshostevents does nothing like always + + --fire forward + self:GetOwner():FireBullets({ + Attacker = self:GetOwner(), + Src = tr.HitPos, + Dir = finalDir, + Num = 1, + Tracer = 0, + Callback = function(attacker, tr, dmgInfo) + tr.bFromRicochet = true + + if (IsFirstTimePredicted()) then + local ed = EffectData() + ed:SetScale(5000) --speed + ed:SetStart(tr.StartPos) + ed:SetOrigin(tr.HitPos) + ed:SetNormal(finalDir) + ed:SetEntity(self) + util.Effect("Tracer", ed) + + ed = EffectData() + ed:SetOrigin(tr.StartPos) + ed:SetMagnitude(1) + ed:SetScale(1) + ed:SetNormal(tr.HitNormal) + ed:SetRadius(2) + util.Effect("Sparks", ed) + + --[[if (CLIENT) then + local dlight = DynamicLight(self:EntIndex()) + if (dlight) then + dlight.pos = tr.StartPos + dlight.r = 255 + dlight.g = 75 + dlight.b = 0 + dlight.brightness = 5 + dlight.Decay = 500 + dlight.Size = 8 + dlight.DieTime = CurTime() + end + end]] + end + + self:BulletCallback(attacker, tr, dmgInfo) + end + }) + + return --stop penetration + end + + if (damage <= 1.9 || tr.HitTexture == "**displacement**" || bInWater || tr.bFromRicochet) then + return + end + + if (bCanPenetrate && self:GetPenetrationCount() > 0) then + if (tr.HitNoDraw || tr.HitSky) then + return + end + + local output = {} + local dir = tr.Normal + local start = tr.HitPos + + if (IsFirstTimePredicted()) then + --debugoverlay.Axis(tr.HitPos, tr.HitNormal:Angle(), 5, 5, true) + + util.TraceLine({ + start = tr.HitPos + tr.Normal, + endpos = tr.HitPos + tr.Normal * pen.Thickness, + mask = MASK_SHOT, + filter = {tr.Entity}, + ignoreworld = !IsValid(tr.Entity), + output = output + }) + + util.TraceLine({ + start = output.HitPos, + endpos = tr.HitPos, + mask = MASK_SHOT, + output = output + }) + + --debugoverlay.Line(tr.HitPos, output.HitPos, 5, Color(255, 0, 0, 255), true) + end + + if (output != nil && !output.StartSolid && !output.HitNoDraw && !output.HitSky) then + self:SetPenetrationCount(self:GetPenetrationCount() - 1) + + --fire back to the wall to make hole + self:GetOwner():FireBullets({ + Attacker = self:GetOwner(), + Src = output.StartPos, + Dir = -tr.Normal, + Num = 1, + Tracer = 0, + Damage = 0 + }) + + --fire forward + self:GetOwner():FireBullets({ + Attacker = self:GetOwner(), + Src = output.HitPos, + Dir = tr.Normal, + Num = 1, + Tracer = 0, + Callback = function(attacker, tr, dmgInfo) + self:BulletCallback(attacker, tr, dmgInfo) + end + }) + end + end +end + +function SWEP:BulletCallback(attacker, tr, dmgInfo) + self:BulletCallbackInternal(attacker, tr, dmgInfo) +end + +function SWEP:Bullets(hitpos) + self.lastHitEntity = NULL + self:SetPenetrationCount(self.Bullet.Penetration != nil && self.Bullet.Penetration.MaxCount || 0) + + + local spread = Vector(self:GetCone(), self:GetCone()) * 0.1 + + if (self.Bullet.NumBullets == 1) then + spread = LerpVector(self:GetAimDelta(), spread, Vector(0, 0)) + end + + local dir = (self:GetOwner():EyeAngles() + self:GetOwner():GetViewPunchAngles() + self:GetBreathingSwayAngle()):Forward() + + if (hitpos != nil && isvector(hitpos)) then + dir = (hitpos - self:GetOwner():EyePos()):GetNormalized() + spread = Vector() + end + + local bCanAssist = self:GetAimDelta() > 0.5 && self:GetOwner():GetInfoNum("mgbase_aimassist", 1) > 0 && GetConVar("mgbase_sv_aimassist"):GetInt() > 0 + bCanAssist = self.Bullet.NumBullets > 1 || bCanAssist + + self:GetOwner():FireBullets({ + Attacker = self:GetOwner(), + Src = self:GetOwner():EyePos(), + Dir = dir, + Spread = spread, + Num = self.Bullet.NumBullets, + Damage = self.Bullet.Damage[1], --for some fucking bullet mod or something idk + HullSize = bCanAssist && 1 || 0, + --Force = (self.Bullet.Damage[1] * self.Bullet.PhysicsMultiplier) * 0.01, + Distance = self:MetersToHU(self.Bullet.Range) * GetConVar("mgbase_sv_range"):GetFloat(), + Tracer = self.Bullet.Tracer && 1 || 0, + Callback = function(attacker, tr, dmgInfo) + self:BulletCallback(attacker, tr, dmgInfo, bFromServer) + + if (IsFirstTimePredicted() || game.SinglePlayer()) then + self:FireTracer(tr.HitPos) + end + end + }) +end + +function SWEP:GetTracerOrigin() + --[[local vm = self:GetViewModel() + local att = vm:GetAttachment(vm:LookupAttachment("muzzle")) + + if (att == nil) then + return self:GetPos() + end + + return att.Pos - Vector(0, 0, 10)]] + + if (CLIENT && self:IsCarriedByLocalPlayer()) then + local attEnt, attId = self:GetViewModel():FindAttachment("muzzle") + + return attEnt:GetAttachment(attId).Pos + end + + return self:GetPos() +end + +function SWEP:PrimaryAttack() + if (!self:CanAttack()) then + return + end + + self:RemoveFlag("Lowered") + self:SetNextInspectTime(0) + + if (self:HasFlag("Reloading")) then + self:EndReload() + + if (self:GetAnimation("Rechamber") != nil && self:GetAnimation("Reload_Loop") != nil) then + return + end + end + + if (self.Animations.Rechamber || self:Clip1() <= 1) then + self:RemoveFlag("Rechambered") + + if (self:Clip1() <= 1 && self.ReloadRechambers) then + self:AddFlag("Rechambered") + end + end + + self:SetClip1(self:Clip1() - 1) + self:SetSprayRounds(self:GetSprayRounds() + 1) + + --self:GetOwner():DoCustomAnimEvent(PLAYERANIMEVENT_ATTACK_PRIMARY, 0) + self:PlayerGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, self.HoldTypes[self:GetCurrentHoldType()].Attack) + + local seqIndex = "Fire" + + if (self:Clip1() <= 0 && self:GetAnimation("Fire_Last") != nil) then + seqIndex = "Fire_Last" + end + + self:PlayViewModelAnimation(seqIndex) + + self:SetNextPrimaryFire(CurTime() + (60 / self.Primary.RPM)) + self:SetBurstRounds(self:GetBurstRounds() + 1) + + if (self:GetBurstRounds() >= self.Primary.BurstRounds && self.Primary.BurstRounds > 1) then + self:SetNextPrimaryFire(CurTime() + self.Primary.BurstDelay) + + if (self.Trigger == nil) then + self:SetBurstRounds(0) + end + end + + local punch = self:CalculateRecoil() + self:GetOwner():ViewPunch(punch) + + self:HandleReverb() + + if (!game.SinglePlayer()) then + self:EmitSound(self.Primary.Sound) + else + self:GetOwner():SendLua("LocalPlayer():EmitSound('"..self.Primary.Sound.."')") + end + + if (self.Primary.TrailingSound != nil) then + if (!game.SinglePlayer()) then + self:EmitSound(self.Primary.TrailingSound) + else + self:GetOwner():SendLua("LocalPlayer():EmitSound('"..self.Primary.TrailingSound.."')") + end + end + + --bullets + self.lastHitEntity = NULL + if (!self.Projectile) then + self:Bullets() + else + self:Projectiles() + end + + --setting the eye angles after we shoot, feels like shit otherwise + if (self.Recoil.Punch != nil) then + if (IsFirstTimePredicted() || game.SinglePlayer()) then + punch:Mul(self.Recoil.Punch) + local ang = self:GetOwner():EyeAngles() + punch + ang.r = 0 + + self:GetOwner():SetEyeAngles(ang) + end + end + + self:SetLastShootTime(CurTime()) + + --cone + self:SetCone(math.min(self:GetCone() + self.Cone.Increase * Lerp(self:GetAimDelta(), 10, 10 * self.Cone.AdsMultiplier), self:GetConeMax())) + + if (CLIENT && IsFirstTimePredicted()) then + self:ShakeCamera() + self:ShakeViewModel() + end + + if (SERVER && game.SinglePlayer()) then + self:CallOnClient("ShakeCamera") + self:CallOnClient("ShakeViewModel") + end +end + +function SWEP:GetConeDecreaseEveryShotMultiplier() + local recoilGlobalMul = 1 + + if (self.Cone.DecreaseEveryShot != nil) then + recoilGlobalMul = 1 - (self:GetSprayRounds() * self.Cone.DecreaseEveryShot) + recoilGlobalMul = math.max(recoilGlobalMul, self.Cone.MinDecreaseEveryShot || 0) + end + + return recoilGlobalMul +end + +function SWEP:GetConeMax() + local cone = (self.Cone.Max * self:GetConeDecreaseEveryShotMultiplier()) / GetConVar("mgbase_sv_accuracy"):GetFloat() + + if (self:HasFlag("BipodDeployed")) then + cone = cone * 0.25 + end + + return cone +end + +function SWEP:GetConeMin() + local cone = (Lerp(self:GetAimDelta(), self.Cone.Hip, self.Cone.Ads) * self:GetConeDecreaseEveryShotMultiplier()) / GetConVar("mgbase_sv_accuracy"):GetFloat() + + if (self:HasFlag("BipodDeployed")) then + cone = cone * 0.25 + end + + return cone +end + +function SWEP:ShakeCamera() + self.Camera.Shake = self.Recoil.Shake +end + +local recoilFuncs = { + [true] = function(w, name) return w.Recoil.ViewModel[name] || 1 end, + [false] = function() return 1 end +} + +local function getRecoilValue(w, name) + return recoilFuncs[w.Recoil.ViewModel != nil](w, name) +end + +function SWEP:ShakeViewModel() + --local seed = math.randomseed(self:GetSprayRounds()) + local vm = self:GetViewModel() + + local recoilPos = Vector(0, 3, -0.5) + local recoilAng = Angle(0, 0, -2) + + if (self.ViewModelOffsets.Recoil != nil) then + recoilPos = Vector(self.ViewModelOffsets.Recoil.Pos) || recoilPos + recoilAng = Angle(self.ViewModelOffsets.Recoil.Angles) || recoilAng + end + + recoilPos:Mul(1 - self:GetAimDelta()) + recoilAng.p = recoilAng.p * (1 - self:GetAimDelta()) + recoilAng.y = recoilAng.y * (1 - self:GetAimDelta()) + + local delta = 1 - self:GetAimDelta() + local cone = math.Clamp(self:GetCone(), 0.85, 1.2) + cone = cone * 0.5 + cone = Lerp(delta, 0.5, cone) + + delta = Lerp(delta, 0.3, 1) + + local vpAngles = self:GetOwner():GetViewPunchAngles() + vpAngles.p = (vpAngles.p * Lerp(self:GetAimDelta(), 0, 0.1)) + math.Rand(-cone, cone) + vpAngles.y = vpAngles.y * Lerp(self:GetAimDelta(), 0.1, 0.5) + Lerp(self:GetAimDelta(), math.Rand(-cone, cone), 0) + + local ang = Angle() + ang.pitch = (vpAngles.pitch * getRecoilValue(self, "VerticalMultiplier")) + (recoilAng.pitch * delta) + ang.yaw = (-vpAngles.yaw * getRecoilValue(self, "HorizontalMultiplier")) + (recoilAng.yaw * delta) + ang.roll = (math.Rand(-1, 1) * getRecoilValue(self, "HorizontalMultiplier")) + Lerp(delta, recoilAng.roll, recoilAng.roll * 0.5) + + local pos = Vector() + pos.y = Lerp(delta, recoilPos.y * 0.5, recoilPos.y) --+ math.sin(math.pi * (math.min(self:GetSprayRounds(), 4) / 4)) * (4 * getRecoilValue(self, "PushBackMultiplier")) + pos.x = (ang.yaw * 1.5 + (ang.roll * -0.5) + recoilPos.x) * delta + pos.z = (ang.pitch * 1.5 + (ang.roll * 0.5) + recoilPos.z) * delta + + if (self:HasFlag("BipodDeployed")) then + pos.x = 0 + pos.z = 0 + + ang.pitch = 0 + ang.yaw = 0 + ang.roll = 0 + end + + vm:SetRecoilTargets(pos, ang) + vm.m_RecoilRoll = math.Clamp(math.Rand(-1, 1) * 100000, -1, 1) * (self.Recoil.Shake * 3) +end + +function SWEP:Projectiles() + if (CLIENT) then + return + end + + self:SetPenetrationCount(self.Bullet.Penetration != nil && self.Bullet.Penetration.MaxCount || 0) + + local proj = ents.Create(self.Projectile.Class) + + local angles = self:GetOwner():EyeAngles() + self:GetOwner():GetViewPunchAngles() + + local src = LerpVector(self:GetAimDelta(), self:GetOwner():EyePos() + angles:Up() * -3 + angles:Right() * 3, self:GetOwner():EyePos()) + local dir = self:GetOwner():GetEyeTraceNoCursor().HitPos - src + + math.randomseed(self:Clip1() + self:Ammo1() + CurTime() + self.Cone.Seed) + local spreadRight = math.Rand(-self:GetCone(), self:GetCone()) * 5 + + math.randomseed(-self:Clip1() * 0.5 + self:Ammo1() * 2 - CurTime() + self.Cone.Seed) + local spreadUp = math.Rand(-self:GetCone(), self:GetCone()) * 5 + + local spread = LerpVector(self:GetAimDelta(), Vector(spreadRight, spreadUp), Vector(0, 0)) + angles:RotateAroundAxis(angles:Right(), spread.x) + angles:RotateAroundAxis(angles:Up(), spread.y) + + proj.Weapon = self + + proj:SetPos(src) + proj:SetAngles(angles) + proj:SetOwner(self:GetOwner()) + proj:Spawn() + + if (self.Projectile.Velocity != nil) then + proj:SetVelocity(angles:Forward() * self.Projectile.Velocity) + end +end + +local function doTracer(wep, hitpos) + if (!wep.Bullet) then + return + end + + local traceEffect = wep.Bullet.TracerName || "mgbase_tracer" + util.ParticleTracerEx(traceEffect, wep:GetTracerOrigin(), hitpos, false, wep:EntIndex(), -1) +end + +function SWEP:FireTracer(pos) + if (self.Projectile != nil) then + return + end + + if (CLIENT) then + doTracer(self, pos) + else + net.Start("mgbase_fire_tracer", false) + net.WriteEntity(self) + net.WriteVector(pos) + if (game.SinglePlayer()) then + net.Send(self:GetOwner()) + else + net.SendOmit(self:GetOwner()) + end + end +end + +net.Receive("mgbase_fire_tracer", function() + local wep = net.ReadEntity() + local hitpos = net.ReadVector() + doTracer(wep, hitpos) +end) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_reload_behaviour.lua b/lua/weapons/mg_base/modules/shared/sh_reload_behaviour.lua new file mode 100644 index 0000000..f391464 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_reload_behaviour.lua @@ -0,0 +1,202 @@ +AddCSLuaFile() + +function SWEP:CanReload() + if (self:HasFlag("Customizing")) then + return false + end + + if (CurTime() < self:GetNextPrimaryFire()) then + return false + end + + if (self:HasFlag("Reloading") || self:HasFlag("Holstering") || self:HasFlag("Drawing")) then + return false + end + + if (GetConVar("mgbase_sv_sprintreloads"):GetInt() <= 0) then + if (self:HasFlag("Sprinting") || CurTime() < self:GetNextSprintTime()) then + return false + end + end + + if (CurTime() < self:GetNextMeleeTime()) then + return false + end + + if (CurTime() < self:GetNextFiremodeTime()) then + return false + end + + if (CurTime() < self:GetNextReloadTime() && self:HasFlag("MagInserted")) then --avoid people from reloading after they canceled their reloads + return false + end + + if (self:Ammo1() <= 0) then + return false + end + + --[[if (self:GetOwner():KeyDown(IN_USE)) then + return false + end]] + + if (self:HasFlag("Drawing")) then + return false + end + + if (self:Clip1() >= self:GetMaxClip1WithChamber()) then + return false + end + + return true +end + +function SWEP:GetMaxClip1WithChamber() + if (self.CanChamberRound && self:HasFlag("Rechambered")) then + return self:GetMaxClip1() + 1 + end + + return self:GetMaxClip1() +end + +function SWEP:Reload() + if (!self:CanReload()) then + return + end + + self:AddFlag("Reloading") + local seqIndex = self:ChooseReloadAnim() + local length = self:GetAnimLength(seqIndex) + local magLength = self:GetAnimLength(seqIndex, self:GetAnimation(seqIndex).MagLength) + + self:SetNextReloadTime(CurTime() + length) + self:SetNextMagTime(CurTime() + magLength) + self:RemoveFlag("MagInserted") + self:SetBurstRounds(0) + self:RemoveFlag("Lowered") + self:SetNextInspectTime(0) + + if (self.ReloadRechambers) then + self:AddFlag("Rechambered") + end + + if (self.EmptyReloadRechambers && seqIndex == "Reload_Empty") then + self:AddFlag("Rechambered") + end + + if (self.Animations.Rechamber == nil) then + self:AddFlag("Rechambered") + end + + self:PlayerGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, self.HoldTypes[self:GetCurrentHoldType()].Reload) + self:PlayViewModelAnimation(seqIndex) +end + +function SWEP:ChooseReloadAnim() + if (self:GetAnimation("Reload_Start") != nil) then + return "Reload_Start" + end + + if (self:Clip1() <= 0 && self:GetAnimation("Reload_Empty")) then + return "Reload_Empty" + end + + return "Reload" +end + +function SWEP:ReloadLogic() + if (!self:HasFlag("Reloading")) then + return + end + + if (self:GetAnimation("Reload_Loop") != nil) then + if (CurTime() > self:GetNextMagTime() && !self:HasFlag("MagInserted")) then + self:SetClip1(self:Clip1() + 1) + self:GetOwner():SetAmmo(self:Ammo1() - 1, self:GetPrimaryAmmoType()) + + self:AddFlag("MagInserted") + end + + if (CurTime() > self:GetNextReloadTime()) then + local maxClip = self.Primary.ClipSize + + if (GetConVar("mgbase_debug_mag"):GetInt() > 0) then + maxClip = 1 + end + + if (self:HasFlag("Rechambered")) then + maxClip = self:GetMaxClip1WithChamber() + end + + if (self:Clip1() >= maxClip || self:GetOwner():GetAmmoCount(self:GetPrimaryAmmoType()) <= 0) then + self:EndReload() + return + end + + self:PlayViewModelAnimation("Reload_Loop") + + self:SetNextReloadTime(CurTime() + self:GetAnimLength("Reload_Loop")) + self:SetNextMagTime(CurTime() + self:GetAnimLength("Reload_Loop", self:GetAnimation("Reload_Loop").MagLength)) + self:RemoveFlag("MagInserted") + + self:PlayerGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, self.HoldTypes[self:GetCurrentHoldType()].Reload) + end + else + if (CurTime() > self:GetNextMagTime() && !self:HasFlag("MagInserted")) then + local maxClip = self:GetMaxClip1() + + if (self:Clip1() > 0) then + maxClip = self:GetMaxClip1WithChamber() + end + + if (GetConVar("mgbase_debug_mag"):GetInt() > 0) then + maxClip = 1 + if (self:Clip1() > 0) then + maxClip = 2 + end + end + + local ammoNeeded = math.min(maxClip - self:Clip1(), self:Ammo1()) + self:SetClip1(self:Clip1() + ammoNeeded) + + self:GetOwner():SetAmmo(self:Ammo1() - ammoNeeded, self:GetPrimaryAmmoType()) + --self:AddFlag("Rechambered") + self:AddFlag("MagInserted") + end + + if (CurTime() > self:GetNextReloadTime()) then + self:RemoveFlag("Reloading") + end + end +end + +function SWEP:EndReload() + if (self:Clip1() <= 0) then --dont want to cancel reload if im out of ammo + return + end + + if (self:GetAnimation("Reload_End") != nil) then + if (!self:HasFlag("Rechambered") && self:Clip1() > 0 && self:GetAnimation("Reload_End_Empty") != nil) then + self:PlayViewModelAnimation("Reload_End_Empty") + self:SetNextPrimaryFire(CurTime() + self:GetAnimLength("Reload_End_Empty")) + self:AddFlag("Rechambered") + else + self:PlayViewModelAnimation("Reload_End") + self:SetNextPrimaryFire(CurTime() + self:GetAnimLength("Reload_End")) + end + self:RemoveFlag("Reloading") + end + + if (self:GetAnimation("Reload_Loop") == nil && GetConVar("mgbase_sv_shootreloads"):GetInt() > 0) then + self:RemoveFlag("Reloading") + end +end + +function SWEP:CanPump() + return !self:HasFlag("Holstering") + && !self:HasFlag("Drawing") + && self:Clip1() > 0 + && !self:HasFlag("Reloading") + && CurTime() > self:GetNextMeleeTime() + && self:GetAnimation("Rechamber") != nil + && (self:GetOwner():GetInfoNum("mgbase_manualrechamber", 0) <= 0 || self:GetOwner():KeyDown(IN_RELOAD)) +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_safety_behavior.lua b/lua/weapons/mg_base/modules/shared/sh_safety_behavior.lua new file mode 100644 index 0000000..6a2f1f0 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_safety_behavior.lua @@ -0,0 +1,25 @@ +AddCSLuaFile() + +function SWEP:CanChangeSafety() + return !self:HasFlag("Reloading") + && !self:HasFlag("Drawing") + && !self:HasFlag("Holstering") + && !self:HasFlag("Sprinting") --to avoid having fucked anims + && CurTime() > self:GetNextSprintTime() + && CurTime() > self:GetNextPrimaryFire() + && CurTime() > self:GetNextMeleeTime() + && CurTime() > self:GetNextFiremodeTime() + && !self:HasFlag("Customizing") + && !self:HasFlag("Aiming") +end + +function SWEP:ChangeSafety() + if (!self:CanChangeSafety()) then + return + end + + self:ToggleFlag("Lowered") + self:SetNextInspectTime(0) + self:PlayViewModelAnimation(self:HasFlag("Lowered") && "Sprint_In" || "Sprint_Out") + self:EmitSound("ViewModel.Medium") +end diff --git a/lua/weapons/mg_base/modules/shared/sh_sprint_behaviour.lua b/lua/weapons/mg_base/modules/shared/sh_sprint_behaviour.lua new file mode 100644 index 0000000..b3440b2 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_sprint_behaviour.lua @@ -0,0 +1,65 @@ +AddCSLuaFile() + +function SWEP:IsOwnerMoving() + return self:GetOwner():KeyDown(IN_FORWARD) || self:GetOwner():KeyDown(IN_BACK) || self:GetOwner():KeyDown(IN_MOVERIGHT) || self:GetOwner():KeyDown(IN_MOVELEFT) +end + +function SWEP:CanSprint() + local sprintReloads = GetConVar("mgbase_sv_sprintreloads"):GetInt() + + return !self:HasFlag("Drawing") + && !self:HasFlag("Holstering") + && CurTime() > self:GetNextPrimaryFire() + && self:IsOwnerMoving() --checking velocity can sometimes cause desyncs (touching server entities while sprinting) + && !self:GetOwner():Crouching() + && CurTime() > self:GetNextFiremodeTime() + && CurTime() > self:GetNextMeleeTime() + && (sprintReloads <= 0 || (sprintReloads > 0 && !self:HasFlag("Reloading"))) +end + +function SWEP:CanPlaySprintOutAnim() + return !self:HasFlag("Drawing") + && !self:HasFlag("Holstering") + && CurTime() > self:GetNextPrimaryFire() + && CurTime() > self:GetNextFiremodeTime() + && !self:HasFlag("Customizing") + && !self:HasFlag("Reloading") + && !self:HasFlag("Lowered") +end + +function SWEP:DoSprintIn() + self:StopCustomizing() + self:SetNextInspectTime(0) + + if (!self:HasFlag("Sprinting") && !self:HasFlag("Lowered")) then + self:PlayViewModelAnimation("Sprint_In") + self:PlayerGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, 0) + end + + self:AddFlag("Sprinting") + self:RemoveFlag("Reloading") +end + +function SWEP:DoSprintOut() + if (self:HasFlag("Sprinting")) then + self:SetNextSprintTime(CurTime() + self:GetAnimLength("Sprint_Out")) + + if (self:CanPlaySprintOutAnim()) then + self:PlayViewModelAnimation("Sprint_Out") + end + end + + self:RemoveFlag("Sprinting") +end + +function SWEP:SprintLogic() + if (CLIENT && game.SinglePlayer()) then + return + end + + if (self:GetOwner():KeyDown(IN_SPEED) && self:CanSprint()) then + self:DoSprintIn() + else + self:DoSprintOut() + end +end diff --git a/lua/weapons/mg_base/modules/shared/sh_stats.lua b/lua/weapons/mg_base/modules/shared/sh_stats.lua new file mode 100644 index 0000000..918101f --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_stats.lua @@ -0,0 +1,250 @@ +AddCSLuaFile() + +SWEP.StatDefinitions = { + ["SWEP.Primary.ClipSize"] = "ClipSize", + ["SWEP.Primary.RPM"] = "RPM", + ["SWEP.Animations.Ads_Out.Fps"] = "AimSpeed", + ["SWEP.Animations.Ads_In.Fps"] = "AimSpeed", + ["SWEP.Animations.Sprint_Out.Fps"] = "SprintSpeed", + ["SWEP.Animations.Rechamber.Fps"] = "RechamberSpeed", + ["SWEP.Cone.Ads"] = "Accuracy", + ["SWEP.Cone.Hip"] = "Accuracy", + ["SWEP.Cone.Increase"] = "ConeIncrease", + --["SWEP.Animations.Reload.Length"] = "ReloadLength", + -- ["SWEP.Animations.Reload_Empty.Length"] = "ReloadLength", --too confusing for people + ["SWEP.Animations.Reload.Fps"] = "ReloadSpeed", + ["SWEP.Animations.Reload_Empty.Fps"] = "ReloadSpeed", + ["SWEP.Animations.Reload_Start.Fps"] = "ReloadSpeed", + ["SWEP.Animations.Draw.Fps"] = "SwitchSpeed", + ["SWEP.Animations.Holster.Fps"] = "SwitchSpeed", + ["SWEP.Bullet.Damage.1"] = "DamageClose", + ["SWEP.Bullet.Damage.2"] = "DamageRange", + ["SWEP.Bullet.HeadshotMultiplier"] = "HeadshotMultiplier", + ["SWEP.Bullet.EffectiveRange"] = "EffectiveRange", + ["SWEP.Bullet.Penetration.Thickness"] = "PenetrationThickness", + ["SWEP.Recoil.Vertical.1"] = "VerticalRecoil", + ["SWEP.Recoil.AdsMultiplier"] = "Recoil", + ["SWEP.Recoil.Vertical.2"] = "VerticalRecoil", + ["SWEP.Recoil.Horizontal.1"] = "HorizontalRecoil", + ["SWEP.Recoil.Horizontal.2"] = "HorizontalRecoil", + ["SWEP.Recoil.Shake"] = "Shake", + ["SWEP.Animations.Melee_Hit.Length"] = "MeleeSpeed", + ["SWEP.Animations.Melee.Length"] = "MeleeSpeed", + ["SWEP.Animations.Melee_Hit.Damage"] = "MeleeDamage", + ["SWEP.Projectile.Speed"] = "ProjectileSpeed", + ["SWEP.Projectile.Gravity"] = "ProjectileGravity", + ["SWEP.Projectile.Stability"] = "ProjectileStability", + ["SWEP.Projectile.Fuel"] = "ProjectileFuel", + ["SWEP.Projectile.TrackingFraction"] = "TrackingSpeed", + ["SWEP.Bullet.NumBullets"] = "Bullets", + ["SWEP.Zoom.BreathingMultiplier"] = "AimSway", + ["SWEP.Zoom.MovementMultiplier"] = "MovementMultiplier", + ["SWEP.Recoil.DecreaseEveryShot"] = "RecoilStability", + ["SWEP.Trigger.Time"] = "TriggerTime", + ["SWEP.Explosive.BlastRadius"] = "BlastRadius", + ["SWEP.Explosive.ImpactBlastRatio"] = "ImpactDamage", + ["SWEP.TrackingInfo.PingTime"] = "PingSpeed", +} + +SWEP.StatInfo = { + ["PingSpeed"] = { + Name = "Tracking Speed", + ProIfMore = false, + ShowPercentage = true + }, + ["ImpactDamage"] = { + Name = "Impact Damage", + ProIfMore = false, + ShowPercentage = true + }, + ["BlastRadius"] = { + Name = "Blast Radius", + ProIfMore = true, + ShowPercentage = true + }, + ["TriggerTime"] = { + Name = "Trigger Weight", + ProIfMore = false, + ShowPercentage = true + }, + ["RecoilStability"] = { + Name = "Recoil Stability", + ProIfMore = true, + ShowPercentage = true + }, + ["Shake"] = { + Name = "Aim Stability", + ProIfMore = false, + ShowPercentage = true + }, + ["AimSway"] = { + Name = "Scope Aim Sway", + ProIfMore = false, + ShowPercentage = true + }, + ["MovementMultiplier"] = { + Name = "Weapon Moving Steadiness", + ProIfMore = false, + ShowPercentage = true + }, + ["HeadshotMultiplier"] = { + Name = "Headshot Damage", + ProIfMore = true, + ShowPercentage = true + }, + ["ProjectileSpeed"] = { + Name = "Projectile Velocity", + ProIfMore = true, + ShowPercentage = true + }, + ["ProjectileGravity"] = { + Name = "Projectile Drop", + ProIfMore = false, + ShowPercentage = true + }, + ["ProjectileStability"] = { + Name = "Projectile Stability", + ProIfMore = true, + ShowPercentage = true + }, + ["TrackingSpeed"] = { + Name = "Tracking Agression", + ProIfMore = true, + ShowPercentage = true + }, + ["ProjectileFuel"] = { + Name = "Projectile Fuel", + ProIfMore = true, + ShowPercentage = true + }, + ["ClipSize"] = { + Name = "Magazine Size", + ProIfMore = true, + ShowPercentage = false + }, + ["RPM"] = { + Name = "Rounds Per Minute", + ProIfMore = true, + ShowPercentage = false + }, + ["AimSpeed"] = { + Name = "ADS Speed", + ProIfMore = true, + ShowPercentage = true + }, + ["SprintSpeed"] = { + Name = "Sprint-to-Fire Speed", + ProIfMore = true, + ShowPercentage = true + }, + ["AimLength"] = { + Name = "ADS Time", + ProIfMore = false, + ShowPercentage = true + }, + ["RechamberSpeed"] = { + Name = "Rechamber Speed", + ProIfMore = true, + ShowPercentage = true + }, + ["AimAccuracy"] = { + Name = "ADS Spread", + ProIfMore = false, + ShowPercentage = true + }, + ["ConeIncrease"] = { + Name = "Firing Inaccuracy", + ProIfMore = false, + ShowPercentage = true + }, + ["Accuracy"] = { + Name = "Spread", + ProIfMore = false, + ShowPercentage = true + }, + ["ReloadSpeed"] = { + Name = "Reload Speed", + ProIfMore = true, + ShowPercentage = true + }, + ["SwitchSpeed"] = { + Name = "Handling Speed", + ProIfMore = true, + ShowPercentage = true + }, + ["DrawLength"] = { + Name = "Draw Time", + ProIfMore = false, + ShowPercentage = true + }, + ["HolsterLength"] = { + Name = "Holster Time", + ProIfMore = false, + ShowPercentage = true + }, + ["ReloadLength"] = { + Name = "Reload Time", + ProIfMore = false, + ShowPercentage = false + }, + ["DamageClose"] = { + Name = "Damage Close", + ProIfMore = true, + ShowPercentage = true + }, + ["DamageRange"] = { + Name = "Damage Range", + ProIfMore = true, + ShowPercentage = true + }, + ["EffectiveRange"] = { + Name = "Effective Range", + ProIfMore = true, + ShowPercentage = true + }, + ["MaxRange"] = { + Name = "Max Range", + ProIfMore = true, + ShowPercentage = true + }, + ["PenetrationThickness"] = { + Name = "Penetration Power", + ProIfMore = true, + ShowPercentage = true + }, + ["HorizontalRecoil"] = { + Name = "Recoil Horizontal", + ProIfMore = false, + ShowPercentage = true + }, + ["Recoil"] = { + Name = "Recoil Kick", + ProIfMore = false, + ShowPercentage = true + }, + ["VerticalRecoil"] = { + Name = "Recoil Vertical", + ProIfMore = false, + ShowPercentage = true + }, + ["MeleeSpeed"] = { + Name = "Melee Recovery", + ProIfMore = false, + ShowPercentage = true + }, + ["MeleeDamage"] = { + Name = "Damage Melee", + ProIfMore = true, + ShowPercentage = true + }, + ["Bullets"] = { + Name = "Number Of Pellets", + ProIfMore = true, + ShowPercentage = false + }, + ["SprintLength"] = { + Name = "Sprint-to-Fire Time", + ProIfMore = false, + ShowPercentage = false + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_think.lua b/lua/weapons/mg_base/modules/shared/sh_think.lua new file mode 100644 index 0000000..aae3000 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_think.lua @@ -0,0 +1,89 @@ +AddCSLuaFile() + +function SWEP:Think() + self:LoadSpawnPreset() + + --fallback initialize + if (!self.m_bInitialized && IsFirstTimePredicted()) then + self:Initialize() + end + + --holster + if (self:HasFlag("Holstering") && CurTime() >= self:GetNextHolsterTime() && IsValid(self:GetNextWeapon()) && self:GetNextWeapon() != self && self:GetNextWeapon() != self:GetOwner()) then + if (CLIENT && (IsFirstTimePredicted() || game.SinglePlayer())) then + input.SelectWeapon(self:GetNextWeapon()) + end + + return + end + + --equip + if (self:HasFlag("Drawing") && CurTime() >= self:GetNextActionTime()) then + self:RemoveFlag("Drawing") + self:RemoveFlag("PlayFirstDraw") + end + + --spray + if (CurTime() > self:GetNextPrimaryFire() + 0.15) then + self:SetSprayRounds(0) + end + + --cone + self:SetCone(math.Approach(self:GetCone(), self:GetConeMin(), 4 * FrameTime())) + + if (CurTime() <= self:GetNextMeleeTime()) then + self:SetCone(self:GetConeMax()) + end + + --burst logic + if (!game.SinglePlayer() || SERVER) then + if (self.Primary.BurstRounds > 1 && self:GetBurstRounds() < self.Primary.BurstRounds && self:GetBurstRounds() > 0) then + self:PrimaryAttack() + end + end + + --auto reload + if (self:GetOwner():GetInfoNum("mgbase_autoreload", 1)) >= 1 then + if (self:Clip1() <= 0 && self:GetOwner():GetAmmoCount(self:GetPrimaryAmmoType()) > 0) then + self:Reload() + end + end + + self:TriggerLogic() + + --pumping, it has to go under trigger logic + if (CurTime() >= self:GetNextPrimaryFire() && self:CanPump()) then + if (!self:HasFlag("Rechambered")) then + self:PlayViewModelAnimation("Rechamber") + self:SetNextPrimaryFire(CurTime() + self:GetAnimLength("Rechamber")) + self:AddFlag("Rechambered") + end + end + + self:ReloadLogic() + self:AimLogic() + self:SprintLogic() + self:BipodLogic() + self:InspectLogic() + + --ladder + if (self:GetOwner():GetMoveType() == MOVETYPE_LADDER || self:GetOwner():WaterLevel() == 3) then + self:Holster(self:GetOwner()) + else + if (self:HasFlag("Holstering") && self:GetNextWeapon() == self:GetOwner()) then + self:Deploy() + end + end + + --holdtypes + --new meme marine way + self:SetShouldHoldType() + + if (CLIENT && game.SinglePlayer()) then + return + end + + if (self:Clip1() > 0 && !self:HasFlag("Reloading") && !self:HasFlag("Sprinting")) then + self:CreateAndResumeReverbJob() + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/shared/sh_trigger_behavior.lua b/lua/weapons/mg_base/modules/shared/sh_trigger_behavior.lua new file mode 100644 index 0000000..ad1dfc3 --- /dev/null +++ b/lua/weapons/mg_base/modules/shared/sh_trigger_behavior.lua @@ -0,0 +1,176 @@ +local INVALID_TRIGGER_VALUE = -1 --this is used for semis: if its at this value theyt wont fire (otherwise they would go full auto) + +AddCSLuaFile() + +function SWEP:CanPressTrigger() + if (self:HasFlag("Customizing")) then + return false + end + + if (CurTime() < self:GetNextFiremodeTime()) then + return false + end + + if ((self:HasFlag("Reloading") && !self:CanAttackInterruptReload()) || self:HasFlag("Holstering") || self:HasFlag("Drawing") || self:HasFlag("Sprinting")) then + return false + end + + if (CurTime() < self:GetNextMeleeTime()) then + return false + end + + if (CurTime() < self:GetNextSprintTime()) then + return false + end + + if (CurTime() < self:GetNextInspectTime()) then + return false + end + + return true +end + +function SWEP:CanReleaseTrigger() + return (self:GetTriggerDelta() >= 1 || self:GetTriggerDelta() == INVALID_TRIGGER_VALUE) + && (self:GetBurstRounds() >= self.Primary.BurstRounds || self:Clip1() <= 0) +end + +function SWEP:TriggerLogic() + if (CLIENT && game.SinglePlayer()) then + return + end + + if (self.Trigger == nil || !self:CanPressTrigger()) then + if (self:HasFlag("HoldingTrigger")) then + if (self.Trigger.ReleasedSound != nil) then + self:EmitSound(self.Trigger.ReleasedSound) + end + end + + self:RemoveFlag("HoldingTrigger") + + if (CurTime() > self:GetNextPrimaryFire() && self:HasFlag("Rechambered")) then + self:SetTriggerDelta(0) + end + + return + end + + local bDown = self:GetOwner():KeyDown(IN_ATTACK) + + if (bDown && CurTime() >= self:GetNextPrimaryFire()) then + if (!self:HasFlag("HoldingTrigger")) then + if (self.Trigger.PressedSound != nil) then + self:EmitSound(self.Trigger.PressedSound) + end + + if (self.Trigger.PressedAnimation) then + self:PlayViewModelAnimation(self.Trigger.PressedAnimation) + elseif (self:Clip1() <= 0) then + self:PlayViewModelAnimation("Land") + end + end + + self:AddFlag("HoldingTrigger") + self:RemoveFlag("Lowered") + elseif (!bDown && self:CanReleaseTrigger()) then + if (self:HasFlag("HoldingTrigger")) then + if (self.Trigger.ReleasedSound != nil) then + self:EmitSound(self.Trigger.ReleasedSound) + end + + if (self.Trigger.ReleasedAnimation != nil && self:CanPlayTriggerOut()) then + self:PlayViewModelAnimation(self.Trigger.ReleasedAnimation) + end + end + + self:RemoveFlag("HoldingTrigger") + end + + if (self:HasFlag("HoldingTrigger")) then + if (self:GetTriggerDelta() == INVALID_TRIGGER_VALUE) then + return + end + + self:SetTriggerDelta(math.min(self:GetTriggerDelta() + (FrameTime() / self.Trigger.Time), 1)) + + if (self:GetTriggerDelta() >= 1) then + self:PrimaryAttack() + + if (!self.Primary.Automatic && (self:GetBurstRounds() >= self.Primary.BurstRounds || self:Clip1() <= 0)) then + self:SetTriggerDelta(INVALID_TRIGGER_VALUE) + end + end + else + self:SetTriggerDelta(0) + self:SetBurstRounds(0) + end +end + +function SWEP:LauncherTriggerLogic() + if (CLIENT && game.SinglePlayer()) then + return + end + + if (self.Trigger == nil || !self:CanPressTrigger()) then + if (self:HasFlag("HoldingTrigger")) then + if (self.Trigger.ReleasedSound != nil) then + self:EmitSound(self.Trigger.ReleasedSound) + end + end + + self:RemoveFlag("HoldingTrigger") + + if (CurTime() > self:GetNextPrimaryFire() && self:HasFlag("Rechambered")) then + self:SetTriggerDelta(0) + end + + return + end + + local bDown = self:GetOwner():KeyDown(IN_ATTACK) + + if (bDown && CurTime() >= self:GetNextPrimaryFire()) then + if (!self:HasFlag("HoldingTrigger")) then + if (self.Trigger.PressedSound != nil) then + self:EmitSound(self.Trigger.PressedSound) + end + + --self:PlayViewModelAnimation(self.Trigger.PressedAnimation || "Land") + end + + self:AddFlag("HoldingTrigger") + self:RemoveFlag("Lowered") + elseif (!bDown && self:CanReleaseTrigger()) then + if (self:HasFlag("HoldingTrigger")) then + if (self.Trigger.ReleasedSound != nil) then + self:EmitSound(self.Trigger.ReleasedSound) + end + + if (self.Trigger.ReleasedAnimation != nil && self:CanPlayTriggerOut()) then + self:PlayViewModelAnimation(self.Trigger.ReleasedAnimation) + end + end + + self:RemoveFlag("HoldingTrigger") + end + + if (self:HasFlag("HoldingTrigger")) then + if (self:GetTriggerDelta() == INVALID_TRIGGER_VALUE) then + return + end + + self:SetTriggerDelta(math.min(self:GetTriggerDelta() + (FrameTime() / self.Trigger.Time), 1)) + + if (self:GetTriggerDelta() >= 1) then + self:PrimaryAttack() + + --if (!self.Primary.Automatic && (self:GetBurstRounds() >= self.Primary.BurstRounds || self:Clip1() <= 0)) then + --self:SetTriggerDelta(INVALID_TRIGGER_VALUE) + --end + end + else + self:SetTriggerDelta(0) + self:SetBurstRounds(0) + end +end \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_akilo47.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_akilo47.lua new file mode 100644 index 0000000..25ebe55 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_akilo47.lua @@ -0,0 +1,474 @@ + +--- Akilo47 --- +sound.Add({ + name = "mw19.akilo47.fire", + channel = CHAN_WEAPON +1, + level = 140, + volume = 1, + pitch = {90,110}, + sound = "^viper/weapons/akilo47/weap_akilo47_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.akilo47.fire.suppressed", + channel = CHAN_WEAPON +1, + level = 140, + volume = 1, + pitch = {90,110}, + sound = "^viper/weapons/akilo47/weap_akilo47_sup_plr_01.wav" +}) +sound.Add({ + name = "mw19.akilo47.smgcal.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/akilo47/weap_akilo47_smg_plr_01.ogg", + "viper/weapons/akilo47/weap_akilo47_smg_plr_02.ogg", + "viper/weapons/akilo47/weap_akilo47_smg_plr_03.ogg", + "viper/weapons/akilo47/weap_akilo47_smg_plr_04.ogg", + "viper/weapons/akilo47/weap_akilo47_smg_plr_05.ogg", + "viper/weapons/akilo47/weap_akilo47_smg_plr_06.ogg" + } +}) +sound.Add({ + name = "mw19.akilo47.fire.first", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/weap_akilo47_fire_first_plr_01.ogg", + "viper/weapons/akilo47/weap_akilo47_fire_first_plr_02.ogg", + "viper/weapons/akilo47/weap_akilo47_fire_first_plr_03.ogg", + "viper/weapons/akilo47/weap_akilo47_fire_first_plr_04.ogg", + "viper/weapons/akilo47/weap_akilo47_fire_first_plr_05.ogg", + "viper/weapons/akilo47/weap_akilo47_fire_first_plr_06.ogg" + } +}) +sound.Add({ + name = "mw19.akilo47.fire.disconnector", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/weap_akilo47_disconnector_plr_01.ogg", + "viper/weapons/akilo47/weap_akilo47_disconnector_plr_02.ogg", + "viper/weapons/akilo47/weap_akilo47_disconnector_plr_03.ogg", + "viper/weapons/akilo47/weap_akilo47_disconnector_plr_04.ogg", + "viper/weapons/akilo47/weap_akilo47_disconnector_plr_05.ogg", + "viper/weapons/akilo47/weap_akilo47_disconnector_plr_06.ogg" + } +}) + + + +sound.Add({ + name = "weap_akilo47_selector_off", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/weap_akilo47_selector_off.ogg"} +}) +sound.Add({ + name = "weap_akilo47_selector_on", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/weap_akilo47_selector_on.ogg"} +}) + + + +sound.Add({ + name = "weap_ar_akilo47_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_akilo47_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_ads_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_akilo47_inspect_01", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_ak47_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_inspect_02", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_ak47_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_inspect_03", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_ak47_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_inspect_04", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_ak47_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_inspect_05", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_ak47_inspect_05.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_akilo47_drop_01", + channel = CHAN_WPNFOLEY +22, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drop.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_raise_01", + channel = CHAN_WPNFOLEY +23, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_raise.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_ar_akilo47_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_raise_first_chamber_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_grab.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_click.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_fast_twist.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_fast_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_fast_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_fast_magout_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_twist.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_maghit_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_magmvmnt_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_chamber_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_fast_twist.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_maghit_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_fast_chamber_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_reload_empty_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_grabmag.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_twist.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_fast_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_fast_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_fast_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_rise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_chamber_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_fast_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_fast_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_fast_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_fast_chamber_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_akilo47_drum_reload_empty_fast_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_drum_reload_empty_fast_end.ogg"} +}) + + diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_anovember94.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_anovember94.lua new file mode 100644 index 0000000..6a3cc5c --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_anovember94.lua @@ -0,0 +1,696 @@ +AddCSLuaFile() + + +---Galima--- +sound.Add({ + name = "mw19.anovember94.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/anovember94/weap_anov94_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.anovember94.fire.s", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/anovember94/weap_anov94_fire_sup_plr_01.waV" +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_drop_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_drop.ogg"} +}) + +sound.Add({ + name = "weap_ar_anovember94_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_anovember94_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_ads_down.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_anovember94_selectsemi_off_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_selectsemi_off.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_selectsemi_on_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_selectsemi_on.ogg"} +}) + + + +sound.Add({ + name = "mw19.anovember94.disconnector", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/anovember94/weap_anov94_disconnector_plr_02.ogg", + "viper/weapons/anovember94/weap_anov94_disconnector_plr_02.ogg", + "viper/weapons/anovember94/weap_anov94_disconnector_plr_03.ogg", + "viper/weapons/anovember94/weap_anov94_disconnector_plr_04.ogg", + "viper/weapons/anovember94/weap_anov94_disconnector_plr_05.ogg" + } +}) +sound.Add({ + name = "mw19.anovember94.fire.first", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/anovember94/weap_anov94_fire_first_plr_mech_01.ogg", + "viper/weapons/anovember94/weap_anov94_fire_first_plr_mech_02.ogg", + "viper/weapons/anovember94/weap_anov94_fire_first_plr_mech_03.ogg", + "viper/weapons/anovember94/weap_anov94_fire_first_plr_mech_04.ogg", + "viper/weapons/anovember94/weap_anov94_fire_first_plr_mech_05.ogg", + "viper/weapons/anovember94/weap_anov94_fire_first_plr_mech_06.ogg" + } +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_inspect_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_inspect_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_inspect_roll.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_inspect_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_inspect_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_first_raise_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_first_raise_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_first_raise_grabbolt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_raise_first_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_first_raise_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_raise_first_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_first_raise_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_raise_first_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_first_raise_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_armdown.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmags_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmags_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmags_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmags_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmags_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmags_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmags_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmags_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmags_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmags_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmags_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmags_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_xmags_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_xmags_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_xmags_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_xmags_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_xmags_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_xmags_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_xmags_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_xmags_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_xmags_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_xmags_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_end.ogg"} +}) + + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmagslrg_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmagslrg_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmagslrg_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmagslrg_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmagslrg_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmagslrg_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmagslrg_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmagslrg_armup.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmagslrg_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmaglrg_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmagslrg_055", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmaglrg_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_xmagslrg_06", + channel = CHAN_WPNFOLEY +67, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_xmagslrg_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_xmagslrg_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_xmagslrg_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_xmagslrg_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_xmagslrg_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_xmagslrg_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_xmagslrg_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_xmagslrg_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_xmagslrg_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_fast_xmagslrg_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_fast_xmagslrg_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmags_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmags_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmags_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmags_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmags_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmags_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmags_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmags_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmags_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmags_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmags_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmags_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmags_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmags_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmags_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmags_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmags_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmags_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmags_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmags_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmags_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmags_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmags_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmags_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmags_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmags_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmags_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmags_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmags_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmags_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmags_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmags_end.ogg"} +}) + + + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmagslrg_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmagslrg_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmagslrg_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmagslrg_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmagslrg_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmagslrg_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmagslrg_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmagslrg_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmagslrg_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmagslrg_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmagslrg_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmagslrg_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmagslrg_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmagslrg_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_xmagslrg_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_xmagslrg_end.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmagslrg_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmagslrg_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmagslrg_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmagslrg_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmagslrg_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmagslrg_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmagslrg_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_anovember94_reload_empty_fast_xmagslrg_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/anovember94/wfoly_ar_anovember94_reload_empty_fast_xmagslrg_end.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_asierra12.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_asierra12.lua new file mode 100644 index 0000000..53a823d --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_asierra12.lua @@ -0,0 +1,304 @@ + +--- Asierra12 --- +sound.Add({ + name = "mw19.asierra12.fire", + channel = CHAN_WEAPON +1, + level = 140, + volume = 1, + pitch = {90,110}, + sound = "^viper/weapons/asierra12/weap_ash12_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.asierra12.fire.suppressed", + channel = CHAN_WEAPON +1, + level = 140, + volume = 1, + pitch = {90,110}, + sound = "^viper/weapons/asierra12/weap_ash12_sup_plr_01.wav" +}) + + + +sound.Add({ + name = "weap_ar_asierra12_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_asierra12_ads_down", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_ads_down.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_asierra12_raise_01", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_drop_01", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_drop.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_raise_first_01", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_raise_first_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_raise_first_02", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_raise_first_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_raise_first_03", + channel = CHAN_WPNFOLEY +22, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_raise_first_end.ogg"} +}) + + +sound.Add({ + name = "weap_ar_asierra12_selector_off", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/asierra12/weap_ar_asierra12_selector_off.ogg"} +}) +sound.Add({ + name = "weap_ar_asierra12_selector_on", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/asierra12/weap_ar_asierra12_selector_on.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_asierra12_inspect_01", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_inspect_02", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_inspect_03", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_inspect_04", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_inspect_05", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_inspect_05.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_end.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_rotate.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_fast_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_fast_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_magfly_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_armmag.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_055", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_armup.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_08", + channel = CHAN_WPNFOLEY +9, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_fast_magfly_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_fast_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_fast_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_fast_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_fast_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_fast_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_fast_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_asierra12_reload_empty_fast_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/asierra12/wfoly_ar_asierra12_reload_empty_fast_end.ogg"} +}) diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_falima.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_falima.lua new file mode 100644 index 0000000..9de77e4 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_falima.lua @@ -0,0 +1,717 @@ + +--- Falima --- +sound.Add({ + name = "mw19.falima.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {90,110}, + sound = "^viper/weapons/falima/weap_falima_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.falima.fire.suppressed", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {90,110}, + sound = "^viper/weapons/falima/weap_falima_sup_plr_01.wav" +}) +sound.Add({ + name = "mw19.falima.fire.first", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falima/weap_falima_fire_first_plr_01.ogg", + "viper/weapons/falima/weap_falima_fire_first_plr_02.ogg", + "viper/weapons/falima/weap_falima_fire_first_plr_03.ogg", + "viper/weapons/falima/weap_falima_fire_first_plr_04.ogg", + "viper/weapons/falima/weap_falima_fire_first_plr_05.ogg", + "viper/weapons/falima/weap_falima_fire_first_plr_06.ogg" + } +}) +sound.Add({ + name = "mw19.falima.fire.disconnector", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falima/weap_falima_disconnector_plr_01.ogg", + "viper/weapons/falima/weap_falima_disconnector_plr_02.ogg", + "viper/weapons/falima/weap_falima_disconnector_plr_03.ogg", + "viper/weapons/falima/weap_falima_disconnector_plr_04.ogg", + "viper/weapons/falima/weap_falima_disconnector_plr_05.ogg", + "viper/weapons/falima/weap_falima_disconnector_plr_06.ogg" + } +}) +sound.Add({ + name = "mw19.falima.fire.last", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/falima/weap_falima_fire_last_plr_mech_01.ogg", + "viper/weapons/falima/weap_falima_fire_last_plr_mech_02.ogg", + "viper/weapons/falima/weap_falima_fire_last_plr_mech_03.ogg", + "viper/weapons/falima/weap_falima_fire_last_plr_mech_04.ogg" + } +}) + + + +sound.Add({ + name = "weap_ar_falima_selector_off", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falima/weap_ar_falima_selector_off.ogg"} +}) +sound.Add({ + name = "weap_ar_falima_selector_on", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falima/weap_ar_falima_selector_on.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falima_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_raise_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_raise_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_raise_settle.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_drop_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_drop_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falima_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_raise_first_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_raise_first_cloth.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_raise_first_boltopen_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_raise_first_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_raise_first_boltclosed_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_raise_first_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falima_inspect_01", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/falima/wfoly_ar_falima_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_inspect_02", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/falima/wfoly_ar_falima_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_inspect_03", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/falima/wfoly_ar_falima_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_inspect_04", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/falima/wfoly_ar_falima_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_inspect_05", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/falima/wfoly_ar_falima_inspect_05.ogg"} +}) + + + +sound.Add({ + name = "weap_ar_falima_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/falima/weap_ar_falima_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_falima_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/falima/weap_ar_falima_ads_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falima_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_elbow.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_055", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_rattle.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_shake.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_065", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_elbow.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_08", + channel = CHAN_WPNFOLEY +9, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_boltopen_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_09", + channel = CHAN_WPNFOLEY +10, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_end.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_10", + channel = CHAN_WPNFOLEY +11, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_boltclose_01.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_grabmag.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_dropmag.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_elbow.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_075", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_08", + channel = CHAN_WPNFOLEY +9, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_09", + channel = CHAN_WPNFOLEY +10, + volume = 1, + sound = {"viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_end.ogg"} +}) + +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_xmag_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_xmag_dropmag.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_xmag_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_xmag_055", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_xmag_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_xmag_charge_01.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_xmag_07", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_xmag_end.ogg", + } +}) +-- Sound: 110 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_xmag_start.ogg", + } +}) +-- Sound: 111 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_xmag_rotate.ogg", + } +}) +-- Sound: 112 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_xmag_magout_01.ogg", + } +}) +-- Sound: 113 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_xmag_dropmag.ogg", + } +}) +-- Sound: 114 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_xmag_arm.ogg", + } +}) +-- Sound: 115 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 116 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_xmag_065", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 117 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_xmag_07", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_xmag_rattle.ogg", + } +}) +-- Sound: 118 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_xmag_08", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_xmag_charge_01.ogg", + } +}) +-- Sound: 119 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_xmag_09", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_xmag_end.ogg", + } +}) + +-- Sound: 126 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_xmag_start.ogg", + } +}) +-- Sound: 127 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_xmag_magout_01.ogg", + } +}) +-- Sound: 128 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_xmag_rattle.ogg", + } +}) +-- Sound: 129 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 130 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_xmag_045", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 131 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_fast_xmag_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_fast_xmag_end.ogg", + } +}) +-- Sound: 132 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_xmag_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_xmag_start.ogg", + } +}) +-- Sound: 133 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_xmag_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_xmag_magout_01.ogg", + } +}) +-- Sound: 134 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_xmag_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_xmag_rattle.ogg", + } +}) +-- Sound: 135 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_xmag_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 136 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_xmag_045", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 137 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_xmag_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_xmag_end.ogg", + } +}) + +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_xmag_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_xmag_start.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_xmag_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_xmag_rotate.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_ar_falima_reload_empty_fast_xmag_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falima/wfoly_plr_ar_falima_reload_empty_fast_xmag_magout_01.ogg", + } +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_falpha.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_falpha.lua new file mode 100644 index 0000000..e5e8349 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_falpha.lua @@ -0,0 +1,407 @@ + +--- Falpha --- +sound.Add({ + name = "mw19.falpha.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {90,110}, + sound = "^viper/weapons/falpha/weap_famas_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.falpha.fire.s", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {90,110}, + sound = "^viper/weapons/falpha/weap_famas_sup_plr_01.ogg" +}) + + + +sound.Add({ + name = "weap_falpha_selector_on", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falpha/weap_falpha_selector_off.ogg"} +}) +sound.Add({ + name = "weap_falpha_selector_off", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falpha/weap_falpha_selector_on.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falpha_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_drop_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_drop.ogg"} +}) + + + +sound.Add({ + name = "mw19.falpha.fire.first", + channel = CHAN_WEAPON, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/falpha/weap_falpha_fire_first_plr_01.ogg", + "viper/weapons/falpha/weap_falpha_fire_first_plr_02.ogg", + "viper/weapons/falpha/weap_falpha_fire_first_plr_03.ogg", + "viper/weapons/falpha/weap_falpha_fire_first_plr_04.ogg", + "viper/weapons/falpha/weap_falpha_fire_first_plr_05.ogg", + "viper/weapons/falpha/weap_falpha_fire_first_plr_06.ogg" + } +}) +sound.Add({ + name = "mw19.falpha.fire.disconnector", + channel = CHAN_WEAPON, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/falpha/weap_falpha_disconnector_plr_01.ogg", + "viper/weapons/falpha/weap_falpha_disconnector_plr_02.ogg", + "viper/weapons/falpha/weap_falpha_disconnector_plr_03.ogg", + "viper/weapons/falpha/weap_falpha_disconnector_plr_04.ogg", + "viper/weapons/falpha/weap_falpha_disconnector_plr_05.ogg", + "viper/weapons/falpha/weap_falpha_disconnector_plr_06.ogg" + } +}) + + + +sound.Add({ + name = "weap_ar_falpha_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/falpha/weap_ar_falpha_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_falpha_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/falpha/weap_ar_falpha_ads_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falpha_inspect_01", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_inspect_02", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_inspect_03", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_inspect_04", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_inspect_05", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_inspect_05.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falpha_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_raise_first.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_twist.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_maghit_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_fast_twist.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_fast_shake.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_fast_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_empty_twist.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_empty_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_empty_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_empty_chamber_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_empty_fast_twist.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_empty_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_empty_fast_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_empty_fast_lower.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_empty_fast_chamber_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_fast_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/falpha/wfoly_ar_falpha_reload_empty_fast_end.ogg"} +}) + +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_plr_ar_falpha_reload_empty_xmag_twist.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_plr_ar_falpha_reload_empty_xmag_cloth.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_plr_ar_falpha_reload_empty_xmag_magout_01.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_plr_ar_falpha_reload_empty_xmag_magin_01.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_plr_ar_falpha_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_ar_falpha_reload_empty_chamber_01.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_plr_ar_falpha_reload_empty_xmag_fast_twist.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_plr_ar_falpha_reload_empty_xmag_fast_cloth.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_plr_ar_falpha_reload_empty_xmag_fast_magout_01.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_fast_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_plr_ar_falpha_reload_empty_xmag_fast_magin_01.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_fast_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_ar_falpha_reload_empty_fast_chamber_01.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_ar_falpha_reload_empty_xmag_fast_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/falpha/wfoly_plr_ar_falpha_reload_empty_xmag_fast_end.ogg", + } +}) + + diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_g3a3.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_g3a3.lua new file mode 100644 index 0000000..4561447 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_g3a3.lua @@ -0,0 +1,289 @@ + +--- G3A3 --- +sound.Add({ + name = "mw19.g3a3.fire", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = {"viper/mw/weapons/g3a3/g3_close1_single.ogg", + "viper/mw/weapons/g3a3/g3_close2_single.ogg", + "viper/mw/weapons/g3a3/g3_close3_single.ogg", + "viper/mw/weapons/g3a3/g3_close4_single.ogg", + "viper/mw/weapons/g3a3/g3_close5_single.ogg", + "viper/mw/weapons/g3a3/g3_close6_single.ogg", +} +}) +sound.Add({ + name = "mw19.g3a3.fire.s", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = {"viper/mw/weapons/g3a3/weap_scharlie_sup_plr_01.ogg", + "viper/mw/weapons/g3a3/weap_scharlie_sup_plr_02.ogg", + "viper/mw/weapons/g3a3/weap_scharlie_sup_plr_03.ogg", + "viper/mw/weapons/g3a3/weap_scharlie_sup_plr_04.ogg", + "viper/mw/weapons/g3a3/weap_scharlie_sup_plr_05.ogg", + "viper/mw/weapons/g3a3/weap_scharlie_sup_plr_06.ogg" + } +}) + + + +sound.Add({ + name = "mw19.g3a3.semi.off", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/mw/weapons/g3a3/weap_kilo433_selector_off.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.semi.on", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/mw/weapons/g3a3/weap_kilo433_selector_on.ogg"} +}) + + + +sound.Add({ + name = "mw19.g3a3.raise", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_raise_start.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.raise.settle", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_raise_settle.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.raise", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_drop_down.ogg"} +}) + + + +sound.Add({ + name = "mw19.g3a3.ads.up", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/mw/weapons/g3a3/weap_ar_falima_ads_up.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.ads.down", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/mw/weapons/g3a3/weap_ar_falima_ads_down.ogg"} +}) + + + +sound.Add({ + name = "mw19.g3a3.inspect.1", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_ar_falima_inspect_01.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.inspect.2", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_ar_falima_inspect_02.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.inspect.3", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_ar_falima_inspect_03.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.inspect.4", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_ar_falima_inspect_04.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.inspect.5", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_ar_falima_inspect_05.ogg"} +}) + + + +sound.Add({ + name = "mw19.g3a3.reload.start", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_xmag_start.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.magout", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_xmag_magout_01.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.magin.1", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_xmag_magin_v2_01.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.magin.2", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_xmag_magin_v2_02.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.end", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "mw19.g3a3.reload.startF", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_fast_start.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.magoutF", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_fast_xmag_magout_01.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.magin.1F", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_fast_xmag_magin_v2_01.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.magin.2F", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_fast_xmag_magin_v2_02.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.bolt.slapF", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/mw/weapons/g3a3/G3_BoltPullReleaseSOH.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.endF", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_fast_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "mw19.g3a3.reload.start.empty", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_empty_xmag_start.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.bolt.charge", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/mw/weapons/g3a3/mp5-submachinegun-foley-bolt-chrage-1.ogg", + "viper/mw/weapons/g3a3/mp5-submachinegun-foley-bolt-chrage-2.ogg", + "viper/mw/weapons/g3a3/mp5-submachinegun-foley-bolt-chrage-3.ogg", + "viper/mw/weapons/g3a3/mp5-submachinegun-foley-bolt-chrage-4.ogg", +} +}) +sound.Add({ + name = "mw19.g3a3.reload.magout.empty", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_empty_xmag_magout_01.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.magin.1.empty", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_empty_xmag_magin_v2_01.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.magin.2.empty", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_empty_xmag_magin_v2_02.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.bolt.slap", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/mw/weapons/g3a3/G3_BoltPullRelease.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.end.empty", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_empty_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "mw19.g3a3.bolt.back", + channel = CHAN_WPNFOLEY +10, + volume = 1, + sound = {"viper/mw/weapons/g3a3/mp5-submachinegun-foley-bolt-lock-back-2.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.bolt.charge", + channel = CHAN_WPNFOLEY +11, + volume = 1, + sound = {"viper/mw/weapons/g3a3/mp5-submachinegun-foley-bolt-chrage-1.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.bolt.forward", + channel = CHAN_WPNFOLEY +12, + volume = 1, + sound = {"viper/mw/weapons/g3a3/mp5-submachinegun-foley-bolt-handle-slap-1.ogg", "viper/mw/weapons/g3a3/mp5-submachinegun-foley-bolt-handle-slap-2.ogg", "viper/mw/weapons/g3a3/mp5-submachinegun-foley-bolt-handle-slap-3.ogg"} +}) + + + +sound.Add({ + name = "mw19.g3a3.reload.start.emptyF", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_empty_fast_xmag_start.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.magout.emptyF", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_empty_fast_xmag_magout_01.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.magin.1.emptyF", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_empty_fast_xmag_magin_v2_01.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.magin.2.emptyF", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_empty_fast_xmag_magin_v2_02.ogg"} +}) +sound.Add({ + name = "mw19.g3a3.reload.end.emptyF", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/mw/weapons/g3a3/wfoly_plr_ar_falima_reload_empty_fast_xmag_end.ogg"} +}) + + diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_galima.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_galima.lua new file mode 100644 index 0000000..bbc7cd1 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_galima.lua @@ -0,0 +1,606 @@ +AddCSLuaFile() + + +---Galima--- +sound.Add({ + name = "mw19.galima.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/galima/weap_galima_fire_plr_01.wav" +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_drop_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_drop.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_fire_switch_off_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_fire_switch_off.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_fire_switch_on_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_fire_switch_on.ogg"} +}) + + + +sound.Add({ + name = "mw19.galima.fire.first", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/akilo47/weap_akilo47_fire_first_plr_01.ogg", + "viper/weapons/akilo47/weap_akilo47_fire_first_plr_02.ogg", + "viper/weapons/akilo47/weap_akilo47_fire_first_plr_03.ogg", + "viper/weapons/akilo47/weap_akilo47_fire_first_plr_04.ogg", + "viper/weapons/akilo47/weap_akilo47_fire_first_plr_05.ogg", + "viper/weapons/akilo47/weap_akilo47_fire_first_plr_06.ogg" + } +}) +sound.Add({ + name = "mw19.galima.fire.disconnector", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/akilo47/weap_akilo47_disconnector_plr_01.ogg", + "viper/weapons/akilo47/weap_akilo47_disconnector_plr_02.ogg", + "viper/weapons/akilo47/weap_akilo47_disconnector_plr_03.ogg", + "viper/weapons/akilo47/weap_akilo47_disconnector_plr_04.ogg", + "viper/weapons/akilo47/weap_akilo47_disconnector_plr_05.ogg", + "viper/weapons/akilo47/weap_akilo47_disconnector_plr_06.ogg" + } +}) + + + +sound.Add({ + name = "weap_ar_galima_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/kilo433/weap_ar_kilo433_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_galima_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/kilo433/weap_ar_kilo433_ads_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_inspect_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_inspect_05.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_raise_first_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_raise_first_bolt_pull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_raise_first_bolt_forward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_raise_first_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_fast_magcatch.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_fast_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_fast_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_fast_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_empty_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_empty_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_empty_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_empty_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_empty_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_empty_fast_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_smags_empty_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_smags_empty_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_maggrab.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_fast_magrelease.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_fast_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_fast_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_055", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_fast_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_fast_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_galima_reload_xmags_empty_fast_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/galima/wfoly_ar_galima_reload_xmags_empty_fast_end.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_kilo433.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_kilo433.lua new file mode 100644 index 0000000..5198a81 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_kilo433.lua @@ -0,0 +1,533 @@ +--- Kilo433 --- +sound.Add({ + name = "mw19_kilo433.Fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/kilo433/weap_kilo433_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19_kilo433.fire.s", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/kilo433/weap_kilo433_sup_plr_01.wav" +}) + +sound.Add({ + name = "mw19.kilo433.fire.first", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo433/weap_kilo433_fire_first_plr_01.ogg", + "viper/weapons/kilo433/weap_kilo433_fire_first_plr_02.ogg", + "viper/weapons/kilo433/weap_kilo433_fire_first_plr_03.ogg", + "viper/weapons/kilo433/weap_kilo433_fire_first_plr_04.ogg", + "viper/weapons/kilo433/weap_kilo433_fire_first_plr_05.ogg", + "viper/weapons/kilo433/weap_kilo433_fire_first_plr_06.ogg" + } +}) +sound.Add({ + name = "mw19.kilo433.fire.disconnector", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo433/weap_kilo433_disconnector_plr_01.ogg", + "viper/weapons/kilo433/weap_kilo433_disconnector_plr_02.ogg", + "viper/weapons/kilo433/weap_kilo433_disconnector_plr_03.ogg", + "viper/weapons/kilo433/weap_kilo433_disconnector_plr_04.ogg", + "viper/weapons/kilo433/weap_kilo433_disconnector_plr_05.ogg", + "viper/weapons/kilo433/weap_kilo433_disconnector_plr_06.ogg" + } +}) + +sound.Add({ + name = "mw19_kilo433.fire.last", + channel = CHAN_WEAPON +1, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/kilo433/weap_kilo433_fire_last_plr_mech_01.ogg"} +}) + + + +sound.Add({ + name = "weap_ar_kilo433_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/kilo433/weap_ar_kilo433_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_kilo433_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/kilo433/weap_ar_kilo433_ads_down.ogg"} +}) + + + +sound.Add({ + name = "weap_kilo433_selector_off", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo433/weap_kilo433_selector_off.ogg"} +}) +sound.Add({ + name = "weap_kilo433_selector_on", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo433/weap_kilo433_selector_on.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_kilo433_raise_01", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_raise_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_drop_01", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_drop_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_kilo433_raise_first_01", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_raise_first_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_raise_first_02", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_raise_first_open_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_raise_first_03", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_raise_first_close_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_raise_first_04", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_kilo433_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_ar_kilo433_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_ar_kilo433_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_ar_kilo433_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_ar_kilo433_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_inspect_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_ar_kilo433_inspect_05.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_settle.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_055", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_rattle.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_fast_01", + channel = CHAN_WPNFOLEY +10, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_fast_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_fast_02", + channel = CHAN_WPNFOLEY +11, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_fast_03", + channel = CHAN_WPNFOLEY +12, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_fast_tilt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_fast_04", + channel = CHAN_WPNFOLEY +13, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_fast_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_fast_05", + channel = CHAN_WPNFOLEY +14, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_fast_shove.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_fast_06", + channel = CHAN_WPNFOLEY +15, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_start.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_drumout_01.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_empty_grab.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_empty_drumin_v2_01.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_empty_drumin_v2_02.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_hit.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_grab.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_tilt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_reach.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_fast_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_fast_tilt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_fast_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_fast_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_fast_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_fast_shove.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_fast_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_fast_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_empty_fast_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_empty_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_empty_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_empty_drumout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_empty_grab.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_empty_drumin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_empty_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_empty_drumin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_empty_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_sh_oscar12_raise_first_end.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_empty_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_empty_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_empty_end.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_empty_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_empty_settle.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_empty_drumout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_empty_grab.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_empty_drumin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_empty_055", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_empty_drumin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_empty_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_kilo433_reload_drum_fast_empty_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/kilo433/wfoly_plr_ar_kilo433_reload_drum_fast_empty_end.ogg"} +}) + + diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_mcharlie.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_mcharlie.lua new file mode 100644 index 0000000..46bf2d0 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_mcharlie.lua @@ -0,0 +1,448 @@ + +-- MCharlie -- + +sound.Add({ + name = "mw19_mcharlie.Fire", + channel = CHAN_WEAPON +1, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/mcharlie/weap_mcharlie_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.mcharlie.fire.first", + channel = CHAN_WPNFOLEY +1, + level = 140, + volume = 1, + sound = {"viper/weapons/mcharlie/weap_mcharlie_fire_first_plr_01.ogg", + "viper/weapons/mcharlie/weap_mcharlie_fire_first_plr_02.ogg", + "viper/weapons/mcharlie/weap_mcharlie_fire_first_plr_03.ogg", + "viper/weapons/mcharlie/weap_mcharlie_fire_first_plr_04.ogg" + } +}) +sound.Add({ + name = "mw19_mcharlie.fire.last", + channel = CHAN_WEAPON +1, + volume = 1, + sound = {"viper/weapons/mcharlie/weap_mcharlie_fire_last_plr_mech.ogg"} +}) + +sound.Add({ + name = "mw19_mcharlie.fire.s", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/mcharlie/weap_mcharlie_sup_plr_01.wav" +}) + +sound.Add({ + name = "mw19_mcharlie.Fire.cal", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,94}, + sound = "^viper/weapons/mcharlie/weap_mcharlie_sub_plr_01.wav" +}) + +sound.Add({ + name = "wfoly_plr_ar_mcharlie_drop_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_drop.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_raise_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_raise.ogg"} +}) + +sound.Add({ + name = "weap_ar_mcharlie_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/mcharlie/weap_ar_mcharlie_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_mcharlie_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/mcharlie/weap_ar_mcharlie_ads_down.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_end.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_magin_v2_02.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_end.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_bolt_release.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_mcharlie_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_raise_first_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_raise_first_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_raise_first_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_raise_first_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_raise_first_end.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_fast_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_fast_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_fast_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_fast_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_fast_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_fast_rattle.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_fast_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_fast_end.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_fast_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_fast_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_fast_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_fast_end.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_reload_empty_fast_bolt_release_01.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_end.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_fast_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_fast_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_fast_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_fast_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_fast_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_fast_end.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_empty_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_empty_settle.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_empty_bolt_release.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_empty_end.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_empty_fast_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_xmag_reload_end.ogg"} +}) + +sound.Add({ + name = "weap_ar_mcharlie_selector_on", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/weap_ar_mcharlie_selector_on.ogg"} +}) + +sound.Add({ + name = "weap_ar_mcharlie_selector_off", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mcharlie/weap_ar_mcharlie_selector_off.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_ar_mcharlie_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_mcharlie_inspect_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mcharlie/wfoly_ar_mcharlie_inspect_05.ogg"} +}) diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_mike4.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_mike4.lua new file mode 100644 index 0000000..3d5ac42 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_mike4.lua @@ -0,0 +1,664 @@ + +-- Mike4 -- +sound.Add({ + name = "mw19.mike4.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + sound = "^viper/weapons/mike4/weap_mike4_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.mike4.fire.s", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + sound = "^viper/weapons/mike4/weap_mike4_sup_plr_01.wav" +}) + + + +sound.Add({ + name = "mw19.mike4.fire.disconnector", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike4/weap_mike4_fire_plr_disconnector_01.ogg", + "viper/weapons/mike4/weap_mike4_fire_plr_disconnector_02.ogg", + "viper/weapons/mike4/weap_mike4_fire_plr_disconnector_03.ogg", + "viper/weapons/mike4/weap_mike4_fire_plr_disconnector_04.ogg", + "viper/weapons/mike4/weap_mike4_fire_plr_disconnector_05.ogg", + "viper/weapons/mike4/weap_mike4_fire_plr_disconnector_06.ogg" + } +}) +sound.Add({ + name = "mw19.mike4.fire.first", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike4/weap_mike4_fire_dryfire_plr_01.ogg", + "viper/weapons/mike4/weap_mike4_fire_dryfire_plr_02.ogg", + "viper/weapons/mike4/weap_mike4_fire_dryfire_plr_03.ogg", + "viper/weapons/mike4/weap_mike4_fire_dryfire_plr_04.ogg", + "viper/weapons/mike4/weap_mike4_fire_dryfire_plr_05.ogg", + "viper/weapons/mike4/weap_mike4_fire_dryfire_plr_06.ogg" + } +}) + + + +sound.Add({ + name = "mw19.mike4.fire.last", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/mike4/weap_mike4_fire_last_plr_mech_01.ogg", + "viper/weapons/mike4/weap_mike4_fire_last_plr_mech_02.ogg", + "viper/weapons/mike4/weap_mike4_fire_last_plr_mech_03.ogg" + } +}) + + + +sound.Add({ + name = "weap_ar_mike4_ads_up", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/mike4/wfoly_ar_mike4_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_mike4_ads_down", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/mike4/wfoly_ar_mike4_ads_down.ogg"} +}) + + + +sound.Add({ + name = "weap_ar_mike4_selector_off", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/mike4/weap_m4_selector_semi_on_01.ogg"} +}) +sound.Add({ + name = "weap_ar_mike4_selector_on", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/mike4/weap_m4_selector_semi_on_03.ogg"} +}) + + + +sound.Add({ + name = "wfoly_ar_mike4_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike4/wfoly_ar_mike4_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_ar_mike4_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike4/wfoly_ar_mike4_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_ar_mike4_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike4/wfoly_ar_mike4_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_ar_mike4_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike4/wfoly_ar_mike4_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_ar_mike4_inspect_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike4/wfoly_ar_mike4_inspect_05.ogg"} +}) + + + +sound.Add({ + name = "weap_mike4_raise_plr", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/mike4/wpfoly_mike4_raise_v2.ogg"} +}) +sound.Add({ + name = "weap_mike4_drop_plr", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/mike4/wpfoly_mike4_drop_v2.ogg"} +}) + + + +sound.Add({ + name = "weap_mike4_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike4/wpfoly_mike4_raise_first_01.ogg"} +}) +sound.Add({ + name = "weap_mike4_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike4/wpfoly_mike4_raise_first_02.ogg"} +}) +sound.Add({ + name = "weap_mike4_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike4/wpfoly_mike4_raise_first_03.ogg"} +}) + + + + +-- Sound: 38 +sound.Add({ + name = "weap_mike4_reload_empty_chamber_plr", + channel = CHAN_WPNFOLEY + 9, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_empty_chamber_v2.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "weap_mike4_reload_empty_end_plr", + channel = CHAN_WPNFOLEY + 10, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_empty_end_v2.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "weap_mike4_reload_empty_fast_chamber_plr", + channel = CHAN_WPNFOLEY + 1, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_empty_fast_chamber_v2.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "weap_mike4_reload_empty_fast_end_plr", + channel = CHAN_WPNFOLEY + 2, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_empty_fast_end_v2.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "weap_mike4_reload_empty_fast_lift_plr", + channel = CHAN_WPNFOLEY + 3, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_empty_fast_lift_v2.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "weap_mike4_reload_empty_fast_magin_plr", + channel = CHAN_WPNFOLEY + 4, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_empty_fast_magin_v2.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "weap_mike4_reload_empty_fast_magout_plr", + channel = CHAN_WPNFOLEY + 5, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_empty_fast_magout_v2.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "weap_mike4_reload_empty_lift_plr", + channel = CHAN_WPNFOLEY + 6, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_empty_lift_v2.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "weap_mike4_reload_empty_magin_plr", + channel = CHAN_WPNFOLEY + 7, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "weap_mike4_reload_empty_magin_plr_02", + channel = CHAN_WPNFOLEY + 8, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "weap_mike4_reload_empty_magout_plr", + channel = CHAN_WPNFOLEY + 9, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_empty_magout_v2.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "weap_mike4_reload_end_plr", + channel = CHAN_WPNFOLEY + 10, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_end_v2.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "weap_mike4_reload_fast_end_plr", + channel = CHAN_WPNFOLEY + 1, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_fast_end_v2.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "weap_mike4_reload_fast_lift_plr", + channel = CHAN_WPNFOLEY + 2, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_fast_lift_v2.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "weap_mike4_reload_fast_magin_plr", + channel = CHAN_WPNFOLEY + 3, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_fast_magin_v2_01.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "weap_mike4_reload_fast_magin_plr_02", + channel = CHAN_WPNFOLEY + 4, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_fast_magin_v2_02.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "weap_mike4_reload_fast_magout_plr", + channel = CHAN_WPNFOLEY + 5, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_fast_magout_v2.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "weap_mike4_reload_lift_plr", + channel = CHAN_WPNFOLEY + 6, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_lift_v2.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "weap_mike4_reload_magin_plr", + channel = CHAN_WPNFOLEY + 7, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_magin_v2_01.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "weap_mike4_reload_magin_plr_02", + channel = CHAN_WPNFOLEY + 8, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_magin_v2_02.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "weap_mike4_reload_magout_plr", + channel = CHAN_WPNFOLEY + 9, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_magout_v2.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_ar_mike4_gl_drop", + channel = CHAN_WPNFOLEY + 10, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_drop.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_ar_mike4_gl_fromgrenade", + channel = CHAN_WPNFOLEY + 1, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_fromgrenade.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_ar_mike4_gl_raise", + channel = CHAN_WPNFOLEY + 2, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_raise.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_01", + channel = CHAN_WPNFOLEY + 3, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_raise.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_02", + channel = CHAN_WPNFOLEY + 4, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_open_01.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_03", + channel = CHAN_WPNFOLEY + 5, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_shellout_01.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_04", + channel = CHAN_WPNFOLEY + 6, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_shellin_01.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_05", + channel = CHAN_WPNFOLEY + 7, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_close_01.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_06", + channel = CHAN_WPNFOLEY + 8, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_end.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_fast_01", + channel = CHAN_WPNFOLEY + 9, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_fast_raise.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_fast_02", + channel = CHAN_WPNFOLEY + 10, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_fast_open_01.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_fast_03", + channel = CHAN_WPNFOLEY + 1, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_fast_shellout_01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_fast_04", + channel = CHAN_WPNFOLEY + 2, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_fast_shellin_01.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_fast_05", + channel = CHAN_WPNFOLEY + 3, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_fast_close_01.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_ar_mike4_gl_reload_fast_06", + channel = CHAN_WPNFOLEY + 4, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_reload_fast_end.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_ar_mike4_gl_togrenade", + channel = CHAN_WPNFOLEY + 5, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_gl_togrenade.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_ar_mike4_inspect_01", + channel = CHAN_WPNFOLEY + 6, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_inspect_01.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_ar_mike4_inspect_02", + channel = CHAN_WPNFOLEY + 7, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_inspect_02.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_ar_mike4_inspect_03", + channel = CHAN_WPNFOLEY + 8, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_inspect_03.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_ar_mike4_inspect_04", + channel = CHAN_WPNFOLEY + 9, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_inspect_04.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_ar_mike4_inspect_05", + channel = CHAN_WPNFOLEY + 10, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_inspect_05.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_ar_mike4_reload_empty_xmag_in", + channel = CHAN_WPNFOLEY + 1, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_reload_empty_xmag_magin_01.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_ar_mike4_reload_empty_xmag_out", + channel = CHAN_WPNFOLEY + 2, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_reload_empty_xmag_magout_01.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_ar_mike4_reload_xmag_in", + channel = CHAN_WPNFOLEY + 3, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wfoly_ar_mike4_reload_magin_01.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_ar_mike4_reload_xmag_out", + channel = CHAN_WPNFOLEY + 4, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/mike4/wpfoly_mike4_reload_magout_v2.ogg", + } +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_scharlie.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_scharlie.lua new file mode 100644 index 0000000..3f71b18 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_scharlie.lua @@ -0,0 +1,530 @@ +--- Scharlie --- +sound.Add({ + name = "mw19.scharlie.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {90,110}, + sound = "^viper/weapons/scharlie/weap_scharlie_fire_plr_01.wav" +}) + +sound.Add({ + name = "mw19.scharlie.fire.s", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/scharlie/weap_scharlie_sup_plr_01.ogg", + "viper/weapons/scharlie/weap_scharlie_sup_plr_02.ogg", + "viper/weapons/scharlie/weap_scharlie_sup_plr_03.ogg", + "viper/weapons/scharlie/weap_scharlie_sup_plr_04.ogg", + "viper/weapons/scharlie/weap_scharlie_sup_plr_05.ogg", + "viper/weapons/scharlie/weap_scharlie_sup_plr_06.ogg" + } +}) + +sound.Add({ + name = "mw19.scharlie.fire.first", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/scharlie/weap_scharlie_fire_first_plr_01.ogg", + "viper/weapons/scharlie/weap_scharlie_fire_first_plr_02.ogg", + "viper/weapons/scharlie/weap_scharlie_fire_first_plr_03.ogg", + "viper/weapons/scharlie/weap_scharlie_fire_first_plr_04.ogg", + "viper/weapons/scharlie/weap_scharlie_fire_first_plr_05.ogg", + "viper/weapons/scharlie/weap_scharlie_fire_first_plr_06.ogg" + } +}) +sound.Add({ + name = "mw19.scharlie.disconnector", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/scharlie/weap_scharlie_disconnector_plr_01.ogg", + "viper/weapons/scharlie/weap_scharlie_disconnector_plr_02.ogg", + "viper/weapons/scharlie/weap_scharlie_disconnector_plr_03.ogg", + "viper/weapons/scharlie/weap_scharlie_disconnector_plr_04.ogg", + "viper/weapons/scharlie/weap_scharlie_disconnector_plr_05.ogg", + "viper/weapons/scharlie/weap_scharlie_disconnector_plr_06.ogg" + } +}) + +sound.Add({ + name = "weap_ar_scharlie_ads_up", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_scharlie_ads_down", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_ads_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_scharlie_drop_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_drop_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_raise_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_raise_movment.ogg"} +}) + + +sound.Add({ + name = "weap_scharlie_selector_on", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/scharlie/weap_scharlie_selector_on.ogg"} +}) +sound.Add({ + name = "weap_scharlie_selector_off", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/scharlie/weap_scharlie_selector_off.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_scharlie_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_raise_first_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_raise_first_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_scharlie_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_inspect_04.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_bolt_release.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_shake.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_empty_bolt_release.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/scharlie/wfoly_ar_scharlie_reload_end.ogg"} +}) + + +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_dmr_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_dmr_rotate.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_dmr_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_dmr_magout.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_dmr_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_dmr_magin_v2_01.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_dmr_035", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_dmr_magin_v2_02.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_dmr_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_dmr_down.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_dmr_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_dmr_end.ogg", + } +}) + +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_dmr_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_dmr_rotate.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_dmr_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_dmr_magout.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_dmr_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_dmr_magin_v2_01.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_dmr_035", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_dmr_magin_v2_02.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_dmr_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_dmr_bolt_release.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_dmr_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_empty_dmr_end.ogg", + } +}) + +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_dmr_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_empty_dmr_shake.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_dmr_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_empty_dmr_magout.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_dmr_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_empty_dmr_magin_v2_01.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_dmr_035", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_empty_dmr_magin_v2_02.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_dmr_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_empty_dmr_bolt_release.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_empty_fast_dmr_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_empty_dmr_end.ogg", + } +}) + +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_fast_dmr_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_dmr_magout.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_fast_dmr_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_dmr_magin_v2_01.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_fast_dmr_025", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_dmr_magin_v2_02.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_ar_scharlie_reload_fast_dmr_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "viper/weapons/scharlie/wfoly_ar_scharlie_reload_fast_dmr_end.ogg", + } +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_sierra552.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_sierra552.lua new file mode 100644 index 0000000..5dac342 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_sierra552.lua @@ -0,0 +1,595 @@ +AddCSLuaFile() + + +---Galima--- +sound.Add({ + name = "mw19.sierra552.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/sierra552/weap_sierra552_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.sierra552.fire.s", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/sierra552/weap_sierra552_sup_plr_01.wav" +}) + + + +sound.Add({ + name = "weap_ar_sierra552_ads_up", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/mike4/wfoly_ar_mike4_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_sierra552_ads_down", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/mike4/wfoly_ar_mike4_ads_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra552_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_drop_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_drop.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra552_fire_switch_off_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_fire_switch_off.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_fire_switch_on_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_fire_switch_on.ogg"} +}) + + + +sound.Add({ + name = "mw19.sierra552.disconnector", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/sierra552/weap_sierra552_disconnector_plr_02.ogg", + "viper/weapons/sierra552/weap_sierra552_disconnector_plr_02.ogg", + "viper/weapons/sierra552/weap_sierra552_disconnector_plr_03.ogg", + "viper/weapons/sierra552/weap_sierra552_disconnector_plr_04.ogg", + "viper/weapons/sierra552/weap_sierra552_disconnector_plr_05.ogg" + } +}) +sound.Add({ + name = "mw19.sierra552.fire.first", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/sierra552/weap_sierra552_hammer_plr_01.ogg", + "viper/weapons/sierra552/weap_sierra552_hammer_plr_02.ogg", + "viper/weapons/sierra552/weap_sierra552_hammer_plr_03.ogg", + "viper/weapons/sierra552/weap_sierra552_hammer_plr_04.ogg", + "viper/weapons/sierra552/weap_sierra552_hammer_plr_05.ogg", + "viper/weapons/sierra552/weap_sierra552_hammer_plr_06.ogg" + } +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra552_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_asierra552_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_asierra552_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_asierra552_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_asierra552_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_inspect_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_asierra552_inspect_05.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra552_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_raise_first_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_raise_first_bolt_release.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_fast_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra559_reload_mmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra559_reload_mmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra559_reload_mmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra559_reload_mmag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra559_reload_mmag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra553_reload_mmag_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_fast_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra553_reload_mmag_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra553_reload_mmag_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra553_reload_mmag_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_empty_roll.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_raise_first_bolt_release.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_empty_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_fast_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_empty_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_fast_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_empty_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_fast_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_empty_fast_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_fast_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_empty_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_fast_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_raise_first_bolt_release.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra552_reload_fast_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_empty_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra560_reload_mmag_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_empty_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra560_reload_mmag_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra560_reload_mmag_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra560_reload_mmag_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra560_reload_mmag_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_empty_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra560_reload_mmag_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra560_reload_mmag_empty_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_mmag_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra554_reload_mmag_fast_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_empty_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra554_reload_mmag_fast_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra554_reload_mmag_fast_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra554_reload_mmag_fast_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra554_reload_mmag_fast_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_raise_first_bolt_release.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra554_reload_mmag_fast_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra555_reload_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra555_reload_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra555_reload_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra555_reload_xmag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra555_reload_xmag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra555_reload_xmag_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_sierra557_reload_xmag_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra557_reload_xmag_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra557_reload_xmag_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra557_reload_xmag_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra557_reload_xmag_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_end.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_ar_sierra556_reload_xmag_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_empty_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra556_reload_xmag_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra556_reload_xmag_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra556_reload_xmag_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra556_reload_xmag_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_empty_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra556_reload_xmag_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_raise_first_bolt_release.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra556_reload_xmag_empty_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_empty_end.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_ar_sierra558_reload_xmag_fast_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_empty_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra558_reload_xmag_fast_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra558_reload_xmag_fast_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra558_reload_xmag_fast_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra558_reload_xmag_fast_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_raise_first_bolt_release.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_sierra558_reload_xmag_fast_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sierra552/wfoly_ar_sierra552_reload_xmag_fast_empty_end.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_tango21.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_tango21.lua new file mode 100644 index 0000000..c3abe5d --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_tango21.lua @@ -0,0 +1,445 @@ +AddCSLuaFile() + + +---Galima--- +sound.Add({ + name = "mw19.tango21.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/tango21/weap_tango21_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.tango21.fire.s", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/tango21/weap_tango21_sup_plr_01.wav" +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_drop_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_drop.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_selectsemi_off_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/weap_tango21_selector_off.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_selectsemi_on_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/weap_tango21_selector_on.ogg"} +}) + + + +sound.Add({ + name = "weap_ar_tango21_ads_up", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo433/weap_ar_kilo433_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_tango21_ads_down", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo433/weap_ar_kilo433_ads_down.ogg"} +}) + + + +sound.Add({ + name = "mw19.tango21.disconnector", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/tango21/weap_tango21_disconnector_plr_01.ogg", + "viper/weapons/tango21/weap_tango21_disconnector_plr_02.ogg", + "viper/weapons/tango21/weap_tango21_disconnector_plr_03.ogg", + "viper/weapons/tango21/weap_tango21_disconnector_plr_04.ogg", + "viper/weapons/tango21/weap_tango21_disconnector_plr_05.ogg" + } +}) +sound.Add({ + name = "mw19.tango21.fire.first", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/tango21/weap_tango21_fire_first_plr_01.ogg", + "viper/weapons/tango21/weap_tango21_fire_first_plr_02.ogg", + "viper/weapons/tango21/weap_tango21_fire_first_plr_03.ogg", + "viper/weapons/tango21/weap_tango21_fire_first_plr_04.ogg" + } +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_inspect_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_inspect_05.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_raise_first_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_raise_first_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_mag_hit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_fast_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_fast_magwellhit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_maghitwell.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_drmagin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_maghandhit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_fast_magwellhit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_fast_drmagin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_maghitwell.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_rotatemvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_08", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_09", + channel = CHAN_WPNFOLEY +9, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_fast_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_fast_bolt_forward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_empty_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_empty_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_empty_maghitwell.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_empty_drmagin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_empty_rotategrab.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_empty_fast_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_empty_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_mpty_fst_drmaghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_mpty_fst_drmagin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_tango21_reload_drum_empty_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/tango21/wfoly_ar_tango21_reload_drum_empty_fast_end.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_valpha.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_valpha.lua new file mode 100644 index 0000000..0bb8181 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ar_valpha.lua @@ -0,0 +1,761 @@ +AddCSLuaFile() + + +---Galima--- +sound.Add({ + name = "mw19.valpha.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/valpha/weap_valpha_sup_plr_01.wav" +}) + + + +sound.Add({ + name = "weap_ar_valpha_ads_up", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_ads_up.ogg"} +}) +sound.Add({ + name = "weap_ar_valpha_ads_down", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/akilo47/wfoly_ar_akilo47_ads_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_drop_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_drop.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_selectsemi_off_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_selectsemi_off_selector.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_selectsemi_off_02", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/weap_ar_mcharlie_selector_off.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_selectsemi_on_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_selectsemi_on_selector.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_selectsemi_on_02", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/weap_ar_mcharlie_selector_on.ogg"} +}) + + + +sound.Add({ + name = "mw19.valpha.disconnector", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/valpha/weap_valpha_disconnector_plr_01.ogg", + "viper/weapons/valpha/weap_valpha_disconnector_plr_02.ogg", + "viper/weapons/valpha/weap_valpha_disconnector_plr_03.ogg", + "viper/weapons/valpha/weap_valpha_disconnector_plr_04.ogg", + "viper/weapons/valpha/weap_valpha_disconnector_plr_05.ogg" + } +}) +sound.Add({ + name = "mw19.valpha.fire.first", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/valpha/weap_mcharlie_fire_first_plr_01.ogg", + "viper/weapons/valpha/weap_mcharlie_fire_first_plr_02.ogg", + "viper/weapons/valpha/weap_mcharlie_fire_first_plr_03.ogg", + "viper/weapons/valpha/weap_mcharlie_fire_first_plr_04.ogg" + } +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_magcatch.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_08", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_end.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_smag_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_smag_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_smag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_smag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_smag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_smag_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_smag_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_smag_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_smag_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_smag_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_smag_08", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_smag_end.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_xmag_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_xmag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_xmag_magcatch.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_xmag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_xmag_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_xmag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_xmag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_xmag_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_xmag_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_xmag_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_xmag_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_xmag_08", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_xmag_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_inspect_xmag_09", + channel = CHAN_WPNFOLEY +9, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_inspect_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_raise_first_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_raise_first_selector.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_magrelease.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_magdown.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_fast_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_fast_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_maggrab.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_fast_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_fast_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_fast_in.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_fast_05", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_maggrab.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_magdown.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_fast_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_fast_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_empty_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_empty_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_empty_grab_bolt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_empty_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_empty_08", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_fast_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_fast_empty_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_fast_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_fast_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_fast_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_fast_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_fast_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_fast_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_fast_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_fast_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_fast_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_fast_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_empty_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_empty_maggrab.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_empty_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_empty_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_empty_08", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_fast_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_fast_empty_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_fast_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_fast_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_fast_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_fast_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_fast_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_fast_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_fast_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_fast_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_smag_fast_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_smag_fast_empty_end.ogg"} +}) + + + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_empty_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_empty_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_empty_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_empty_end.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_fast_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_fast_empty_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_fast_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_fast_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_fast_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_fast_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_fast_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_fast_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_fast_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_fast_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_ar_valpha_reload_xmag_fast_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/valpha/wfoly_ar_valpha_reload_xmag_fast_empty_end.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_atmo.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_atmo.lua new file mode 100644 index 0000000..a8db69a --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_atmo.lua @@ -0,0 +1,413 @@ +AddCSLuaFile() +----------- OUTSIDE ------------ + +--- AR --- +sound.Add({ + name = "Atmo_AR.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/ar/weap_ar_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_AR_Sup.Outside", + channel = CHAN_ATMO, + level = 140, + volume = 1, + sound = "^viper/shared/atmo/ar/weap_ar_sup_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_AR2.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/ar/weap_ar2_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_AR2_Sup.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/ar/weap_ar2_sup_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_AR3.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/ar/weap_ar3_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_AR4.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/ar/weap_ar4_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_AR5.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/ar/weap_ar5_fire_plr_atmo_ext1_01.ogg" +}) + +sound.Add({ + name = "Atmo_AR6.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/ar/weap_ar6_fire_plr_atmo_ext1_01.ogg" +}) + +--- BR --- +sound.Add({ + name = "Atmo_br1.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/br/weap_br1_fire_plr_atmo_ext1_01.wav", +}) + +--- DMR --- +sound.Add({ + name = "Atmo_DMR.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/dmr/weap_dmr_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_DMR_Sup.Outside", + channel = CHAN_ATMO, + --level = 140, + volume = 1, + sound = "viper/shared/atmo/dmr/weap_dmr_sup_fire_plr_atmo_ext1_01.ogg" +}) + +--- LMG --- +sound.Add({ + name = "Atmo_LMG.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/lmg/weap_lmg_fire_plr_atmo_ext1_01.wav" +}) + +--- M203 --- +sound.Add({ + name = "Atmo_M203.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/launcher/weap_mike203_fire_plr_atmos_01.wav" +}) + +--- PISTOLS --- +sound.Add({ + name = "Atmo_Pistol.Outside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/pistol/weap_pistol_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_Pistol_Sup.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/pistol/weap_pistol_sup_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_Pistol_Mag.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/pistol/weap_pistol_mag_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_Pistol_Mag_Sup.Outside", + channel = CHAN_ATMO, + volume = 1, + pitch = {80,110}, + sound = {"viper/shared/atmo/pistol/weap_pistol_mag_sup_fire_plr_atmo_ext1_01.ogg", + "viper/shared/atmo/pistol/weap_pistol_mag_sup_fire_plr_atmo_ext1_02.ogg", + "viper/shared/atmo/pistol/weap_pistol_mag_sup_fire_plr_atmo_ext1_03.ogg", + "viper/shared/atmo/pistol/weap_pistol_mag_sup_fire_plr_atmo_ext1_04.ogg", + "viper/shared/atmo/pistol/weap_pistol_mag_sup_fire_plr_atmo_ext1_05.ogg", + "viper/shared/atmo/pistol/weap_pistol_mag_sup_fire_plr_atmo_ext1_06.ogg"} +}) + +sound.Add({ + name = "Atmo_Pistol_Mag2.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/pistol/weap_pistol_mag_fire_plr_atmo_ext2_01.wav" +}) + + +--- SHOTGUNS --- + +sound.Add({ + name = "Atmo_Shotgun.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/shotgun/weap_shotgun_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_Shotgun2.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/shotgun/weap_shotgunsup_fire_plr_atmo_ext1_01.wav" +}) + + +--- SMG's --- + +sound.Add({ + name = "Atmo_SMG.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/smg/weap_smg_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_SMG_Sup.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = {"viper/shared/atmo/smg/weap_smg_sup_fire_plr_atmo_ext1_01.ogg", + "viper/shared/atmo/smg/weap_smg_sup_fire_plr_atmo_ext1_02.ogg", + "viper/shared/atmo/smg/weap_smg_sup_fire_plr_atmo_ext1_03.ogg", + "viper/shared/atmo/smg/weap_smg_sup_fire_plr_atmo_ext1_04.ogg", + "viper/shared/atmo/smg/weap_smg_sup_fire_plr_atmo_ext1_05.ogg", + "viper/shared/atmo/smg/weap_smg_sup_fire_plr_atmo_ext1_06.ogg"} +}) + +sound.Add({ + name = "Atmo_SMG2.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/smg/weap_smg2_fire_plr_atmo_ext1_01.wav" +}) + +--- Snipers --- + +sound.Add({ + name = "Atmo_Sniper.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/sniper/weap_sniper_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_Sniper2.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/sniper/weap_sniper2_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_Sniper3.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/sniper/weap_sniper3_fire_plr_atmo_ext1_01.wav" +}) + +sound.Add({ + name = "Atmo_Sniper_Sup.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/sniper/weap_sniper_sup_fire_plr_atmo_ext1_01.wav" +}) + +--- Western --- +sound.Add({ + name = "Atmo_Western.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/western/weap_western_fire_plr_atmo_ext1_01.wav" +}) + +--- ROCKET LAUNCHERS --- + +sound.Add({ + name = "Atmo_RPG.Outside", + channel = CHAN_ATMO, + volume = 1, + level = 140, + pitch = {80,110}, + sound = "^viper/shared/atmo/launchers/weap_rpapa7_fire_plr_atmo_01.wav" +}) + +----------- ATMO INSIDE ------------ + +--- AR --- +sound.Add({ + name = "Atmo_AR.Inside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/AR/weap_ar_fire_plr_atmo_int1_01.wav" +}) + +sound.Add({ + name = "Atmo_AR_Sup.Inside", + channel = CHAN_ATMO, + pitch = {80,110}, + volume = 1, + sound = {"viper/shared/atmo/AR/weap_ar_sup_fire_plr_atmo_int1_01.ogg", + "viper/shared/atmo/AR/weap_ar_sup_fire_plr_atmo_int1_02.ogg", + "viper/shared/atmo/AR/weap_ar_sup_fire_plr_atmo_int1_03.ogg", + "viper/shared/atmo/AR/weap_ar_sup_fire_plr_atmo_int1_04.ogg", + "viper/shared/atmo/AR/weap_ar_sup_fire_plr_atmo_int1_05.ogg", + "viper/shared/atmo/AR/weap_ar_sup_fire_plr_atmo_int1_06.ogg"} +}) + +--- DMR --- +sound.Add({ + name = "Atmo_DMR_Sup.Inside", + channel = CHAN_ATMO, + pitch = {80,110}, + volume = 1, + sound = {"viper/shared/atmo/DMR/weap_dmr_sup_fire_plr_atmo_int1_01.ogg", + "viper/shared/atmo/DMR/weap_dmr_sup_fire_plr_atmo_int1_02.ogg", + "viper/shared/atmo/DMR/weap_dmr_sup_fire_plr_atmo_int1_03.ogg", + "viper/shared/atmo/DMR/weap_dmr_sup_fire_plr_atmo_int1_04.ogg", + "viper/shared/atmo/DMR/weap_dmr_sup_fire_plr_atmo_int1_05.ogg", + "viper/shared/atmo/DMR/weap_dmr_sup_fire_plr_atmo_int1_06.ogg"} +}) + +--- LMG --- +sound.Add({ + name = "Atmo_LMG.Inside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/lmg/weap_lmg_fire_plr_atmo_int1_01.wav" +}) + +--- M203 --- +sound.Add({ + name = "Atmo_Mike203.Inside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/launcher/weap_mike203_fire_plr_atmos_int1_01.ogg" +}) + +--- Pistol --- +sound.Add({ + name = "Atmo_Pistol.Inside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/pistol/weap_pistol_fire_plr_atmo_int1_01.wav" +}) + +sound.Add({ + name = "Atmo_Pistol_Sup.Inside", + channel = CHAN_ATMO, + pitch = {80,110}, + volume = 1, + sound = {"viper/shared/atmo/pistol/weap_pistol_sup_fire_plr_atmo_int1_01.ogg", + "viper/shared/atmo/pistol/weap_pistol_sup_fire_plr_atmo_int1_02.ogg", + "viper/shared/atmo/pistol/weap_pistol_sup_fire_plr_atmo_int1_03.ogg", + "viper/shared/atmo/pistol/weap_pistol_sup_fire_plr_atmo_int1_04.ogg", + "viper/shared/atmo/pistol/weap_pistol_sup_fire_plr_atmo_int1_05.ogg", + "viper/shared/atmo/pistol/weap_pistol_sup_fire_plr_atmo_int1_06.ogg"} +}) + +--- Shotguns --- +sound.Add({ + name = "Atmo_Shotgun.Inside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/shotgun/weap_shotgun_fire_plr_atmo_int1_01.wav" +}) +sound.Add({ + name = "Atmo_ShotgunSUP.Inside", + channel = CHAN_ATMO, + pitch = {80,110}, + volume = 1, + sound = {"viper/shared/atmo/shotgun/weap_shotgun_sup_fire_plr_atmo_int1_01.ogg", + "viper/shared/atmo/shotgun/weap_shotgun_sup_fire_plr_atmo_int1_02.ogg", + "viper/shared/atmo/shotgun/weap_shotgun_sup_fire_plr_atmo_int1_03.ogg", + "viper/shared/atmo/shotgun/weap_shotgun_sup_fire_plr_atmo_int1_04.ogg", + "viper/shared/atmo/shotgun/weap_shotgun_sup_fire_plr_atmo_int1_05.ogg", + "viper/shared/atmo/shotgun/weap_shotgun_sup_fire_plr_atmo_int1_06.ogg"} +}) + +--- SMG --- +sound.Add({ + name = "Atmo_SMG.Inside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = "^viper/shared/atmo/smg/weap_smg_fire_plr_atmo_int1_01.wav" +}) + +--- RPG --- +sound.Add({ + name = "Atmo_Launcher.Inside", + channel = CHAN_ATMO, + level = 140, + pitch = {80,110}, + volume = 1, + sound = {"viper/shared/atmo/launchers/weap_juliet_launch_atmo_int_01.ogg", + "viper/shared/atmo/launchers/weap_juliet_launch_atmo_int_02.ogg", + "viper/shared/atmo/launchers/weap_juliet_launch_atmo_int_03.ogg"} +}) diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_casings.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_casings.lua new file mode 100644 index 0000000..852f1b5 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_casings.lua @@ -0,0 +1,938 @@ +AddCSLuaFile() + +local casingsVolume = 0.5 + +sound.Add({ + name = "MW_Casings.9mm.carpet", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/9mm/blt_case_bounce_9_carpet_01.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_carpet_02.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_carpet_03.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_carpet_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.9mm.cement", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/9mm/blt_case_bounce_9_cement_01.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_cement_02.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_cement_03.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_cement_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.9mm.dirt", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/9mm/blt_case_bounce_9_dirt_01.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_dirt_02.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_dirt_03.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_dirt_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.9mm.glass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/9mm/blt_case_bounce_9_glass_01.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_glass_02.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_glass_03.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_glass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.9mm.grass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/9mm/blt_case_bounce_9_grass_01.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_grass_02.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_grass_03.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_grass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.9mm.metal", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/9mm/blt_case_bounce_9_metal_01.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_metal_02.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_metal_03.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_metal_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.9mm.mud", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/9mm/blt_case_bounce_9_mud_01.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_mud_02.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_mud_03.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_mud_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.9mm.sand", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/9mm/blt_case_bounce_9_sand_01.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_sand_02.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_sand_03.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_sand_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.9mm.water", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/9mm/blt_case_bounce_9_water_01.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_water_02.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_water_03.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_water_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.9mm.wood_hard", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/9mm/blt_case_bounce_9_wood_hard_01.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_wood_hard_02.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_wood_hard_03.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_wood_hard_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.9mm.wood_hollow", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/9mm/blt_case_bounce_9_wood_hollow_01.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_wood_hollow_02.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_wood_hollow_03.wav", + "viper/shared/casings/9mm/blt_case_bounce_9_wood_hollow_04.wav",} +}) + + + +sound.Add({ + name = "MW_Casings.50bmg.carpet", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_carpet_01.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_carpet_02.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_carpet_03.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_carpet_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.50bmg.cement", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_cement_01.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_cement_02.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_cement_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.50bmg.dirt", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_dirt_01.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_dirt_02.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_dirt_03.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_dirt_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.50bmg.glass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_glass_01.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_glass_02.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_glass_03.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_glass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.50bmg.grass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_grass_01.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_grass_02.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_grass_03.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_grass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.50bmg.metal", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_metal_01.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_metal_02.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_metal_03.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_metal_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.50bmg.mud", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_mud_01.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_mud_02.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_mud_03.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_mud_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.50bmg.sand", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_sand_01.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_sand_02.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_sand_03.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_sand_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.50bmg.water", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_water_01.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_water_02.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_water_03.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_water_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.50bmg.wood_hard", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_wood_hard_01.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_wood_hard_02.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_wood_hard_03.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_wood_hard_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.50bmg.wood_hollow", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_wood_hollow_01.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_wood_hollow_02.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_wood_hollow_03.wav", + "viper/shared/casings/50bmg/blt_case_bounce_50bmg_wood_hollow_04.wav",} +}) + + + +sound.Add({ + name = "MW_Casings.308.carpet", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_carpet_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_carpet_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_carpet_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_carpet_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.308.cement", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_cement_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_cement_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_cement_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_cement_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.dirt", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_dirt_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_dirt_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_dirt_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_dirt_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.308.glass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_glass_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_glass_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_glass_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_glass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.grass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_grass_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_grass_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_grass_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_grass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.metal", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_metal_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_metal_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_metal_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_metal_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.mud", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_mud_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_mud_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_mud_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_mud_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.sand", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_sand_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_sand_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_sand_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_sand_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.water", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_water_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_water_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_water_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_water_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.wood_hard", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_wood_hard_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hard_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hard_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hard_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.wood_hollow", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_wood_hollow_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hollow_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hollow_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hollow_04.wav",} +}) + + + +sound.Add({ + name = "MW_Casings.308.carpet", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_carpet_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_carpet_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_carpet_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_carpet_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.308.cement", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_cement_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_cement_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_cement_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_cement_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.dirt", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_dirt_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_dirt_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_dirt_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_dirt_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.308.glass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_glass_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_glass_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_glass_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_glass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.grass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_grass_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_grass_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_grass_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_grass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.metal", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_metal_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_metal_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_metal_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_metal_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.mud", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_mud_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_mud_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_mud_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_mud_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.sand", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_sand_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_sand_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_sand_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_sand_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.water", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_water_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_water_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_water_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_water_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.wood_hard", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_wood_hard_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hard_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hard_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hard_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.308.wood_hollow", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/308/blt_case_bounce_308_wood_hollow_01.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hollow_02.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hollow_03.wav", + "viper/shared/casings/308/blt_case_bounce_308_wood_hollow_04.wav",} +}) + + + +sound.Add({ + name = "MW_Casings.338.carpet", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/338/blt_case_bounce_338_carpet_01.wav", + "viper/shared/casings/338/blt_case_bounce_338_carpet_02.wav", + "viper/shared/casings/338/blt_case_bounce_338_carpet_03.wav", + "viper/shared/casings/338/blt_case_bounce_338_carpet_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.338.cement", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/338/blt_case_bounce_338_cement_01.wav", + "viper/shared/casings/338/blt_case_bounce_338_cement_02.wav", + "viper/shared/casings/338/blt_case_bounce_338_cement_03.wav", + "viper/shared/casings/338/blt_case_bounce_338_cement_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.338.dirt", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/338/blt_case_bounce_338_dirt_01.wav", + "viper/shared/casings/338/blt_case_bounce_338_dirt_02.wav", + "viper/shared/casings/338/blt_case_bounce_338_dirt_03.wav", + "viper/shared/casings/338/blt_case_bounce_338_dirt_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.338.glass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/338/blt_case_bounce_338_glass_01.wav", + "viper/shared/casings/338/blt_case_bounce_338_glass_02.wav", + "viper/shared/casings/338/blt_case_bounce_338_glass_03.wav", + "viper/shared/casings/338/blt_case_bounce_338_glass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.338.grass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/338/blt_case_bounce_338_grass_01.wav", + "viper/shared/casings/338/blt_case_bounce_338_grass_02.wav", + "viper/shared/casings/338/blt_case_bounce_338_grass_03.wav", + "viper/shared/casings/338/blt_case_bounce_338_grass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.338.metal", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/338/blt_case_bounce_338_metal_01.wav", + "viper/shared/casings/338/blt_case_bounce_338_metal_02.wav", + "viper/shared/casings/338/blt_case_bounce_338_metal_03.wav", + "viper/shared/casings/338/blt_case_bounce_338_metal_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.338.mud", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/338/blt_case_bounce_338_mud_01.wav", + "viper/shared/casings/338/blt_case_bounce_338_mud_02.wav", + "viper/shared/casings/338/blt_case_bounce_338_mud_03.wav", + "viper/shared/casings/338/blt_case_bounce_338_mud_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.338.sand", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/338/blt_case_bounce_338_sand_01.wav", + "viper/shared/casings/338/blt_case_bounce_338_sand_02.wav", + "viper/shared/casings/338/blt_case_bounce_338_sand_03.wav", + "viper/shared/casings/338/blt_case_bounce_338_sand_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.338.water", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/338/blt_case_bounce_338_water_01.wav", + "viper/shared/casings/338/blt_case_bounce_338_water_02.wav", + "viper/shared/casings/338/blt_case_bounce_338_water_03.wav", + "viper/shared/casings/338/blt_case_bounce_338_water_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.338.wood_hard", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/338/blt_case_bounce_338_wood_hard_01.wav", + "viper/shared/casings/338/blt_case_bounce_338_wood_hard_02.wav", + "viper/shared/casings/338/blt_case_bounce_338_wood_hard_03.wav", + "viper/shared/casings/338/blt_case_bounce_338_wood_hard_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.338.wood_hollow", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/338/blt_case_bounce_338_wood_hollow_01.wav", + "viper/shared/casings/338/blt_case_bounce_338_wood_hollow_02.wav", + "viper/shared/casings/338/blt_case_bounce_338_wood_hollow_03.wav", + "viper/shared/casings/338/blt_case_bounce_338_wood_hollow_04.wav",} +}) + + + +sound.Add({ + name = "MW_Casings.556.carpet", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/556/blt_case_bounce_556_carpet_01.wav", + "viper/shared/casings/556/blt_case_bounce_556_carpet_02.wav", + "viper/shared/casings/556/blt_case_bounce_556_carpet_03.wav", + "viper/shared/casings/556/blt_case_bounce_556_carpet_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.556.cement", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/556/blt_case_bounce_556_cement_01.wav", + "viper/shared/casings/556/blt_case_bounce_556_cement_02.wav", + "viper/shared/casings/556/blt_case_bounce_556_cement_03.wav", + "viper/shared/casings/556/blt_case_bounce_556_cement_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.556.dirt", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/556/blt_case_bounce_556_dirt_01.wav", + "viper/shared/casings/556/blt_case_bounce_556_dirt_02.wav", + "viper/shared/casings/556/blt_case_bounce_556_dirt_03.wav", + "viper/shared/casings/556/blt_case_bounce_556_dirt_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.556.glass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/556/blt_case_bounce_556_glass_01.wav", + "viper/shared/casings/556/blt_case_bounce_556_glass_02.wav", + "viper/shared/casings/556/blt_case_bounce_556_glass_03.wav", + "viper/shared/casings/556/blt_case_bounce_556_glass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.556.grass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/556/blt_case_bounce_556_grass_01.wav", + "viper/shared/casings/556/blt_case_bounce_556_grass_02.wav", + "viper/shared/casings/556/blt_case_bounce_556_grass_03.wav", + "viper/shared/casings/556/blt_case_bounce_556_grass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.556.metal", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/556/blt_case_bounce_556_metal_01.wav", + "viper/shared/casings/556/blt_case_bounce_556_metal_02.wav", + "viper/shared/casings/556/blt_case_bounce_556_metal_03.wav", + "viper/shared/casings/556/blt_case_bounce_556_metal_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.556.mud", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/556/blt_case_bounce_556_mud_01.wav", + "viper/shared/casings/556/blt_case_bounce_556_mud_02.wav", + "viper/shared/casings/556/blt_case_bounce_556_mud_03.wav", + "viper/shared/casings/556/blt_case_bounce_556_mud_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.556.sand", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/556/blt_case_bounce_556_sand_01.wav", + "viper/shared/casings/556/blt_case_bounce_556_sand_02.wav", + "viper/shared/casings/556/blt_case_bounce_556_sand_03.wav", + "viper/shared/casings/556/blt_case_bounce_556_sand_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.556.water", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/556/blt_case_bounce_556_water_01.wav", + "viper/shared/casings/556/blt_case_bounce_556_water_02.wav", + "viper/shared/casings/556/blt_case_bounce_556_water_03.wav", + "viper/shared/casings/556/blt_case_bounce_556_water_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.556.wood_hard", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/556/blt_case_bounce_556_wood_hard_01.wav", + "viper/shared/casings/556/blt_case_bounce_556_wood_hard_02.wav", + "viper/shared/casings/556/blt_case_bounce_556_wood_hard_03.wav", + "viper/shared/casings/556/blt_case_bounce_556_wood_hard_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.556.wood_hollow", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/556/blt_case_bounce_556_wood_hollow_01.wav", + "viper/shared/casings/556/blt_case_bounce_556_wood_hollow_02.wav", + "viper/shared/casings/556/blt_case_bounce_556_wood_hollow_03.wav", + "viper/shared/casings/556/blt_case_bounce_556_wood_hollow_04.wav",} +}) + + + +sound.Add({ + name = "MW_Casings.shotgun.carpet", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_carpet_01.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_carpet_02.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_carpet_03.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_carpet_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.shotgun.cement", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_cement_01.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_cement_02.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_cement_03.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_cement_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.shotgun.dirt", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_dirt_01.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_dirt_02.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_dirt_03.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_dirt_04.wav"} +}) + +sound.Add({ + name = "MW_Casings.shotgun.glass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_glass_01.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_glass_02.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_glass_03.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_glass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.shotgun.grass", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_grass_01.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_grass_02.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_grass_03.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_grass_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.shotgun.metal", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_metal_01.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_metal_02.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_metal_03.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_metal_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.shotgun.mud", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_mud_01.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_mud_02.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_mud_03.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_mud_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.shotgun.sand", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_sand_01.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_sand_02.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_sand_03.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_sand_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.shotgun.water", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_water_01.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_water_02.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_water_03.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_water_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.shotgun.wood_hard", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_wood_hard_01.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_wood_hard_02.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_wood_hard_03.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_wood_hard_04.wav",} +}) + +sound.Add({ + name = "MW_Casings.shotgun.wood_hollow", + channel = CHAN_CASINGS, + volume = casingsVolume, + soundlevel = SNDLVL_75db, + sound = { + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_wood_hollow_01.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_wood_hollow_02.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_wood_hollow_03.wav", + "viper/shared/casings/shotgun/blt_case_bounce_shotgun_wood_hollow_04.wav",} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_channels.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_channels.lua new file mode 100644 index 0000000..5f219f2 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_channels.lua @@ -0,0 +1,2 @@ +AddCSLuaFile() + diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_foley.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_foley.lua new file mode 100644 index 0000000..30e9b5e --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_foley.lua @@ -0,0 +1,503 @@ +AddCSLuaFile() + +----------- CUSTOMIZATION ----------- +sound.Add({ + name = "MW.Flashlight", + channel = 234, + volume = 1, + pitch = 100, + sound = {"viper/shared/flashlight.wav"} +}) + +sound.Add({ + name = "wpn_shotgun_fire_lyr", + channel = CHAN_WEAPON +1, + level = 140, + volume = 0.5, + pitch = {80,110}, + sound = {"viper/shared/wpn_shotgun_fire_lyr_01.ogg", + "viper/shared/wpn_shotgun_fire_lyr_02.ogg", + "viper/shared/wpn_shotgun_fire_lyr_04.ogg"} +}) + +sound.Add({ + name = "wpn_generic_fire_first", + channel = CHAN_TRIGGER, + level = 55, + volume = 0.2, + pitch = {80,110}, + sound = {"viper/shared/foley/triggers/weap_generic_fire_first.ogg"} +}) + +sound.Add({ + name = "wpn_generic_disconnector", + channel = CHAN_TRIGGER, + level = 55, + volume = 0.2, + pitch = {80,110}, + sound = {"viper/shared/foley/triggers/weap_generic_disconnector.ogg"} +}) + +-- Sound: 8 +sound.Add({ + name = "wpn_gbl_plr_inspect_mvmnt_sml", + channel = CHAN_WPNFOLEY + 1, + level = 55, + volume = 1, + pitch = {90,100}, + sound = { + "viper/shared/s4/wpn_gbl_plr_inspect_settle_01.ogg", + "viper/shared/s4/wpn_gbl_plr_inspect_settle_02.ogg", + "viper/shared/s4/wpn_gbl_plr_inspect_settle_03.ogg", + "viper/shared/s4/wpn_gbl_plr_inspect_settle_04.ogg", + "viper/shared/s4/wpn_gbl_plr_inspect_settle_05.ogg", + "viper/shared/s4/wpn_gbl_plr_inspect_settle_06.ogg", + "viper/shared/s4/wpn_gbl_plr_inspect_settle_07.ogg", + "viper/shared/s4/wpn_gbl_plr_inspect_settle_08.ogg", + "viper/shared/s4/wpn_gbl_plr_inspect_settle_09.ogg", + "viper/shared/s4/wpn_gbl_plr_inspect_settle_10.ogg", + "viper/shared/s4/wpn_gbl_plr_inspect_settle_11.ogg", + "viper/shared/s4/wpn_gbl_plr_inspect_settle_12.ogg", + } +}) + +-- Sound: 8 +sound.Add({ + name = "wpn_gbl_plr_inspect_smg_swipe", + channel = CHAN_WPNFOLEY + 1, + level = 55, + volume = 1, + pitch = {90,100}, + sound = { + "viper/shared/s4/wpn_smg_insp_swipe_01.ogg", + "viper/shared/s4/wpn_smg_insp_swipe_02.ogg", + "viper/shared/s4/wpn_smg_insp_swipe_03.ogg", + } +}) + +----------- BASHING ------------ + +sound.Add({ + name = "MW_Melee.Miss_Knife", + channel = CHAN_WEAPON +10, + volume = 1.0, + sound = { + "viper/shared/melee/melee_attack_knife_plr_01.ogg", + "viper/shared/melee/melee_attack_knife_plr_02.ogg", + "viper/shared/melee/melee_attack_knife_plr_03.ogg", + "viper/shared/melee/melee_attack_knife_plr_04.ogg", + "viper/shared/melee/melee_attack_knife_plr_05.ogg", + "viper/shared/melee/melee_attack_knife_plr_06.ogg", + } +}) + +sound.Add({ + name = "MW_Melee.Miss_Large", + channel = CHAN_WEAPON +10, + volume = 1.0, + sound = { + "viper/shared/melee/melee_attack_gun_lrg_plr_01.wav", + "viper/shared/melee/melee_attack_gun_lrg_plr_02.wav", + "viper/shared/melee/melee_attack_gun_lrg_plr_03.wav", + "viper/shared/melee/melee_attack_gun_lrg_plr_04.wav", + "viper/shared/melee/melee_attack_gun_lrg_plr_05.wav", + "viper/shared/melee/melee_attack_gun_lrg_plr_06.wav", + } +}) + +sound.Add({ + name = "MW_Melee.Miss_Medium", + channel = CHAN_WEAPON +10, + volume = 1.0, + sound = { + "viper/shared/melee/melee_attack_gun_med_plr_01.wav", + "viper/shared/melee/melee_attack_gun_med_plr_02.wav", + "viper/shared/melee/melee_attack_gun_med_plr_03.wav", + "viper/shared/melee/melee_attack_gun_med_plr_04.wav", + "viper/shared/melee/melee_attack_gun_med_plr_05.wav", + "viper/shared/melee/melee_attack_gun_med_plr_06.wav", + } +}) + +sound.Add({ + name = "MW_Melee.Miss_Small", + channel = CHAN_WEAPON +10, + volume = 1.0, + sound = { + "viper/shared/melee/melee_attack_gun_sml_plr_01.wav", + "viper/shared/melee/melee_attack_gun_sml_plr_02.wav", + "viper/shared/melee/melee_attack_gun_sml_plr_03.wav", + "viper/shared/melee/melee_attack_gun_sml_plr_04.wav", + "viper/shared/melee/melee_attack_gun_sml_plr_05.wav", + "viper/shared/melee/melee_attack_gun_sml_plr_06.wav", + } +}) + +sound.Add({ + name = "MW_Melee.World_Large", + channel = CHAN_WEAPON +10, + volume = 1.0, + sound = { + "viper/shared/melee/melee_world_gun_lrg_polymer_cement_plr_01.wav", + "viper/shared/melee/melee_world_gun_lrg_polymer_cement_plr_02.wav", + "viper/shared/melee/melee_world_gun_lrg_polymer_cement_plr_03.wav", + "viper/shared/melee/melee_world_gun_lrg_polymer_cement_plr_04.wav", + "viper/shared/melee/melee_world_gun_lrg_polymer_cement_plr_05.wav", + } +}) + +sound.Add({ + name = "MW_Melee.World_Medium", + channel = CHAN_WEAPON +10, + volume = 1.0, + sound = { + "viper/shared/melee/melee_world_gun_med_polymer_cement_plr_01.wav", + "viper/shared/melee/melee_world_gun_med_polymer_cement_plr_02.wav", + "viper/shared/melee/melee_world_gun_med_polymer_cement_plr_03.wav", + "viper/shared/melee/melee_world_gun_med_polymer_cement_plr_04.wav", + } +}) + +sound.Add({ + name = "MW_Melee.World_Small", + channel = CHAN_WEAPON +10, + volume = 1.0, + sound = { + "viper/shared/melee/melee_world_gun_sml_polymer_cement_plr_01.wav", + "viper/shared/melee/melee_world_gun_sml_polymer_cement_plr_02.wav", + "viper/shared/melee/melee_world_gun_sml_polymer_cement_plr_03.wav", + "viper/shared/melee/melee_world_gun_sml_polymer_cement_plr_04.wav", + "viper/shared/melee/melee_world_gun_sml_polymer_cement_plr_05.wav", + } +}) + +sound.Add({ + name = "MW_Melee.World_Knife", + channel = CHAN_WEAPON +10, + volume = 1.0, + sound = { + "viper/shared/melee/melee_world_knife_cement_plr_01.ogg", + "viper/shared/melee/melee_world_knife_cement_plr_02.ogg", + "viper/shared/melee/melee_world_knife_cement_plr_03.ogg", + "viper/shared/melee/melee_world_knife_cement_plr_04.ogg", + "viper/shared/melee/melee_world_knife_cement_plr_05.ogg", + } +}) + +sound.Add({ + name = "MW_Melee.Flesh_Large", + channel = CHAN_WEAPON +10, + volume = 1.0, + sound = { + "viper/shared/melee/melee_character_gun_lrg_steel_plr_01.wav", + "viper/shared/melee/melee_character_gun_lrg_steel_plr_02.wav", + "viper/shared/melee/melee_character_gun_lrg_steel_plr_03.wav", + "viper/shared/melee/melee_character_gun_lrg_steel_plr_04.wav", + "viper/shared/melee/melee_character_gun_lrg_steel_plr_05.wav", + } +}) + +sound.Add({ + name = "MW_Melee.Flesh_Medium", + channel = CHAN_WEAPON +10, + volume = 1.0, + sound = { + "viper/shared/melee/melee_character_gun_med_steel_plr_01.wav", + "viper/shared/melee/melee_character_gun_med_steel_plr_02.wav", + "viper/shared/melee/melee_character_gun_med_steel_plr_03.wav", + "viper/shared/melee/melee_character_gun_med_steel_plr_04.wav", + "viper/shared/melee/melee_character_gun_med_steel_plr_05.wav", + } +}) + +sound.Add({ + name = "MW_Melee.Flesh_Small", + channel = CHAN_WEAPON, + volume = 1.0, + sound = { + "viper/shared/melee/melee_character_gun_sml_steel_plr_01.wav", + "viper/shared/melee/melee_character_gun_sml_steel_plr_02.wav", + "viper/shared/melee/melee_character_gun_sml_steel_plr_03.wav", + "viper/shared/melee/melee_character_gun_sml_steel_plr_04.wav", + "viper/shared/melee/melee_character_gun_sml_steel_plr_05.wav", + } +}) + + +sound.Add({ + name = "MW_Fist.Miss", + channel = CHAN_WEAPON, + volume = 1.0, + sound = { + "viper/shared/melee/melee_attack_fist_plr_01.ogg", + "viper/shared/melee/melee_attack_fist_plr_02.ogg", + "viper/shared/melee/melee_attack_fist_plr_03.ogg", + "viper/shared/melee/melee_attack_fist_plr_04.ogg", + "viper/shared/melee/melee_attack_fist_plr_05.ogg", + "viper/shared/melee/melee_attack_fist_plr_06.ogg", + "viper/shared/melee/melee_attack_fist_plr_07.ogg", + "viper/shared/melee/melee_attack_fist_plr_08.ogg", + } +}) + +sound.Add({ + name = "MW_Fist.HitPlayer", + channel = CHAN_WEAPON, + volume = 1.0, + sound = { + "viper/shared/melee/melee_character_fist_plr_01.ogg", + "viper/shared/melee/melee_character_fist_plr_02.ogg", + "viper/shared/melee/melee_character_fist_plr_03.ogg", + "viper/shared/melee/melee_character_fist_plr_04.ogg", + "viper/shared/melee/melee_character_fist_plr_05.ogg", + "viper/shared/melee/melee_character_fist_plr_06.ogg", + "viper/shared/melee/melee_character_fist_plr_07.ogg", + "viper/shared/melee/melee_character_fist_plr_08.ogg", + "viper/shared/melee/melee_character_fist_plr_09.ogg", + "viper/shared/melee/melee_character_fist_plr_10.ogg", + "viper/shared/melee/melee_character_fist_plr_11.ogg", + } +}) + +sound.Add({ + name = "MW_Fist.HitWorld", + channel = CHAN_WEAPON, + volume = 1.0, + sound = { + "viper/shared/melee/melee_world_fist_soft_plr_01.ogg", + "viper/shared/melee/melee_world_fist_soft_plr_02.ogg", + "viper/shared/melee/melee_world_fist_soft_plr_03.ogg", + "viper/shared/melee/melee_world_fist_soft_plr_04.ogg", + "viper/shared/melee/melee_world_fist_soft_plr_05.ogg", + } +}) + +sound.Add({ + name = "Canted.On", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = { + --"viper/shared/foley/wfoly_plr_hybrid_scope_side_on.ogg", + "switchsights/switch1.wav", + "switchsights/switch3.wav" + } +}) +sound.Add({ + name = "Canted.Off", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = { + --"viper/shared/foley/wfoly_plr_hybrid_scope_side_off.ogg", + "switchsights/switch2.wav", + "switchsights/switch5.wav" + } +}) + +sound.Add({ + name = "Flipsight.Up", + channel = CHAN_WPNFOLEY, + volume = 1.0, + sound = { + "viper/shared/foley/wpfoly_hybrid_toggle_on.ogg", + } +}) +sound.Add({ + name = "Flipsight.Down", + channel = CHAN_WPNFOLEY, + volume = 1.0, + sound = { + "viper/shared/foley/wpfoly_hybrid_flip_down_v1.ogg", + } +}) + + + +sound.Add({ + name = "Viewmodel.Small", + channel = CHAN_WPNFOLEY +35, + volume = 1.0, + sound = { + "viper/shared/weapmvmt/small/gear_rattle_weap_small_01.ogg", + "viper/shared/weapmvmt/small/gear_rattle_weap_small_02.ogg", + "viper/shared/weapmvmt/small/gear_rattle_weap_small_03.ogg", + "viper/shared/weapmvmt/small/gear_rattle_weap_small_04.ogg", + "viper/shared/weapmvmt/small/gear_rattle_weap_small_05.ogg", + "viper/shared/weapmvmt/small/gear_rattle_weap_small_06.ogg", + "viper/shared/weapmvmt/small/gear_rattle_weap_small_07.ogg", + "viper/shared/weapmvmt/small/gear_rattle_weap_small_08.ogg", + "viper/shared/weapmvmt/small/gear_rattle_weap_small_09.ogg", + } +}) +sound.Add({ + name = "Viewmodel.Medium", + channel = CHAN_WPNFOLEY +36, + volume = 1.0, + sound = { + "viper/shared/weapmvmt/medium_new/gear_rattle_weap_medium_01.ogg", + "viper/shared/weapmvmt/medium_new/gear_rattle_weap_medium_02.ogg", + "viper/shared/weapmvmt/medium_new/gear_rattle_weap_medium_03.ogg", + "viper/shared/weapmvmt/medium_new/gear_rattle_weap_medium_04.ogg", + "viper/shared/weapmvmt/medium_new/gear_rattle_weap_medium_05.ogg", + "viper/shared/weapmvmt/medium_new/gear_rattle_weap_medium_06.ogg", + "viper/shared/weapmvmt/medium_new/gear_rattle_weap_medium_07.ogg", + "viper/shared/weapmvmt/medium_new/gear_rattle_weap_medium_08.ogg", + "viper/shared/weapmvmt/medium_new/gear_rattle_weap_medium_09.ogg", + "viper/shared/weapmvmt/medium_new/gear_rattle_weap_medium_10.ogg", + } +}) +sound.Add({ + name = "Viewmodel.Large", + channel = CHAN_WPNFOLEY +37, + volume = 1.0, + sound = { + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_01.ogg", + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_02.ogg", + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_03.ogg", + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_04.ogg", + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_05.ogg", + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_06.ogg", + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_07.ogg", + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_08.ogg", + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_09.ogg", + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_10.ogg", + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_11.ogg", + "viper/shared/weapmvmt/large_new/gear_rattle_weap_large_12.ogg", + } +}) +sound.Add({ + name = "Viewmodel.Launcher", + channel = CHAN_WPNFOLEY +15, + volume = 1.0, + sound = { + "viper/shared/weapmvmt/launcher/gear_rattle_weap_launcher_01.ogg", + "viper/shared/weapmvmt/launcher/gear_rattle_weap_launcher_02.ogg", + "viper/shared/weapmvmt/launcher/gear_rattle_weap_launcher_03.ogg", + "viper/shared/weapmvmt/launcher/gear_rattle_weap_launcher_04.ogg", + "viper/shared/weapmvmt/launcher/gear_rattle_weap_launcher_05.ogg", + "viper/shared/weapmvmt/launcher/gear_rattle_weap_launcher_06.ogg", + "viper/shared/weapmvmt/launcher/gear_rattle_weap_launcher_07.ogg", + "viper/shared/weapmvmt/launcher/gear_rattle_weap_launcher_08.ogg", + } +}) + +sound.Add({ + name = "Viewmodel.BipodDeploy", + channel = 159, + volume = 1.0, + sound = { + "mount/enter1.wav", + "mount/enter2.wav", + "mount/enter3.wav", + "mount/enter4.wav", + "mount/enter5.wav" + } +}) + +sound.Add({ + name = "Viewmodel.BipodExit", + channel = 159, + volume = 1.0, + sound = { + "mount/exit1.wav", + "mount/exit2.wav", + "mount/exit3.wav", + "mount/exit4.wav" + } +}) + +sound.Add({ + name = "MW_MagazineDrop.AK.Metal", + channel = CHAN_MAGAZINEDROP, + volume = 1.0, + sound = { + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_metal_concrete_01.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_metal_concrete_02.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_metal_concrete_03.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_metal_concrete_04.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_metal_concrete_05.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_metal_concrete_06.ogg", + } +}) + +sound.Add({ + name = "MW_MagazineDrop.AK.Poly", + channel = CHAN_MAGAZINEDROP, + volume = 1.0, + sound = { + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_poly_concrete_01.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_poly_concrete_02.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_poly_concrete_03.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_poly_concrete_04.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_poly_concrete_05.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ak_poly_concrete_06.ogg", + } +}) + +sound.Add({ + name = "MW_MagazineDrop.AR.Metal", + channel = CHAN_MAGAZINEDROP, + volume = 1.0, + sound = { + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_metal_concrete_01.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_metal_concrete_02.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_metal_concrete_03.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_metal_concrete_04.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_metal_concrete_05.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_metal_concrete_06.ogg", + } +}) + +sound.Add({ + name = "MW_MagazineDrop.AR.Poly", + channel = CHAN_MAGAZINEDROP, + volume = 1.0, + sound = { + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_poly_concrete_01.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_poly_concrete_02.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_poly_concrete_03.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_poly_concrete_04.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_poly_concrete_05.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_ar_poly_concrete_06.ogg", + } +}) + +sound.Add({ + name = "MW_MagazineDrop.Drum", + channel = CHAN_MAGAZINEDROP, + volume = 1.0, + sound = { + "viper/shared/magazine_drops/iw8_phys_mag_drop_large_drum_concrete_01.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_large_drum_concrete_02.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_large_drum_concrete_03.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_large_drum_concrete_04.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_large_drum_concrete_05.ogg", + } +}) + +sound.Add({ + name = "MW_MagazineDrop.SMG.Metal", + channel = CHAN_MAGAZINEDROP, + volume = 1.0, + sound = { + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_metal_concrete_01.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_metal_concrete_02.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_metal_concrete_03.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_metal_concrete_04.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_metal_concrete_05.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_metal_concrete_06.ogg", + } +}) + +sound.Add({ + name = "MW_MagazineDrop.SMG.Poly", + channel = CHAN_MAGAZINEDROP, + volume = 1.0, + sound = { + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_poly_concrete_01.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_poly_concrete_02.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_poly_concrete_03.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_poly_concrete_04.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_poly_concrete_05.ogg", + "viper/shared/magazine_drops/iw8_phys_mag_drop_smg_poly_concrete_06.ogg", + } +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_minigun.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_minigun.lua new file mode 100644 index 0000000..6eaa7c8 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_minigun.lua @@ -0,0 +1,113 @@ +AddCSLuaFile() + +--- DBLMG --- +sound.Add({ + name = "mw19.dblmg.fire", + channel = CHAN_MINIGUNFIRE, + level = 140, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/dblmg/weap_kilo121_fire_plr_01.wav", + "viper/weapons/dblmg/weap_kilo121_fire_plr_02.wav", + "viper/weapons/dblmg/weap_kilo121_fire_plr_03.wav", + "viper/weapons/dblmg/weap_kilo121_fire_plr_04.wav", + "viper/weapons/dblmg/weap_kilo121_fire_plr_05.wav", + "viper/weapons/dblmg/weap_kilo121_fire_plr_06.wav" + } +}) + + + +sound.Add({ + name = "mw19.dblmg.spin.up", + channel = CHAN_WEAPON, + volume = 1, + sound = {"viper/weapons/dblmg/weap_dblmg_spinup_plr_01.wav"} +}) +sound.Add({ + name = "mw19.dblmg.spin.loop", + channel = CHAN_WEAPON, + volume = 1, + sound = {"viper/weapons/dblmg/weap_dblmg_spinloop2_plr.wav"} +}) +sound.Add({ + name = "mw19.dblmg.spin.down", + channel = CHAN_WEAPON, + volume = 1, + sound = {"viper/weapons/dblmg/weap_dblmg_spindown_plr_01.wav"} +}) + + + +sound.Add({ + name = "wfoly_plr_lm_dblmg_inspect_01", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/dblmg/wfoly_lm_dblmg_inspect_01.wav"} +}) +sound.Add({ + name = "wfoly_plr_lm_dblmg_inspect_02", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/dblmg/wfoly_lm_dblmg_inspect_02.wav"} +}) +sound.Add({ + name = "wfoly_plr_lm_dblmg_inspect_03", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/dblmg/wfoly_lm_dblmg_inspect_03.wav"} +}) + + + +sound.Add({ + name = "wfoly_plr_lm_dblmg_reload_01", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/dblmg/wfoly_plr_lm_minigun_reload_start.wav"} +}) +sound.Add({ + name = "wfoly_plr_lm_dblmg_reload_02", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/dblmg/wfoly_plr_lm_minigun_reload_belt_out.wav"} +}) +sound.Add({ + name = "wfoly_plr_lm_dblmg_reload_03", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/dblmg/wfoly_plr_lm_minigun_reload_belt_in.wav"} +}) +sound.Add({ + name = "wfoly_plr_lm_dblmg_reload_04", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/dblmg/wfoly_plr_lm_minigun_reload_end.wav"} +}) + + + +sound.Add({ + name = "wfoly_plr_lm_dblmg_reload_fast_01", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/dblmg/wfoly_plr_lm_minigun_reload_start.wav"} +}) +sound.Add({ + name = "wfoly_plr_lm_dblmg_reload_fast_02", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/dblmg/wfoly_plr_lm_minigun_reload_belt_out.wav"} +}) +sound.Add({ + name = "wfoly_plr_lm_dblmg_reload_fast_03", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/dblmg/wfoly_plr_lm_minigun_reload_belt_in.wav"} +}) +sound.Add({ + name = "wfoly_plr_lm_dblmg_reload_fast_04", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/dblmg/wfoly_plr_lm_minigun_reload_end.wav"} +}) diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_reflections.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_reflections.lua new file mode 100644 index 0000000..035496d --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_reflections.lua @@ -0,0 +1,97 @@ +AddCSLuaFile() + +--- Reflections --- + +--- AR --- +sound.Add({ + name = "Reflection_AR.Outside", + channel = CHAN_REFLECTION +1, + volume = 0.5, + level = 140, + pitch = {90,110}, + sound = "^viper/shared/reflection/ar/weap_refl_ar_urb/weap_refl_ar_urb_ext_close_front_01.wav", +}) +sound.Add({ + name = "Reflection_AR.Inside", + channel = CHAN_REFLECTION +1, + volume = 1, + level = 140, + pitch = {90,110}, + sound = "^viper/shared/reflection/ar/weap_refl_ar_urb/weap_refl_ar_urb_int_med_side_01.wav" +}) + +sound.Add({ + name = "Reflection_ARSUP.Outside", + channel = CHAN_REFLECTION +1, + volume = 1, + level = 140, + pitch = {90,110}, + sound = "^viper/shared/reflection/ar/weap_refl_ar_urb/weap_refl_arsup_urb_ext_dist_lr_01.wav" +}) +sound.Add({ + name = "Reflection_ARSUP.Inside", + channel = CHAN_REFLECTION +1, + volume = 1, + level = 140, + pitch = {90,110}, + sound = "^viper/shared/reflection/ar/weap_refl_ar_urb/wex_arsup_urb_int_close_front_plr_01.wav", +}) + +sound.Add({ + name = "Reflection_Pistol.Outside", + channel = CHAN_REFLECTION +1, + volume = 0.75, + level = 140, + pitch = {90,110}, + sound = "^viper/shared/reflection/pistol/weap_pist_ref_urb/weap_refl_pistol_urb_ext_dist_lr_01.wav" +}) +sound.Add({ + name = "Reflection_Pistol.Inside", + channel = CHAN_REFLECTION +1, + volume = 0.75, + level = 140, + pitch = {90,110}, + sound = "^viper/shared/reflection/pistol/weap_pist_ref_urb/weap_refl_pistol_urb_int_close_rear_01.wav" +}) + +sound.Add({ + name = "Reflection_Shotgun.Outside", + channel = CHAN_REFLECTION +1, + volume = 1, + level = 140, + pitch = {90,110}, + sound = "^viper/shared/reflection/shotgun/weap_refl_shotgun_urb_ext_dist_lr_01.wav" +}) +sound.Add({ + name = "Reflection_Shotgun.Inside", + channel = CHAN_REFLECTION +1, + volume = 1, + level = 140, + pitch = {90,110}, + sound = "^viper/shared/reflection/shotgun/weap_refl_shotgun_urb_int_close_front_01.wav" +}) +sound.Add({ + name = "Reflection_ShotgunSUP.Inside", + channel = CHAN_REFLECTION +1, + volume = 1, + level = 140, + pitch = {90,110}, + sound = "^viper/shared/reflection/shotgun/wex_shotgunsup_urb_int_close_front_plr_01.wav" +}) + +sound.Add({ + name = "Reflection_Sniper.Outside", + channel = CHAN_REFLECTION +1, + volume = 1, + level = 140, + pitch = {90,110}, + sound = "^viper/shared/reflection/sniper/weap_refl_sniper_urb/weap_refl_sniper_urb_ext_dist_lr_01.wav" +}) +sound.Add({ + name = "Reflection_Sniper.Inside", + channel = CHAN_REFLECTION, + volume = 1, + level = 140, + pitch = {90,110}, + sound = "viper/shared/reflection/sniper/weap_refl_sniper_urb/weap_refl_sniper_urb_int_close_front_01.wav" +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_sh_aalpha12.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_sh_aalpha12.lua new file mode 100644 index 0000000..73141da --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_sh_aalpha12.lua @@ -0,0 +1,468 @@ +AddCSLuaFile() + + +---Galima--- +sound.Add({ + name = "mw19.aalpha12.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/aalpha12/weap_aalpha12_fire_plr_01.wav", +}) + +sound.Add({ + name = "mw19.aalpha12.fire.db", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/aalpha12/weap_aalpha12_fire_plr_01_db.ogg", + "viper/weapons/aalpha12/weap_aalpha12_fire_plr_02_db.ogg", + "viper/weapons/aalpha12/weap_aalpha12_fire_plr_03_db.ogg"} +}) +sound.Add({ + name = "mw19.aalpha12.fire.s", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/aalpha12/weap_aalpha12_fire_plr_sup_01.wav" +}) + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_drop_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_drop.ogg"} +}) + +sound.Add({ + name = "weap_sh_aalpha12_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_lm_pkilo_ads_up.ogg"} +}) +sound.Add({ + name = "weap_sh_aalpha12_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_lm_pkilo_ads_down.ogg"} +}) + + + + +sound.Add({ + name = "mw19.aalpha12.disconnector", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/aalpha12/weap_romeo870_disconnector_plr_02.ogg", + "viper/weapons/aalpha12/weap_romeo870_disconnector_plr_02.ogg", + "viper/weapons/aalpha12/weap_romeo870_disconnector_plr_03.ogg", + "viper/weapons/aalpha12/weap_romeo870_disconnector_plr_04.ogg", + "viper/weapons/aalpha12/weap_romeo870_disconnector_plr_05.ogg" + } +}) +sound.Add({ + name = "mw19.aalpha12.fire.first", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/aalpha12/weap_aalpha12_prefire_plr_01.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_drum_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_drum_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_drum_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_drum_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_drum_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_drum_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_drum_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_inspect_drum_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_inspect_drum_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_raise_first_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_raise_first_bolt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_maghits.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_fast_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_fast_end.ogg"} +}) + + + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_end.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_bolt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_drum_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_drum_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_drum_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_drum_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_drum_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_drum_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_drum_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_drum_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_drum_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_fast_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_fast_drum_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_fast_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_fast_drum_mvnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_fast_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_fast_drum_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_fast_drum_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_fast_drum_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_fast_drum_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_fast_drum_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_drum_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_drum_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_drum_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_drum_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_drum_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_drum_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_drum_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_drum_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_drum_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_drum_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_drum_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_drum_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_drum_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_drum_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_drum_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_drum_boltpull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_drum_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_drum_boltforward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_aalpha12_reload_empty_fast_drum_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/aalpha12/wfoly_sh_aalpha12_reload_empty_fast_drum_end.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_sh_mike26.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_sh_mike26.lua new file mode 100644 index 0000000..834903b --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_sh_mike26.lua @@ -0,0 +1,581 @@ +AddCSLuaFile() + + +---Galima--- +sound.Add({ + name = "mw19.mike26.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/mike26/weap_mike26_fire_bang_plr_01.wav", + +}) +sound.Add({ + name = "mw19.mike26.fire.db", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/mike26/weap_mike26_fire_bang_plr_01_db.ogg", + "viper/weapons/mike26/weap_mike26_fire_bang_plr_02_db.ogg", + "viper/weapons/mike26/weap_mike26_fire_bang_plr_03_db.ogg"} +}) +sound.Add({ + name = "mw19.mike26.fire.s", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/mike26/weap_mike26_fire_plr_sup_01.ogg", + "viper/weapons/mike26/weap_mike26_fire_plr_sup_02.ogg", + "viper/weapons/mike26/weap_mike26_fire_plr_sup_03.ogg", + "viper/weapons/mike26/weap_mike26_fire_plr_sup_04.ogg", + "viper/weapons/mike26/weap_mike26_fire_plr_sup_05.ogg", + "viper/weapons/mike26/weap_mike26_fire_plr_sup_06.ogg", + "viper/weapons/mike26/weap_mike26_fire_plr_sup_07.ogg" + } +}) + + +sound.Add({ + name = "wfoly_plr_sh_mike26_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_drop_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_drop.ogg"} +}) + +sound.Add({ + name = "weap_sh_mike26_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_lm_pkilo_ads_up.ogg"} +}) +sound.Add({ + name = "weap_sh_mike26_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_lm_pkilo_ads_down.ogg"} +}) + + + + +sound.Add({ + name = "mw19.mike26.disconnector", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/romeo870/weap_romeo870_disconnector_plr_02.ogg", + "viper/weapons/romeo870/weap_romeo870_disconnector_plr_02.ogg", + "viper/weapons/romeo870/weap_romeo870_disconnector_plr_03.ogg", + "viper/weapons/romeo870/weap_romeo870_disconnector_plr_04.ogg", + "viper/weapons/romeo870/weap_romeo870_disconnector_plr_05.ogg" + } +}) +sound.Add({ + name = "mw19.mike26.fire.first", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/mike26/weap_mike26_prefire_plr_01.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_rechamber_01", + channel = CHAN_WPNFOLEY +1, + volume = 0.5, + pitch = {90,110}, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_rechamber.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mike26_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mike26_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mike26_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mike26_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_inspect_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mike26_inspect_05.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_inspect_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mike26_inspect_06.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_raise_first_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_raise_first_bolt_forward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_maghin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_smag_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_smag_arm_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_smag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_smag_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_smag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_smag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_smag_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_smag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_smag_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_smag_arm_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_smag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_smag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_smag_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_smag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_smag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_smag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_xmag_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_xmag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_xmag_magup.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_xmag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_xmag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_xmag_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_xmag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_xmag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_xmag_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_xmag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_xmag_arm_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_xmag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_xmag_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_xmag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_fast_xmag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_fast_xmag_end.ogg"} +}) + + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_bolt_pull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_mag_release.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_arm_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_08", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_bolt_forward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_09", + channel = CHAN_WPNFOLEY +9, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_end.ogg"} +}) + + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_bolt_pull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_arm_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_bolt_forward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_end.ogg"} +}) + + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_smag_bolt_pull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_smag_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_smag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_smag_arm_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_smag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_smag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_smag_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_smag_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_smag_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_smag_bolt_forward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_smag_08", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_smag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_smag_bolt_pull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_smag_arm_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_smag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_smag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_smag_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_smag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_smag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_smag_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_mike26_reload_empty_fast_smag_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mike26/wfoly_sh_mark26_reload_empty_fast_smag_bolt_forward.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_sm_secho.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_sm_secho.lua new file mode 100644 index 0000000..068f8a6 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_sm_secho.lua @@ -0,0 +1,620 @@ +AddCSLuaFile() + + +---Galima--- +sound.Add({ + name = "mw19.secho.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^weapons/secho/weap_secho_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.secho.fire.s", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = {"weapons/secho/weap_secho_sup_fire_plr_01.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_sm_secho_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_drop_01", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_drop.ogg"} +}) + +sound.Add({ + name = "weap_sm_secho_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_mpapa5_ads_up.ogg"} +}) +sound.Add({ + name = "weap_sm_secho_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_mpapa5_ads_down.ogg"} +}) + +sound.Add({ + name = "weap_secho_fire_first_plr", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"weapons/secho/weap_mpapa7_fire_first_plr_01.ogg"} +}) +sound.Add({ + name = "weap_secho_disconnector_plr", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"weapons/secho/weap_secho_disconnector_plr_01.ogg"} +}) + +sound.Add({ + name = "wfoly_plr_sm_secho_selectsemi_on_01", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"foley/wfoly_sm_secho_selectsemi_off.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_selectsemi_off_01", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"foley/wfoly_sm_secho_selectsemi_on.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_raise_first_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_raise_first_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_inspect_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_inspect_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_inspect_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_inspect_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_inspect_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_inspect_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_inspect_smag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_inspect_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_inspect_smag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_inspect_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_inspect_drum_drumout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_inspect_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_inspect_drum_drumin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_inspect_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_inspect_drum_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_smag_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_smag_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_smag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_smag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_smag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_smag_end.ogg"} +}) + + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_smag_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_smag_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_smag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_smag_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_smag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_smag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_smag_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_smag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_drum_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_drum_drumout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_drum_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_drum_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_drum_drumhit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_drum_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_drum_drumin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_drum_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_drum_end.ogg"} +}) + + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_drum_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_drum_drumout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_drum_drumhit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_drum_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_drum_drumin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_fast_drum_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_fast_drum_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_smag_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_smag_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_smag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_smag_maghit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_smag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_smag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_smag_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_smag_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_smag_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_smag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_smag_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_smag_magin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_smag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_smag_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_smag_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_smag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_drum_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_drum_drumout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_drum_drumhit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_drum_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_drum_drumin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_drum_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_drum_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_drum_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_drum_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_drum_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_drum_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_drum_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_drum_drumout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_drum_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_drum_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_drum_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_drum_drumhit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_drum_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_drum_drumin.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_drum_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_drum_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_secho_reload_empty_fast_drum_07", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"reloads/iw8_secho/wfoly_sm_secho_reload_empty_fast_drum_end.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_crossbow.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_crossbow.lua new file mode 100644 index 0000000..e25baad --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_crossbow.lua @@ -0,0 +1,269 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sn_crossbow.all.lua +-- Total length: 31 + +-- Sound: 1 +sound.Add({ + name = "weap_crossbow_fire_plr", + channel = CHAN_WPNFOLEY + 2, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "weapons/crossbow/shot_00.ogg", + } +}) +-- Sound: 8 +sound.Add({ + name = "wfoly_plr_sn_crossbow_drop_01", + channel = CHAN_WPNFOLEY + 5, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_drop.ogg", + } +}) +-- Sound: 9 +sound.Add({ + name = "wfoly_plr_sn_crossbow_drop_quick_01", + channel = CHAN_WPNFOLEY + 6, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_drop_quick.ogg", + } +}) +-- Sound: 10 +sound.Add({ + name = "wfoly_plr_sn_crossbow_inspect_01", + channel = CHAN_WPNFOLEY + 7, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_inspect_01.ogg", + } +}) +-- Sound: 11 +sound.Add({ + name = "wfoly_plr_sn_crossbow_inspect_02", + channel = CHAN_WPNFOLEY + 8, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_inspect_02.ogg", + } +}) +-- Sound: 12 +sound.Add({ + name = "wfoly_plr_sn_crossbow_inspect_03", + channel = CHAN_WPNFOLEY + 9, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_inspect_03.ogg", + } +}) +-- Sound: 13 +sound.Add({ + name = "wfoly_plr_sn_crossbow_inspect_04", + channel = CHAN_WPNFOLEY + 10, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_inspect_04.ogg", + } +}) +-- Sound: 14 +sound.Add({ + name = "wfoly_plr_sn_crossbow_inspect_05", + channel = CHAN_WPNFOLEY + 1, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_inspect_05.ogg", + } +}) +-- Sound: 15 +sound.Add({ + name = "wfoly_plr_sn_crossbow_raise_01", + channel = CHAN_WPNFOLEY + 2, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_raise.ogg", + } +}) +-- Sound: 16 +sound.Add({ + name = "wfoly_plr_sn_crossbow_raise_first_01", + channel = CHAN_WPNFOLEY + 3, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_raise_first_safety_off.ogg", + } +}) +-- Sound: 17 +sound.Add({ + name = "wfoly_plr_sn_crossbow_raise_first_02", + channel = CHAN_WPNFOLEY + 4, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_raise_first_end.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "wfoly_plr_sn_crossbow_raise_quick_01", + channel = CHAN_WPNFOLEY + 5, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_raise_quick.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_01", + channel = CHAN_WPNFOLEY + 6, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_rotate.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_02", + channel = CHAN_WPNFOLEY + 7, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_pull_string.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_03", + channel = CHAN_WPNFOLEY + 8, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_load_arrow.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_04", + channel = CHAN_WPNFOLEY + 9, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_lock_arrow_01.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_045", + channel = CHAN_WPNFOLEY + 10, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_lock_arrow_02.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_05", + channel = CHAN_WPNFOLEY + 1, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_end.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_fast_01", + channel = CHAN_WPNFOLEY + 2, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_fast_rotate.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_fast_02", + channel = CHAN_WPNFOLEY + 3, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_fast_pull_string.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_fast_03", + channel = CHAN_WPNFOLEY + 4, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_fast_arrow_up.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_fast_04", + channel = CHAN_WPNFOLEY + 5, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_fast_load_arrow_01.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_fast_045", + channel = CHAN_WPNFOLEY + 6, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_fast_load_arrow_02.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sn_crossbow_reload_fast_05", + channel = CHAN_WPNFOLEY + 7, + level = 140, + volume = 1, + pitch = {100,107}, + sound = { + "reloads/iw8_crossbow/wfoly_sn_crossbow_reload_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_kilo98.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_kilo98.lua new file mode 100644 index 0000000..cbb1e92 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_kilo98.lua @@ -0,0 +1,424 @@ +AddCSLuaFile() + +sound.Add({ + name = "mw19.kilo98.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/kilo98/weap_kilo98_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.kilo98.fire.s", + channel = CHAN_WEAPON, + level = 50, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/kilo98/weap_kilo98_sup_bang_plr_01.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_drop_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_drop_cloth.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_drop_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_drop_overshoulder.ogg"} +}) + + + +sound.Add({ + name = "weap_sn_kilo98_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_ads_up.ogg"} +}) +sound.Add({ + name = "weap_sn_kilo98_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_ads_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_rechamber_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_rechamber_cloth.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_rechamber_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_rechamber_boltopen_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_rechamber_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_rechamber_boltclose_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_rechamber_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_rechamber_end.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_rechamber_scope_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_rechamber_scope_boltopen_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_rechamber_scope_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_rechamber_scope_cloth01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_rechamber_scope_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_rechamber_scope_cloth02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_rechamber_scope_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_rechamber_scope_boltclose_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_rechamber_scope_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + pitch = {90,110}, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_rechamber_scope_hand.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_inspect_04.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_inspect_05", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_inspect_03.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_raise_first_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_raise_first_safety_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_boltopen_new.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_boltopen_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_cloth01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_load_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_load_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_cloth02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_boltclose_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_boltopen_new.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_cloth01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_load_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_load_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_cloth02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_boltclose_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_fast_boltopen_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_fast_clotharm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_fast_load_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_fast_load_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_fast_boltclose_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_fast_cloth.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_fast_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_fast_openbolt_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_fast_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_fast_load_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_fast_load_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_fast_end.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_empty_fast_closebolt_01.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_scope_loop_01", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_scope_loop_load.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_scope_loop_fast_01", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_scope_load_01.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_scope_start_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_scope_start_boltopen_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_scope_start_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_scope_start_cloth.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_scope_start_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_scope_start_load_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_scope_start_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_scope_start_load_02.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_scope_end_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_scope_end_boltclose_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_scope_end_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_scope_end_cloth.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_kilo98_reload_scope_end_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/kilo98/wfoly_sn_kilo98_reload_scope_end_shoulder.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_mike14.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_mike14.lua new file mode 100644 index 0000000..33cbc7e --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_mike14.lua @@ -0,0 +1,626 @@ +AddCSLuaFile() + +sound.Add({ + name = "mw19.mike14.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/mike14/weap_mike14_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.mike14.fire.last", + channel = CHAN_WPNFOLEY, + level = 140, + volume = 1, + sound = {"viper/weapons/mike14/weap_mike14_fire_plr_mech_last_01.ogg"} +}) +sound.Add({ + name = "mw19.mike14.fire.s", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/mike14/weap_mike14_sup_plr_01.wav" +}) + + +sound.Add({ + name = "mw19.mike14.fire.first", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/weap_mike14_first_fire_plr_01.ogg"} +}) +sound.Add({ + name = "mw19.mike14.disconnector", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/weap_mike14_disconnector_plr_01.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_sn_mike14_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_drop_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_drop.ogg"} +}) + + + +sound.Add({ + name = "weap_sn_mike14_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_ads_up.ogg"} +}) +sound.Add({ + name = "weap_sn_mike14_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_ads_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_inspect_04.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_raise_first_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_raise_first_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_magout_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_quick_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_quick_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_quick_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_quick_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_quick_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmag_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmag_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmag_tilt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmag_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmag_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmag_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmag_rattle.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmag_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmag_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmag_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmag_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmag_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmag_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmag_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmaglrg_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmaglrg_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmaglrg_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmaglrg_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmaglrg_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmaglrg_tilt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmaglrg_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmaglrg_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmaglrg_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmaglrg_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmaglrg_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmaglrg_rattle.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_xmaglrg_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_xmaglrg_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmaglrg_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmaglrg_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmaglrg_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmaglrg_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmaglrg_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmaglrg_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmaglrg_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmaglrg_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmaglrg_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmaglrg_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_fast_xmaglrg_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_fast_xmaglrg_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_magout_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_045", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_07", + channel = CHAN_WPNFOLEY +8, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_quick_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_quick_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_quick_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_quick_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_quick_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_sn_mike14_reload_empty_quick_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmag_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmag_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmag_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmag_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmag_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmag_end.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmag_charge_01.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmag_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmag_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmag_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmag_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmag_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmag_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmag_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmag_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmag_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmaglrg_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmaglrg_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmaglrg_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmaglrg_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmaglrg_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmaglrg_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmaglrg_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmaglrg_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmaglrg_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmaglrg_end.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_xmaglrg_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_xmaglrg_charge_01.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_magout_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_magin_v2_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_magin_v2_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/mike14/wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_end.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_romeo700.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_romeo700.lua new file mode 100644 index 0000000..ed2a68d --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_romeo700.lua @@ -0,0 +1,889 @@ +-- Sound: 6 +sound.Add({ + name = "weap_romeo700_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^weapons/romeo700/weap_romeo700_fire_bang_plr_01.wav" + +}) +-- Sound: 11 +sound.Add({ + name = "weap_romeo700_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/romeo700/weap_romeo700_sup_bang_plr_01.ogg" + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_sn_romeo700_drop_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_drop.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sn_romeo700_drop_quick_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_drop_quick.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_up.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_magout.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_maghit.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_magin.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_rotate.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_boltopen.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_07", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_boltclose.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_08", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_end.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_xmags_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_xmags_up.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_xmags_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_xmags_magout.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_xmags_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_xmags_maghit.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_xmags_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_xmags_magin.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_xmags_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_xmags_rotate.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_xmags_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_xmags_boltopen.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_xmags_07", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_xmags_boltclose.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sn_romeo700_inspect_xmags_08", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_inspect_xmags_end.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sn_romeo700_raise_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_raise.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sn_romeo700_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_raise_first_up.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sn_romeo700_raise_first_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_raise_first_boltclose.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sn_romeo700_raise_first_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_raise_first_end.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sn_romeo700_raise_quick_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_raise_quick.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sn_romeo700_rechamber_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_rechamber_bolt.ogg", + } +}) + +sound.Add({ + name = "wfoly_plr_sn_romeo700_rechamber_01_fast", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100, 100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_rechamber_bolt_fast.ogg", + } +}) + +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sn_romeo700_rechamber_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_rechamber_grab.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sn_romeo700_rechamber_bolthvy_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_rechamber_bolthvy_bolt.ogg", + } +}) + +sound.Add({ + name = "wfoly_plr_sn_romeo700_rechamber_bolthvy_01_fast", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_rechamber_bolthvy_bolt_fast.ogg", + } +}) + +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sn_romeo700_rechamber_bolthvy_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_rechamber_bolthvy_grab.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sn_romeo700_rechamber_boltl_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_rechamber_boltl_bolt.ogg", + } +}) + +sound.Add({ + name = "wfoly_plr_sn_romeo700_rechamber_boltl_01_fast", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_rechamber_boltl_bolt_fast.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sn_romeo700_rechamber_boltl_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_rechamber_boltl_grab.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_up.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_magout.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_maghit.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_magin.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_end.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_boltopen.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_magout.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_maghit.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_magin.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_rotate.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_boltclose.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_up.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_maghit.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_magin.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_boltopen.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_boltclose.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_grab.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_xmags_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_xmags_up.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_xmags_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_xmags_magout.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_xmags_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_xmags_maghit.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_xmags_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_xmags_magin.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_xmags_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_xmags_boltopen.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_xmags_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_xmags_boltclose.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_fast_xmags_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_fast_xmags_grab.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_xmags_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_xmags_up.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_xmags_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_xmags_boltopen.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_xmags_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_xmags_magout.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_xmags_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_xmags_maghit.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_xmags_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_xmags_magin.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_xmags_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_xmags_boltclose.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_empty_xmags_07", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_empty_xmags_grab.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_fast_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_fast_up.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_fast_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_fast_magout.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_fast_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_fast_maghit.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_fast_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_fast_magin.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_fast_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_fast_end.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_fast_xmags_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_fast_xmags_up.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_fast_xmags_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_fast_xmags_magout.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_fast_xmags_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_fast_xmags_maghit.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_fast_xmags_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_fast_xmags_magin.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_fast_xmags_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_fast_xmags_end.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_xmags_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_xmags_up.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_xmags_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_xmags_magout.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_xmags_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_xmags_maghit.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_xmags_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_xmags_magin.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_sn_romeo700_reload_xmags_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo700/wfoly_sn_remeo700_reload_xmags_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_sbeta.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_sbeta.lua new file mode 100644 index 0000000..417fd5a --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_sbeta.lua @@ -0,0 +1,249 @@ +AddCSLuaFile() + + +---Galima--- +sound.Add({ + name = "mw19.sbeta.fire.first", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/sbeta/weap_sbeta_fire_first_plr_01.ogg", + "viper/weapons/sbeta/weap_sbeta_fire_first_plr_02.ogg", + "viper/weapons/sbeta/weap_sbeta_fire_first_plr_03.ogg", + "viper/weapons/sbeta/weap_sbeta_fire_first_plr_04.ogg", + "viper/weapons/sbeta/weap_sbeta_fire_first_plr_05.ogg", + "viper/weapons/sbeta/weap_sbeta_fire_first_plr_06.ogg" +} +}) +sound.Add({ + name = "mw19.sbeta.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/sbeta/weap_sbeta_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.sbeta.fire.s", + channel = CHAN_WEAPON, + level = SNDLVL_GUNFIRE, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/sbeta/weap_sbeta_sup_plr_01.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_sn_sbeta_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_raise_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_raise_02", + channel = CHAN_WPNFOLEY +2, + volume = 2, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_raise_settle.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_drop_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_drop_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_drop_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_drop_down.ogg"} +}) + + + +sound.Add({ + name = "weap_sn_sbeta_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sn_sbeta_ads_up.ogg"} +}) +sound.Add({ + name = "weap_sn_sbeta_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sn_sbeta_ads_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sbeta_rechamber_02", + channel = CHAN_WPNFOLEY, + volume = 0.5, + pitch = {90,110}, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_rechamber.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_sbeta_rechamber_025", + channel = CHAN_WPNFOLEY, + volume = 0.5, + pitch = {90,110}, + sound = {"viper/weapons/sbeta/wfoly_sh_sbeta_rechamber_chamber_v3_01b.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sbeta_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sn_sbeta_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sn_sbeta_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sn_sbeta_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sn_sbeta_inspect_04.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sbeta_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_raise_first_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_raise_first_break_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_raise_first_close_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_raise_first_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sbeta_reload_start_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_start_beginning.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_reload_start_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_start_load_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_reload_start_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_start_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sbeta_reload_loop_01", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_loop_shells_01.ogg", + "viper/weapons/sbeta/wfoly_sbeta_sn_reload_loop_shells_02.ogg", + "viper/weapons/sbeta/wfoly_sbeta_sn_reload_loop_shells_03.ogg", + "viper/weapons/sbeta/wfoly_sbeta_sn_reload_loop_shells_04.ogg",} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_reload_loop_02", + channel = CHAN_WPNFOLEY, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_loop_load_01.ogg", + "viper/weapons/sbeta/wfoly_sbeta_sn_reload_loop_load_02.ogg", + "viper/weapons/sbeta/wfoly_sbeta_sn_reload_loop_load_03.ogg", + "viper/weapons/sbeta/wfoly_sbeta_sn_reload_loop_load_04.ogg",} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sbeta_reload_end_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_end_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_reload_end_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_end_cock.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sbeta_reload_end_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_end_finish.ogg"} +}) +sound.Add({ + name = "ps_wfoly_plr_sn_sbeta_reload_end_01_empty", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_end_start.ogg"} +}) +sound.Add({ + name = "ps_wfoly_plr_sn_sbeta_reload_end_02_empty", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_end_break_01.ogg"} +}) +sound.Add({ + name = "ps_wfoly_plr_sn_sbeta_reload_end_03_empty", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_end_cock.ogg"} +}) +sound.Add({ + name = "ps_wfoly_plr_sn_sbeta_reload_end_04_empty", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sbeta_sn_reload_end_finish.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sh_sbeta_reload_empty_end_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sh_sbeta_reload_empty_end_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_sbeta_reload_empty_end_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sbeta/wfoly_sh_sbeta_reload_empty_end_chamber_01_02.ogg", + "viper/weapons/sbeta/wfoly_sh_sbeta_reload_empty_end_chamber_01_03.ogg", + "viper/weapons/sbeta/wfoly_sh_sbeta_reload_empty_end_chamber_01_04.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_sksierra.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_sksierra.lua new file mode 100644 index 0000000..e21619c --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_sn_sksierra.lua @@ -0,0 +1,575 @@ +AddCSLuaFile() + +sound.Add({ + name = "mw19.sksierra.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^viper/weapons/sksierra/weap_sksierra_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.sksierra.fire.last", + channel = CHAN_WPNFOLEY, + level = 140, + volume = 1, + sound = {"viper/weapons/sksierra/weap_sksierra_fire_last_plr_mech_01.ogg"} +}) +sound.Add({ + name = "mw19.sksierra.fire.s", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = {"viper/weapons/sksierra/weap_sksierra_sup_plr_01.ogg"} +}) + + +sound.Add({ + name = "mw19.sksierra.fire.first", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/weap_sksierra_hammer_plr_01.ogg"} +}) +sound.Add({ + name = "mw19.sksierra.disconnector", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/weap_sksierra_disconnector_plr_01.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_raise_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_drop_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_drop.ogg"} +}) + + + +sound.Add({ + name = "weap_sn_sksierra_ads_up", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_mike14_ads_up.ogg"} +}) +sound.Add({ + name = "weap_sn_sksierra_ads_down", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_mike14_ads_down.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_inspect_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_inspect_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_inspect_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_inspect_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_inspect_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_inspect_03.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_inspect_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_inspect_04.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_raise_first_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_raise_first_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_raise_first_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_xmag_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_xmag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_xmag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_xmag_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_xmag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_xmag_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_xmag_end.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_xmag_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_xmag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_xmag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_xmag_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_xmag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_smag_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_smag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_smag_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_smag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_smag_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_smag_end.ogg"} +}) + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_smag_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_smag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_smag_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_smag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_fast_smag_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_fast_smag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_arm.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_06", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_xmag_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_xmag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_xmag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_xmag_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_xmag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_xmag_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_xmag_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_xmag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_xmag_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_xmag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_xmag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_xmag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_xmag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_xmag_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_xmag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_xmag_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_xmag_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_xmag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_xmag_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_xmag_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_xmag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_smag_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_smag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_smag_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_smag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_smag_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_smag_rotate.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_smag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_smag_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_smag_06", + channel = CHAN_WPNFOLEY +7, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_smag_end.ogg"} +}) + + + +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_smag_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_smag_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_smag_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_smag_magout.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_smag_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_smag_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_smag_035", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_smag_magin_02.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_smag_04", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_smag_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sn_sksierra_reload_empty_fast_smag_05", + channel = CHAN_WPNFOLEY +6, + volume = 1, + sound = {"viper/weapons/sksierra/wfoly_sn_sksierra_reload_empty_fast_smag_end.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_ui.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_ui.lua new file mode 100644 index 0000000..3de046a --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_ui.lua @@ -0,0 +1,18 @@ +AddCSLuaFile() + +----------- CUSTOMIZATION ----------- +sound.Add({ + name = "MW_UI.Attach", + channel = CHAN_USER_BASE, + volume = 1, + pitch = 100, + sound = {"viper/shared/iw8_general_select_v1.ogg"} +}) + +sound.Add({ + name = "MW_UI.Deattach", + channel = CHAN_USER_BASE, + pitch = 100, + volume = 1, + sound = {"viper/shared/iw8_general_select_alt_v1.ogg"} +}) \ No newline at end of file diff --git a/lua/weapons/mg_base/modules/sounds/mw_sounds_weapons_shared.lua b/lua/weapons/mg_base/modules/sounds/mw_sounds_weapons_shared.lua new file mode 100644 index 0000000..48489f9 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/mw_sounds_weapons_shared.lua @@ -0,0 +1,31 @@ +AddCSLuaFile() + +sound.Add({ + name = "MW.Explosion", + channel = CHAN_WEAPON, + volume = 1.0, + level = 140, + sound = "^viper/shared/rocket_expl_body_01.wav" +}) + +sound.Add({ + name = "MW.ExplosiveRounds", + channel = CHAN_WEAPON, + volume = 1.0, + level = 140, + soundlevel = SNDLVL_GUNFIRE, + sound = { + "viper/shared/frag_expl_body_01.ogg", + "viper/shared/frag_expl_body_02.ogg", + "viper/shared/frag_expl_body_03.ogg", + "viper/shared/frag_expl_body_04.ogg"} +}) + +sound.Add({ + name = "MW.Rocket_Fly_Loop", + channel = CHAN_WEAPON, + volume = 1.0, + soundlevel = SNDLVL_NONE, + sound = { + "^viper/shared/move_rpapa7_proj_flame_cls.wav"} +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_ar_mgolf36.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_ar_mgolf36.all.lua new file mode 100644 index 0000000..e869f64 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_ar_mgolf36.all.lua @@ -0,0 +1,812 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_ar_mgolf36.all.lua +-- Total length: 96 + +-- Sound: 14 +sound.Add({ + name = "weap_mgolf36_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {98,101}, + sound = + "^weapons/mgolf36/weap_mgolf36_fire_plr_01.wav", + +}) +-- Sound: 14 +sound.Add({ + name = "weap_mgolf36_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {98,101}, + sound = + "^weapons/mgolf36/weap_mgolf36_sup_plr_01.wav", + +}) +-- Sound: 14 +sound.Add({ + name = "weap_mgolf36_fire_prefire", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {98,101}, + sound = { + "weapons/mgolf36/weap_mgolf36_fire_first_plr_01.ogg", + } +}) +sound.Add({ + name = "weap_mgolf36_fire_disconnector", + channel = CHAN_WPNFOLEY +1, + volume = 1, + pitch = {98,101}, + sound = { + "weapons/mgolf36/weap_mgolf36_disconnector_plr_01.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_ar_inspect_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_ar_inspect_01.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_ar_inspect_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_ar_inspect_02.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_ar_inspect_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_ar_inspect_03.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_drop_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_drop.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_drop_quick_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_drop_quick.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_fire_switch_off_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_fire_switch_off_mvmnt.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_fire_switch_off_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_fire_switch_off_swtich.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_fire_switch_on_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_fire_switch_on_mvmnt.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_fire_switch_on_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_fire_switch_on_click.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_hybrid_toggle_off_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_hybrid_toggle_off.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_hybrid_toggle_on_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_fire_hybrid_toggle_on.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_inspect_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_inspect_01.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_inspect_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_inspect_02.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_inspect_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_inspect_03.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_raise_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_raise.ogg", + } +}) +-- Sound: 45 p2 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_raise_first_lift.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_mgolf36_raise_first_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_raise_first_bolt_pull.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_mgolf36_raise_first_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_raise_first_down_grab.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_mgolf36_raise_first_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_raise_first_bolt_release.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_mgolf36_raise_first_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_raise_first_end.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_raise_quick_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_raise_quick.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_lift.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_drum_out.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_arm_up.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_drum_hit_well.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_drum_in.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_drum_smack.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_end.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_armag_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_armag_lift.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_armag_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_armag_magout.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_armag_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_armag_hit_mag_well.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_armag_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_armag_magin.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_armag_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_armag_end.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_lift.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_drum_mag_out.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_drum_mag_hit_well.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_drum_mag_in.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_drum_smack.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_bolt_lever.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_07", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_charge.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_08", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_end.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_armag_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_armag_lift.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_armag_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_armag_magout.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_armag_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_armag_mag_hit_well.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_armag_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_armag_magin.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_armag_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_armag_charge.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_armag_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_armag_end.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_lift.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_drum_mag_out.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_armup.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_drum_mag_hit_well.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_drum_magin.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_charge.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_end.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_armag_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_armag_lift.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_armag_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_armag_magoui.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_armag_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_armag_mag_hit_well.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_armag_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_armag_magin.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_armag_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_armag_bolt_release.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_empty_fast_armag_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_empty_fast_armag_end.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_fast_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_fast_lift.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_fast_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_fast_drum_magout.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_fast_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_fast_drum_mag_hit_well.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_fast_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_fast_drum_magin.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_fast_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_fast_end.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_fast_armag_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_fast_armag_lift.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_fast_armag_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_fast_armag_magout.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_fast_armag_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_fast_armag_mag_well_hit.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_fast_armag_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_fast_armag_magin.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_lm_mgolf36_reload_fast_armag_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf36/wfoly_lm_mgolf36_reload_fast_armag_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_lm_kilo121.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_lm_kilo121.all.lua new file mode 100644 index 0000000..070669e --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_lm_kilo121.all.lua @@ -0,0 +1,993 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_lm_kilo121.all.lua +-- Total length: 92 + +-- Sound: 0 +sound.Add({ + name = "mount_enter_side_kilo121_vestlight_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_side_kilo121_vestlight_plr.ogg", + } +}) +-- Sound: 1 +sound.Add({ + name = "mount_enter_top_kilo121_vestlight_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_top_kilo121_vestlight_plr.ogg", + } +}) +-- Sound: 2 +sound.Add({ + name = "mount_exit_side_kilo121_vestlight_plr", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_side_kilo121_vestlight_plr.ogg", + } +}) +-- Sound: 3 +sound.Add({ + name = "mount_exit_top_kilo121_vestlight_plr", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_top_kilo121_vestlight_plr.ogg", + } +}) +-- Sound: 4 +sound.Add({ + name = "weap_kilo121_dryfire_plr", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/weap_dryfire_rifle.ogg", + } +}) +-- Sound: 5 +sound.Add({ + name = "weap_kilo121_dryfirst_plr", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/iw8_kilo121/weap_kilo121_prefire_plr_01.ogg", + } +}) +-- Sound: 8 +sound.Add({ + name = "weap_kilo121_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,100}, + sound = + "^weapons/kilo121/weap_kilo121_fire_plr_01.wav", + +}) +sound.Add({ + name = "weap_kilo121_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,100}, + sound = + "^weapons/kilo121/weap_scharlie_sup_plr_01.wav", + +}) +-- Sound: 15 +sound.Add({ + name = "weap_lm_kilo121_ads_down", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_ads_down.ogg", + } +}) +-- Sound: 16 +sound.Add({ + name = "weap_lm_kilo121_ads_up", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_ads_up.ogg", + } +}) +-- Sound: 17 +sound.Add({ + name = "weap_lm_kilo121_selector_off", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_m4_selector_semi_on_01.ogg", + "foley/selector/weap_m4_selector_semi_on_02.ogg", + "foley/selector/weap_m4_selector_semi_on_03.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "weap_lm_kilo121_selector_on", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_m4_selector_semi_on_01.ogg", + "foley/selector/weap_m4_selector_semi_on_02.ogg", + "foley/selector/weap_m4_selector_semi_on_03.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "wfoly_plr_lm_kilo121_drop_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_drop.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "wfoly_plr_lm_kilo121_drop_empty_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_drop_empty.ogg", + } +}) + +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_raise_first_raise.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_first_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_raise_first_drop.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_first_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_raise_first_cloth02.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_first_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_raise_first_cloth01.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_first_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_raise_first_boltopen_01.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_first_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_raise_first_cloth02.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_first_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_raise_first_boltclose_01.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_first_08", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_raise_first_rattle.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_first_09", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_raise_first_end.ogg", + } +}) + + + +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_lm_kilo121_drop_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_drop_fast.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_lm_kilo121_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_kilo121_hybrid_side_off.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_lm_kilo121_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_kilo121_hybrid_side_on.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_lm_kilo121_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_lm_kilo121_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_lm_kilo121_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_kilo121_hybrid_top_in.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_lm_kilo121_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_kilo121_hybrid_top_out.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_lm_kilo121_inspect_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_inspect_01.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_lm_kilo121_inspect_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_inspect_02.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_lm_kilo121_inspect_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_inspect_03.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_raise.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_empty_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_raise_empty.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_lm_kilo121_raise_fast_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo98/wfoly_lm_kilo121_raise_fast.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_raise.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_boltopen_01.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_lower.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_boltclose_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_coveropen_01.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_magout_01.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_boxmag.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_08", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_magin_01.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_09", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_click_01.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_10", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_coverclose_01.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_11", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_end.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_lift.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_raise_01.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_boltopen_01.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_boltclose_01.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_lower.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_mvmnt01.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_07", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_coveropen_01.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_08", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_clean.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_09", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_inspect.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_10", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_magout_01.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_11", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_beltmvmnt.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_12", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_boxmag.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_13", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_magin_01.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_14", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_mvmnt02.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_15", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_click_01.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_16", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_coverclose_01.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_17", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_end.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_rotate.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_boltopen_01.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_boltclose_01.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_lower.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_mvmnt01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_coveropen_01.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_08", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_rattle.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_09", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_boxmag.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_10", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_magin_01.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_11", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_mvmnt02.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_12", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_clean.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_13", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_close.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_14", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_cloth.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_empty_fast_15", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_empty_fast_end.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_fast_mvmnt.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_fast_boltopen_01.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_fast_boltclose_01.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_fast_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_fast_coverrelease_01.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_fast_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_fast_coveropen_01.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_fast_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_fast_magout_01.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_fast_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_fast_magin_01.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_fast_08", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_fast_ammobelt_01.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_fast_09", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_fast_cloth.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_fast_10", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_fast_coverclose_01.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_lm_kilo121_reload_fast_11", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_reload_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_lm_lima86.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_lm_lima86.all.lua new file mode 100644 index 0000000..0d38f85 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_lm_lima86.all.lua @@ -0,0 +1,552 @@ +-- Generated by GmodSoundGen + +-- Sound: 11 +sound.Add({ + name = "weap_lima86_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,100}, + sound = + "^weapons/lima86/weap_l86_fire_plr.wav", + +}) +-- Sound: 18 +sound.Add({ + name = "weap_lima86_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,100}, + sound = + "^weapons/lima86/weap_l86_sup_plr.wav", + +}) + +sound.Add({ + name = "weap_lima86_fire_disconnector", + channel = CHAN_WPNFOLEY +1, + volume = 1, + pitch = {80,100}, + sound = { + "weapons/lima86/weap_lima86_disconnector_plr_01.ogg", + } +}) +sound.Add({ + name = "weap_lima86_fire_first", + channel = CHAN_WPNFOLEY +2, + volume = 1, + pitch = {80,100}, + sound = { + "weapons/lima86/weap_lima86_fire_first_plr_01.ogg", + } +}) + +sound.Add({ + name = "wfoly_plr_lm_lima86_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_raise_first_start.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_lima86_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_raise_first_charge_01.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_lima86_raise_first_03", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_raise_first_end.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "weap_lm_lima86_ads_down", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/weap_ar_lima86_ads_down.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "weap_lm_lima86_ads_up", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/weap_ar_lima86_ads_up.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "weap_lm_lima86_selector_off", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_lm_lima86_selector_off.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_lm_lima86_selector_on", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_lm_lima86_selector_on.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_lm_lima86_drop_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_drop.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_lm_lima86_drop_quick_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_drop_quick.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_lm_lima86_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_lima86_hybrid_side_off.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_lm_lima86_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_lima86_hybrid_side_on.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_lm_lima86_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_lm_lima86_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_lm_lima86_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_lima86_hybrid_top_in.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_lm_lima86_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_lima86_hybrid_top_out.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_lm_lima86_inspect_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_inspect_01.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_lm_lima86_inspect_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_inspect_02.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_lm_lima86_inspect_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_inspect_03.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_lm_lima86_inspect_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_inspect_04.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_lm_lima86_raise_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_raise.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_lm_lima86_raise_quick_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_raise_quick.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_start.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_magout_01.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_rotate.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_magin_v2_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_045", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_magin_v2_02.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_end_01.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_end_02.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_start.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_magout_01.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_rotate.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_045", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_end.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_charge_01.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_fast_start.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_fast_magin_v2_01.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_fast_035", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_fast_magin_v2_02.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_fast_hit.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_fast_charge_01.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_empty_fast_end.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_fast_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_fast_start.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_fast_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_fast_magout_01.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_fast_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_fast_magin_v2_01.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_fast_035", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_fast_magin_v2_02.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_lm_lima86_reload_fast_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_lima86/wfoly_lm_lima86_reload_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_lm_mgolf34.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_lm_mgolf34.all.lua new file mode 100644 index 0000000..7a5eba2 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_lm_mgolf34.all.lua @@ -0,0 +1,1012 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_lm_mgolf34.all.lua +-- Total length: 93 + +-- Sound: 0 +sound.Add({ + name = "mount_enter_side_mgolf34_vestlight_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_side_mgolf34_vestlight_plr.ogg", + } +}) +-- Sound: 1 +sound.Add({ + name = "mount_enter_top_mgolf34_vestlight_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_top_mgolf34_vestlight_plr.ogg", + } +}) +-- Sound: 2 +sound.Add({ + name = "mount_exit_side_mgolf34_vestlight_plr", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_side_mgolf34_vestlight_plr.ogg", + } +}) +-- Sound: 3 +sound.Add({ + name = "mount_exit_top_mgolf34_vestlight_plr", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_top_mgolf34_vestlight_plr.ogg", + } +}) +-- Sound: 4 +sound.Add({ + name = "weap_lm_mgolf34_ads_down", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/weap_lm_mgolf34_ads_down.ogg", + } +}) +-- Sound: 5 +sound.Add({ + name = "weap_lm_mgolf34_ads_up", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/weap_lm_mgolf34_ads_up.ogg", + } +}) +-- Sound: 6 +sound.Add({ + name = "weap_lm_mgolf34_selector_off", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_lm_mgolf34_selector_off.ogg", + } +}) +-- Sound: 7 +sound.Add({ + name = "weap_lm_mgolf34_selector_on", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_lm_mgolf34_selector_on.ogg", + } +}) +-- Sound: 9 +sound.Add({ + name = "weap_mgolf34_dryfire_plr", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/weap_dryfire_rifle.ogg", + } +}) +-- Sound: 11 +sound.Add({ + name = "weap_mgolf34_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,100}, + sound = + "^weapons/mgolf34/weap_mgolf34_fire_plr_01.wav", + +}) +-- Sound: 11 +sound.Add({ + name = "weap_mgolf34_fire_prefire", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mgolf34/weap_mgolf34_prefire_plr_01.ogg", + } +}) +sound.Add({ + name = "weap_mgolf34_fire_disconnector", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mgolf34/weap_mgolf34_disconnector_plr_01.ogg", + } +}) +-- Sound: 13 +sound.Add({ + name = "weap_mgolf34_fire_plr_lfe", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/m4/weap_m4_fire_lfe1.ogg", + "weapons/m4/weap_m4_fire_lfe1.ogg", + } +}) +-- Sound: 16 +sound.Add({ + name = "weap_mgolf34_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,100}, + sound = + "^weapons/mgolf34/weap_mgolf34_sup_plr_01.wav", + +}) +-- Sound: 18 +sound.Add({ + name = "weap_mgolf34_sup_plr_lfe", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/iw8_kilo121/weap_kilo121_fire_plr_lfe.ogg", + "weapons/iw8_kilo121/weap_kilo121_fire_plr_lfe.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_drop", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_drop.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_mgolf34_hybrid_side_off.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_mgolf34_hybrid_side_on.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_mgolf34_hybrid_top_in.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_mgolf34_hybrid_top_out.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_inspect_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_lm_mgolf34_inspect_01.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_inspect_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_lm_mgolf34_inspect_02.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_inspect_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_lm_mgolf34_inspect_03.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_raise_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_raise_up.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_raise_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_raise_settle.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_raise_first_start.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_mgolf34_raise_first_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_raise_first_boltopen_01.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_mgolf34_raise_first_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_raise_first_pull.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_mgolf34_raise_first_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_raise_first_boltclose_01.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_mgolf34_raise_first_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_raise_first_end.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_raise_quick_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_raise_quick_up.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_raise_quick_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_raise_quick_settle.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_up.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_setlle.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_pull.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_boltopen_01.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_boltclose_01.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_open.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_07", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_coveropen_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_08", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_magrattles.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_09", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_drumoff_01.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_10", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_adjust.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_11", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_drumon_01.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_12", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_elbow.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_13", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_belt_01.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_14", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_close.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_15", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_coverclose_01.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_16", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_raise.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_17", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_end.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_start.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_boltopen_01.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_pull.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_boltclose_01.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_open.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_coveropen_01.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_07", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_adjust.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_08", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_drumoff_01.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_09", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_rattle.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_10", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_drumon_01.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_11", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_hands.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_12", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_belt_01.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_13", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_coverclose_01.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_14", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_end.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_start.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_pull.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_boltopen_01.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_boltclose_01.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_coveropen_01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_open.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_adjust.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_08", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_drumoff_01.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_09", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_rattle.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_10", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_drumon_01.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_11", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_hands.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_12", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_belt_01.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_13", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_coverclose_01.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_empty_fast_14", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_empty_fast_end.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_start.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_pull.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_boltopen_01.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_boltclose_01.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_open.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_coveropen_01.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_07", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_drumoff_01.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_08", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_adjust.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_09", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_drumon_01.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_10", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_rattle.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_11", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_belt_01.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_12", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_coverclose_01.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_lm_mgolf34_reload_fast_13", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mgolf34/wfoly_plr_lm_mgolf34_reload_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_lm_mkilo3.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_lm_mkilo3.all.lua new file mode 100644 index 0000000..2e71c23 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_lm_mkilo3.all.lua @@ -0,0 +1,1365 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_lm_mkilo3.all.lua +-- Total length: 125 + +-- Sound: 5 +sound.Add({ + name = "weap_lm_mkilo3_ads_down", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_ads_down.ogg", + } +}) +-- Sound: 6 +sound.Add({ + name = "weap_lm_mkilo3_ads_up", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_kilo121/wfoly_lm_kilo121_ads_up.ogg", + } +}) +-- Sound: 7 +sound.Add({ + name = "weap_lm_mkilo3_selector_off", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_m4_selector_semi_on_01.ogg", + "foley/selector/weap_m4_selector_semi_on_02.ogg", + "foley/selector/weap_m4_selector_semi_on_03.ogg", + } +}) +-- Sound: 8 +sound.Add({ + name = "weap_lm_mkilo3_selector_on", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_m4_selector_semi_on_01.ogg", + "foley/selector/weap_m4_selector_semi_on_02.ogg", + "foley/selector/weap_m4_selector_semi_on_03.ogg", + } +}) +-- Sound: 9 +sound.Add({ + name = "weap_mkilo3_dryfire_plr", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/weap_dryfire_rifle.ogg", + } +}) +-- Sound: 10 +sound.Add({ + name = "weap_mkilo3_dryfirst_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mike14/weap_mike14_deadtrigger_plr_01.ogg", + "weapons/mike14/weap_mike14_deadtrigger_plr_02.ogg", + "weapons/mike14/weap_mike14_deadtrigger_plr_03.ogg", + "weapons/mike14/weap_mike14_deadtrigger_plr_04.ogg", + "weapons/mike14/weap_mike14_deadtrigger_plr_05.ogg", + "weapons/mike14/weap_mike14_deadtrigger_plr_06.ogg", + "weapons/mike14/weap_mike14_deadtrigger_plr_ads_01.ogg", + "weapons/mike14/weap_mike14_deadtrigger_plr_ads_02.ogg", + "weapons/mike14/weap_mike14_deadtrigger_plr_ads_03.ogg", + "weapons/mike14/weap_mike14_deadtrigger_plr_ads_04.ogg", + "weapons/mike14/weap_mike14_deadtrigger_plr_ads_05.ogg", + "weapons/mike14/weap_mike14_deadtrigger_plr_ads_06.ogg", + } +}) +-- Sound: 11 +sound.Add({ + name = "weap_mkilo3_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/mkilo3/weap_mkilo3_fire_plr_01.wav", + +}) +-- Sound: 12 +sound.Add({ + name = "weap_mkilo3_fire_plr_atmo", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/atmo/exterior/ar/weap_ar5_fire_plr_atmo_ext1_01.ogg", + "weapons/atmo/exterior/ar/weap_ar5_fire_plr_atmo_ext1_02.ogg", + "weapons/atmo/exterior/ar/weap_ar5_fire_plr_atmo_ext1_03.ogg", + "weapons/atmo/exterior/ar/weap_ar5_fire_plr_atmo_ext1_04.ogg", + "weapons/atmo/exterior/ar/weap_ar5_fire_plr_atmo_ext1_05.ogg", + "weapons/atmo/exterior/ar/weap_ar5_fire_plr_atmo_ext1_06.ogg", + "weapons/atmo/interior/lmg/weap_lmg_fire_plr_atmo_int1_01.ogg", + "weapons/atmo/interior/lmg/weap_lmg_fire_plr_atmo_int1_02.ogg", + "weapons/atmo/interior/lmg/weap_lmg_fire_plr_atmo_int1_03.ogg", + "weapons/atmo/interior/lmg/weap_lmg_fire_plr_atmo_int1_04.ogg", + "weapons/atmo/interior/lmg/weap_lmg_fire_plr_atmo_int1_05.ogg", + "weapons/atmo/interior/lmg/weap_lmg_fire_plr_atmo_int1_06.ogg", + } +}) +-- Sound: 13 +sound.Add({ + name = "weap_mkilo3_fire_plr_lfe", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/iw8_kilo121/weap_kilo121_fire_plr_lfe.ogg", + "weapons/iw8_kilo121/weap_kilo121_fire_plr_lfe.ogg", + } +}) +-- Sound: 15 +sound.Add({ + name = "weap_mkilo3_prefire_plr", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mkilo3/weap_mkilo3_prefire_plr_01.ogg", + "weapons/mkilo3/weap_mkilo3_prefire_plr_ads_01.ogg", + } +}) +-- Sound: 16 +sound.Add({ + name = "weap_mkilo3_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/mkilo3/weap_mkilo3_sup_plr_01.wav", + +}) +-- Sound: 17 +sound.Add({ + name = "weap_mkilo3_sup_plr_atmo", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext2_01.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext2_02.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext2_03.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext2_04.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext2_05.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext2_06.ogg", + "weapons/atmo/interior/ar_sup/weap_ar_sup_fire_plr_atmo_int1_01.ogg", + "weapons/atmo/interior/ar_sup/weap_ar_sup_fire_plr_atmo_int1_02.ogg", + "weapons/atmo/interior/ar_sup/weap_ar_sup_fire_plr_atmo_int1_03.ogg", + "weapons/atmo/interior/ar_sup/weap_ar_sup_fire_plr_atmo_int1_04.ogg", + "weapons/atmo/interior/ar_sup/weap_ar_sup_fire_plr_atmo_int1_05.ogg", + "weapons/atmo/interior/ar_sup/weap_ar_sup_fire_plr_atmo_int1_06.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "weap_mkilo3_sup_plr_lfe", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mkilo3/weap_mkilo3_sup_plr_lfe.ogg", + "weapons/mkilo3/weap_mkilo3_sup_plr_lfe.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_first_up.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_raise_first_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_first_charge_pull.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "wfoly_npc_lm_mkilo3_raise_first_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_first_charge_push.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_npc_lm_mkilo3_raise_first_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_first_charge_end.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_drop_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_drop.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_drop_empty_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_drop_empty.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_drop_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_drop_fast.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_drop_fast_smag_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_drop_fast_smag.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_drop_smag_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_drop_smag.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_mgolf34_hybrid_side_off.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_mgolf34_hybrid_side_on.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_mgolf34_hybrid_top_in.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_mgolf34_hybrid_top_out.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_idle_active_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_idle_active_01.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_idle_active_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_idle_active_02.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_idle_active_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_idle_active_03.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_idle_active_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_idle_active_04.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_idle_active_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_idle_active_05.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_idle_active_smag_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_idle_active_smag_01.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_idle_active_smag_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_idle_active_smag_02.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_idle_active_smag_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_idle_active_smag_03.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_idle_active_smag_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_idle_active_smag_04.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_idle_active_smag_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_idle_active_smag_05.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_inspect_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_inspect_01.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_inspect_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_inspect_02.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_inspect_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_inspect_03.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_inspect_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_inspect_04.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_raise_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_raise_empty_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_empty.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_raise_fast_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_fast.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_raise_fast_smag_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_fast_smag.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_raise_first_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_first_charge_push.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_raise_first_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_first_charge_end.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_raise_first_smag_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_first_smag_charge.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_raise_first_smag_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_first_smag_end.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_raise_smag_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_raise_smag.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_down.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_cover_open.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_magout.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_magup.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_magin_01.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_055", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_magin_02.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_magin_load_belt.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_07", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_cover_close.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_08", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_end.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_down.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_charge_pull.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_charge_push.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_up.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_cover_open.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_magin_links.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_07", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_tray_cover.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_08", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_magout.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_09", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_magup.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_10", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_magin_01.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_105", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_magin_02.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_11", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_load_belt.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_12", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_cover_close.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_13", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_end.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_down.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_charge_pull.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_charge_push.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_mvmnt.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_cover_open.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_magup.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_08", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_magin_01.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_085", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_magin_02.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_09", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_load_belt.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_10", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_cover_close.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_fast_11", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_end.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_smag_up.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_smag_magout.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_smag_maghit.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_smag_magin.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_smag_magslap.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_smag_charge_pull.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_07", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_smag_charge_push.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_08", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_smag_end.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_fast_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_smag_up.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_fast_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_smag_magout.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_fast_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_smag_magin_01.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_fast_035", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_smag_magin_02.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_fast_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_smag_mvmnt.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_fast_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_smag_charge.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_empty_smag_fast_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_empty_fast_smag_end.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_fast_up.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_fast_cover_open.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_fast_magout.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_fast_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_fast_magup.ogg", + } +}) +-- Sound: 110 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_fast_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_fast_magin_01.ogg", + } +}) +-- Sound: 111 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_fast_055", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_fast_magin_02.ogg", + } +}) +-- Sound: 112 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_fast_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_fast_load_belt.ogg", + } +}) +-- Sound: 113 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_fast_07", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_fast_close_cover.ogg", + } +}) +-- Sound: 114 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_fast_08", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_fast_end.ogg", + } +}) +-- Sound: 115 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_smag_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_smag_up.ogg", + } +}) +-- Sound: 116 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_smag_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_smag_magout.ogg", + } +}) +-- Sound: 117 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_smag_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_smag_maghit.ogg", + } +}) +-- Sound: 118 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_smag_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_smag_magin.ogg", + } +}) +-- Sound: 119 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_smag_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_smag_end.ogg", + } +}) +-- Sound: 120 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_smag_fast_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_smag_fast_up.ogg", + } +}) +-- Sound: 121 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_smag_fast_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_smag_fast_magout.ogg", + } +}) +-- Sound: 122 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_smag_fast_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_smag_fast_maghit.ogg", + } +}) +-- Sound: 123 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_smag_fast_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_smag_fast_magin.ogg", + } +}) +-- Sound: 124 +sound.Add({ + name = "wfoly_plr_lm_mkilo3_reload_smag_fast_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mkilo3/wfoly_lm_mkilo3_reload_smag_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_lm_pkilo.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_lm_pkilo.all.lua new file mode 100644 index 0000000..cefa6af --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_lm_pkilo.all.lua @@ -0,0 +1,794 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_lm_pkilo.all.lua +-- Total length: 80 + +-- Sound: 4 +sound.Add({ + name = "weap_lm_pkilo_ads_down", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_lm_pkilo_ads_down.ogg", + } +}) +-- Sound: 5 +sound.Add({ + name = "weap_lm_pkilo_ads_up", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_lm_pkilo_ads_up.ogg", + } +}) +-- Sound: 8 +sound.Add({ + name = "weap_pkilo_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,100}, + sound = + "^weapons/pkilo/weap_pkilo_fire_plr_01.wav", + +}) +-- Sound: 12 +sound.Add({ + name = "weap_pkilo_prefire_plr", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/pkilo/weap_pkilo_prefire_plr_01.ogg", + } +}) +-- Sound: 13 +sound.Add({ + name = "weap_pkilo_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,100}, + sound = + "^weapons/pkilo/weap_pkilo_sup_plr_01.wav", + +}) +-- Sound: 17 +sound.Add({ + name = "wfoly_plr_lm_pkilo_drop_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_drop.ogg", + } +}) +-- Sound: 17 +sound.Add({ + name = "wfoly_plr_lm_pkilo_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_raise_first_lift.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_pkilo_raise_first_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_raise_first_handle.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_pkilo_raise_first_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_raise_first_charge.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_pkilo_raise_first_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_raise_first_end.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "wfoly_plr_lm_pkilo_drop_empty_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_drop_empty.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "wfoly_plr_lm_pkilo_drop_quick_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_drop_quick.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "wfoly_plr_lm_pkilo_gun_butt_hit_01_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_gun_butt_hit_01.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_lm_pkilo_gun_butt_hit_02_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_gun_butt_hit_02.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_lm_pkilo_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_pkilo_hybrid_side_off.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_lm_pkilo_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_pkilo_hybrid_side_on.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_lm_pkilo_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_lm_pkilo_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_lm_pkilo_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_pkilo_hybrid_top_in.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_lm_pkilo_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_pkilo_hybrid_top_out.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_lm_pkilo_idle_active_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_idle_active_mvmnt_1.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_lm_pkilo_idle_active_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_idle_active_mvmnt_2.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_lm_pkilo_idle_active_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_idle_active_mvmnt_3.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_lm_pkilo_idle_active_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_idle_active_mvmnt_4.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_lm_pkilo_inspect_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_lm_pkilo_inspect_01.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_lm_pkilo_inspect_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_lm_pkilo_inspect_02.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_lm_pkilo_inspect_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_lm_pkilo_inspect_03.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_lm_pkilo_raise_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_raise.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_lm_pkilo_raise_empty_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_raise_empty.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_lm_pkilo_raise_first_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_raise_first_end.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_lm_pkilo_raise_quick_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_raise_quick.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_raise.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_charge.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_cover_open.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_magout.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_04_lift", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_lift.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_magin_v2_01.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_055", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_magin_v2_02.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_ammobelt.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_07", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_cover_close.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_08", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_load_charge.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_09", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_end.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_charge.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_cover_open.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_magout.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_lift.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_055", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_ammobelt.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_07", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_cover_close.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_08", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_load_charge.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_09", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_end.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_fast_raise.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_fast_charge.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_fast_cover_open.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_fast_magin_v2_01.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_fast_055", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_fast_magin_v2_02.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_fast_ammobelt.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_fast_cover_close.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_fast_08", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_fast_load_charge.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_empty_fast_09", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_empty_fast_end.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_fast_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_fast_raise.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_fast_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_fast_charge.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_fast_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_fast_cover_open.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_fast_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_fast_magout.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_fast_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_fast_magin_v2_01.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_fast_055", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_fast_magin_v2_02.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_fast_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_fast_ammobelt.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_fast_07", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_fast_cover_close.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_fast_08", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_fast_load_charge.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_lm_pkilo_reload_fast_09", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_plr_lm_pkilo_reload_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_lm_sierrax.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_lm_sierrax.all.lua new file mode 100644 index 0000000..af5602d --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_lm_sierrax.all.lua @@ -0,0 +1,1016 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_lm_sierrax.all.lua +-- Total length: 111 + +-- Sound: 10 +sound.Add({ + name = "weap_sierrax_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {75,110}, + sound = + "^weapons/sierrax/weap_sierrax_fire_plr_01.wav", + +}) +-- Sound: 14 +sound.Add({ + name = "weap_sierrax_prefire_plr", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {80,100}, + sound = { + "weapons/sierrax/weap_sierrax_prefire_plr_01.ogg", + } +}) +-- Sound: 15 +sound.Add({ + name = "weap_sierrax_sup_plr", + channel = CHAN_WPNFOLEY + 6, + level = 140, + volume = 1, + pitch = {75,110}, + sound = + "^weapons/sierrax/weap_sierrax_sup_plr_01.wav", + +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_lm_sierrax_drop_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_drop.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_lm_sierrax_drop_fast_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_drop_fast.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_lm_sierrax_inspect_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_inspect_lift.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_lm_sierrax_inspect_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_inspect_rotate.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_lm_sierrax_inspect_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_inspect_lower.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_lm_sierrax_inspect_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_inspect_end.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_lm_sierrax_raise_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_raise.ogg", + } +}) + + +sound.Add({ + name = "wfoly_plr_lm_sierrax_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_raise_first_lift.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_sierrax_raise_first_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_raise_first_coverplate.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_sierrax_raise_first_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_raise_first_end.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_lm_sierrax_raise_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_raise_fast.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_lift.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_coveropen.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_magout.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_rotate.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_maghit.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_magin.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_07", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_beltpull.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_08", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_bullets.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_09", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_closecover.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_10", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_end.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_lift.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_charge.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_coveropen.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_magout.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_adjust.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_magup.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_07", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_maghit.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_08", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_magin.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_09", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_bullets.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_10", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_coverclose.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_11", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_end.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_lift.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_charge.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_coveropen.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_adjust.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_magup.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_magin.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_08", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_beltpull.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_09", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_coverclose.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_10", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_end.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_xmag_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_xmag_rattle.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_xmag_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_xmag_charge.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_xmag_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_xmag_coveropen.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_xmag_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_xmag_magout.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_xmag_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_xmag_mvmnt.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_xmag_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_xmag_maghit.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_xmag_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_xmag_magin.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_xmag_08", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_xmag_bullets.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_xmag_09", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_xmag_coverclose.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_fast_xmag_10", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_fast_xmag_end.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_xmag_lift.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_xmag_charge.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_xmag_coveropen.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_xmag_magout.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_xmag_adjust.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_xmag_magup.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_xmag_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_xmag_magin.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_xmag_08", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_xmag_bullets.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_xmag_09", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_xmag_coverclose.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_empty_xmag_10", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_lift.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_coveropen.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_magout.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_up.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_magin.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_bullets.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_coverclose.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_08", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_end.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_xmag_lower.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_xmag_coveropen.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_xmag_magout.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_xmag_lift.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_xmag_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_xmag_maghit.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_xmag_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_xmag_magin.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_xmag_07", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_xmag_bullets.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_xmag_08", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_xmag_coverclose.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_fast_xmag_09", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_fast_xmag_end.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_xmag_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_xmag_lower.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_xmag_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_xmag_coveropen.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_xmag_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_xmag_magout.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_xmag_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_xmag_lift.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_xmag_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_xmag_maghit.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_xmag_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_xmag_magin.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_xmag_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_xmag_beltpull.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_xmag_08", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_xmag_bullets.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_xmag_09", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_xmag_coverclose.ogg", + } +}) +-- Sound: 110 +sound.Add({ + name = "wfoly_plr_lm_sierrax_reload_xmag_10", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_sierrax/wfoly_lm_sierrax_reload_xmag_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_lm_slima.all.sabs.lua b/lua/weapons/mg_base/modules/sounds/weapon_lm_slima.all.sabs.lua new file mode 100644 index 0000000..6022fc9 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_lm_slima.all.sabs.lua @@ -0,0 +1,1959 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_lm_slima.all.sabs.lua +-- Total length: 184 + +-- Sound: 0 +sound.Add({ + name = "Name", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "File.ogg", + } +}) +-- Sound: 1 +sound.Add({ + name = "# Note: Secondary is triggered by this alias", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + ".ogg", + } +}) +-- Sound: 2 +sound.Add({ + name = "# Note: There are other settings that cannot be pulled", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + ".ogg", + } +}) +-- Sound: 3 +sound.Add({ + name = "mount_enter_side_slima_vestlight_plr", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_side_pkilo_vestlight_plr.ogg", + } +}) +-- Sound: 4 +sound.Add({ + name = "mount_enter_top_slima_vestlight_plr", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_top_pkilo_vestlight_plr.ogg", + } +}) +-- Sound: 5 +sound.Add({ + name = "mount_exit_side_slima_vestlight_plr", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_side_pkilo_vestlight_plr.ogg", + } +}) +-- Sound: 6 +sound.Add({ + name = "mount_exit_top_slima_vestlight_plr", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_top_pkilo_vestlight_plr.ogg", + } +}) +-- Sound: 7 +sound.Add({ + name = "weap_lm_slima_ads_down", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_lm_pkilo_ads_down.ogg", + } +}) +-- Sound: 8 +sound.Add({ + name = "weap_lm_slima_ads_up", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_pkilo/wfoly_lm_pkilo_ads_up.ogg", + } +}) +-- Sound: 10 +sound.Add({ + name = "weap_slima_fire_prefire_plr", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/slima/weap_slima_prefire_plr_01.ogg", + } +}) +-- Sound: 14 +sound.Add({ + name = "weap_slima_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/slima/weap_slima_fire_plr_01.wav", + +}) +-- Sound: 19 +sound.Add({ + name = "weap_slima_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/slima/weap_slima_sup_plr_01.wav", + +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_lm_slima_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_pkilo_hybrid_side_off.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_lm_slima_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_pkilo_hybrid_side_on.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_lm_slima_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_lm_slima_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_lm_slima_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_pkilo_hybrid_top_in.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_lm_slima_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_lm_pkilo_hybrid_top_out.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_lm_slima338_drop_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_drop.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_lm_slima338_drop_quick_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_drop_quick.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_lm_slima338_fire_switch_off_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_fire_switch_off.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_lm_slima338_fire_switch_on_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_fire_switch_on.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_lm_slima338_idle_active_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_idle_active_01.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_lm_slima338_idle_active_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_idle_active_02.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_lm_slima338_idle_active_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_idle_active_03.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_lm_slima338_idle_active_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_idle_active_04.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_lower.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_top_cover_open.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_top_cover_close.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_lift.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_rotate.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_end.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_smag_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_smag_lower.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_smag_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_smag_top_cover_open.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_smag_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_smag_top_cover_close.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_smag_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_smag_lift.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_smag_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_smag_rotate.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_smag_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_smag_end.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_xmag_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_xmag_lower.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_xmag_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_xmag_top_cover_open.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_xmag_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_xmag_top_cover_close.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_xmag_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_xmag_lift.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_xmag_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_xmag_rotate.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_lm_slima338_inspect_xmag_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_inspect_xmag_end.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_lm_slima338_raise_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_raise.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_slima338_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_raise_first_lift.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_slima338_raise_first_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_raise_first_bolt_pull.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_lm_slima338_raise_first_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_raise_first_bolt_close.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_lm_slima338_raise_first_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_raise_first_end.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_lower.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_top_cover_open.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_clean_tray.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_arm_down.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_magout.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_lift.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_07", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_maghit.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_08", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_magin.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_09", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_bullets_into_tray.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_10", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_top_cover_close.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_11", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_end.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_lower.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_botl_pull.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_botl_close.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_settle.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_top_cover_open.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_clean_tray.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_07", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_lift.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_08", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_magout.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_09", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_maghit.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_10", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_magin.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_11", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_bullets_into_tray.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_12", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_top_cover_close.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_13", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_end.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_lower.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_bolt_pull.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_bolt_close.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_top_cover_pop.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_maghit.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_magin.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_08", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_bullets_into_tray.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_09", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_top_cover_close.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_10", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_end.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_smag_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_smag_lower.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_smag_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_smag_bolt_pull.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_smag_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_smag_bolt_close.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_smag_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_smag_top_cover_open.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_smag_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_smag_tray_open.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_smag_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_smag_tray_close.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_smag_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_smag_magout.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_smag_08", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_smag_maghit.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_smag_09", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_smag_magin.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_smag_10", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_smag_bullets_into_tray.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_xmag_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_xmag_lower.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_xmag_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_xmag_bolt_pull.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_xmag_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_xmag_bolt_close.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_xmag_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_xmag_top_cover_pop.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_xmag_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_xmag_magout.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_xmag_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_xmag_maghit.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_xmag_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_xmag_magin.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_xmag_08", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_xmag_bullets_into_tray.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_xmag_09", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_xmag_top_cover_close.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_fast_xmag_10", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_fast_xmag_end.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_smag_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_smag_lower.ogg", + } +}) +-- Sound: 110 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_smag_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_smag_bolt_pull.ogg", + } +}) +-- Sound: 111 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_smag_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_smag_bolt_close.ogg", + } +}) +-- Sound: 112 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_smag_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_smag_top_cover_pop.ogg", + } +}) +-- Sound: 113 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_smag_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_smag_magout.ogg", + } +}) +-- Sound: 114 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_smag_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_smag_maghit.ogg", + } +}) +-- Sound: 115 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_smag_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_smag_magin.ogg", + } +}) +-- Sound: 116 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_smag_08", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_smag_bullets_into_tray.ogg", + } +}) +-- Sound: 117 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_smag_09", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_smag_top_cover_close.ogg", + } +}) +-- Sound: 118 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_smag_10", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_smag_end.ogg", + } +}) +-- Sound: 119 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_lower.ogg", + } +}) +-- Sound: 120 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_bolt_pull.ogg", + } +}) +-- Sound: 121 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_bolt_close.ogg", + } +}) +-- Sound: 122 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_top_cover_open.ogg", + } +}) +-- Sound: 123 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_tray_open.ogg", + } +}) +-- Sound: 124 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_tray_close.ogg", + } +}) +-- Sound: 125 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_magout.ogg", + } +}) +-- Sound: 126 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_08", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_maghit.ogg", + } +}) +-- Sound: 127 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_09", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_magin.ogg", + } +}) +-- Sound: 128 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_10", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_bullets_into_tray.ogg", + } +}) +-- Sound: 129 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_11", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_top_cover_close.ogg", + } +}) +-- Sound: 130 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_empty_xmag_12", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 131 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_lower.ogg", + } +}) +-- Sound: 132 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_top_cover_open.ogg", + } +}) +-- Sound: 133 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_clean_tray.ogg", + } +}) +-- Sound: 134 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_magout.ogg", + } +}) +-- Sound: 135 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_raise.ogg", + } +}) +-- Sound: 136 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_maghit.ogg", + } +}) +-- Sound: 137 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_07", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_magin.ogg", + } +}) +-- Sound: 138 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_08", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_bullets_into_tray.ogg", + } +}) +-- Sound: 139 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_09", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_top_cover_close.ogg", + } +}) +-- Sound: 140 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_10", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_end.ogg", + } +}) +-- Sound: 141 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_smag_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_smag_lower.ogg", + } +}) +-- Sound: 142 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_smag_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_smag_top_cover_open.ogg", + } +}) +-- Sound: 143 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_smag_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_smag_clean_tray.ogg", + } +}) +-- Sound: 144 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_smag_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_smag_magout.ogg", + } +}) +-- Sound: 145 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_smag_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_smag_maghit.ogg", + } +}) +-- Sound: 146 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_smag_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_smag_magin.ogg", + } +}) +-- Sound: 147 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_smag_07", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_smag_bullets_into_tray.ogg", + } +}) +-- Sound: 148 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_smag_08", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_smag_top_cover_close.ogg", + } +}) +-- Sound: 149 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_smag_09", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_smag_end.ogg", + } +}) +-- Sound: 150 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_xmag_lower.ogg", + } +}) +-- Sound: 151 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_xmag_top_cover_pop.ogg", + } +}) +-- Sound: 152 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_xmag_clean_tray.ogg", + } +}) +-- Sound: 153 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_xmag_magout.ogg", + } +}) +-- Sound: 154 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_xmag_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_xmag_raise.ogg", + } +}) +-- Sound: 155 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_xmag_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_xmag_maghit.ogg", + } +}) +-- Sound: 156 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_xmag_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_xmag_magin.ogg", + } +}) +-- Sound: 157 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_xmag_08", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_xmag_bullets_into_tray.ogg", + } +}) +-- Sound: 158 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_xmag_09", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_xmag_top_cover_close.ogg", + } +}) +-- Sound: 159 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_fast_xmag_10", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_fast_xmag_end.ogg", + } +}) +-- Sound: 160 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_smag_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_smag_lower.ogg", + } +}) +-- Sound: 161 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_smag_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_smag_top_cover_open.ogg", + } +}) +-- Sound: 162 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_smag_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_smag_clean_tray.ogg", + } +}) +-- Sound: 163 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_smag_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_smag_tray_open.ogg", + } +}) +-- Sound: 164 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_smag_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_smag_tray_close.ogg", + } +}) +-- Sound: 165 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_smag_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_smag_magout.ogg", + } +}) +-- Sound: 166 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_smag_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_smag_maghit.ogg", + } +}) +-- Sound: 167 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_smag_08", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_smag_magin.ogg", + } +}) +-- Sound: 168 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_smag_09", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_smag_bullets_into_tray.ogg", + } +}) +-- Sound: 169 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_smag_10", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_smag_top_cover_close.ogg", + } +}) +-- Sound: 170 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_smag_11", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_smag_end.ogg", + } +}) +-- Sound: 171 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_lower.ogg", + } +}) +-- Sound: 172 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_top_cover_open.ogg", + } +}) +-- Sound: 173 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_clean_tray.ogg", + } +}) +-- Sound: 174 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_open_tray.ogg", + } +}) +-- Sound: 175 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_close_tray.ogg", + } +}) +-- Sound: 176 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_magout.ogg", + } +}) +-- Sound: 177 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_07", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_raise.ogg", + } +}) +-- Sound: 178 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_08", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_maghit.ogg", + } +}) +-- Sound: 179 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_09", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_magin.ogg", + } +}) +-- Sound: 180 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_10", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_settle.ogg", + } +}) +-- Sound: 181 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_11", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_bullets_into_tray.ogg", + } +}) +-- Sound: 182 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_12", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_top_cover_close.ogg", + } +}) +-- Sound: 183 +sound.Add({ + name = "wfoly_plr_lm_slima338_reload_xmag_13", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_slima338/wfoly_lm_slima_reload_xmag_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_pi_cpapa.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_pi_cpapa.all.lua new file mode 100644 index 0000000..6dd9d99 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_pi_cpapa.all.lua @@ -0,0 +1,1283 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_pi_cpapa.all.lua +-- Total length: 102 + +-- Sound: 4 +sound.Add({ + name = "weap_cpapa_dryfire_plr", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/cpapa/weap_cpapa_dryfire_plr_01.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_02.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_03.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_04.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_05.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_06.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_ads_01.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_ads_02.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_ads_03.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_ads_04.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_ads_05.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_ads_06.ogg", + } +}) +-- Sound: 5 +sound.Add({ + name = "weap_cpapa_dryfire1_plr", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/cpapa/weap_cpapa_dryfire_plr_01.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_02.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_03.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_04.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_05.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_06.ogg", + } +}) +-- Sound: 6 +sound.Add({ + name = "weap_cpapa_dryfire2_plr", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/cpapa/weap_cpapa_dryfire_plr_01.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_02.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_03.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_04.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_05.ogg", + "weapons/cpapa/weap_cpapa_dryfire_plr_06.ogg", + } +}) +-- Sound: 7 +sound.Add({ + name = "weap_cpapa_fire_plr", + channel = CHAN_WPNFOLEY + 8, + level = 140, + volume = 1, + pitch = {98,101}, + sound = + "^weapons/cpapa/weap_cpapa_fire_plr_01.wav" + +}) +-- Sound: 8 +sound.Add({ + name = "weap_cpapa_fire_plr_atmo", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_01.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_02.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_03.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_04.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_05.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_06.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_01.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_02.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_03.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_04.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_05.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_06.ogg", + } +}) +-- Sound: 9 +sound.Add({ + name = "weap_cpapa_fire_plr_lfe", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_fire_plr_lfe.ogg", + "weapons/decho/weap_decho_fire_plr_lfe.ogg", + } +}) +-- Sound: 10 +sound.Add({ + name = "weap_cpapa_fire_plr_mech", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/cpapa/weap_cpapa_fire_plr_mech_01.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_02.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_03.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_04.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_05.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_06.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_01.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_02.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_03.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_04.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_05.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_06.ogg", + } +}) +-- Sound: 11 +sound.Add({ + name = "weap_cpapa_fire1_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/cpapa/weap_cpapa_fire_plr_01.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_02.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_03.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_04.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_05.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_06.ogg", + } +}) +-- Sound: 12 +sound.Add({ + name = "weap_cpapa_fire1_plr_atmo", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_01.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_02.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_03.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_04.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_05.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_06.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_01.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_02.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_03.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_04.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_05.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_06.ogg", + } +}) +-- Sound: 13 +sound.Add({ + name = "weap_cpapa_fire1_plr_lfe", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_fire_plr_lfe.ogg", + } +}) +-- Sound: 14 +sound.Add({ + name = "weap_cpapa_fire1_plr_mech", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/cpapa/weap_cpapa_fire_plr_mech_01.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_02.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_03.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_04.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_05.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_06.ogg", + } +}) +-- Sound: 15 +sound.Add({ + name = "weap_cpapa_fire2_plr", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/cpapa/weap_cpapa_fire_plr_01.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_02.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_03.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_04.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_05.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_06.ogg", + } +}) +-- Sound: 16 +sound.Add({ + name = "weap_cpapa_fire2_plr_atmo", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_01.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_02.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_03.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_04.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_05.ogg", + "weapons/atmo/exterior/pistol_mag/weap_pistol_mag_fire_plr_atmo_ext2_06.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_01.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_02.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_03.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_04.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_05.ogg", + "weapons/atmo/interior/pistol/weap_pistol_fire_plr_atmo_int1_06.ogg", + } +}) +-- Sound: 17 +sound.Add({ + name = "weap_cpapa_fire2_plr_lfe", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_fire_plr_lfe.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "weap_cpapa_fire2_plr_mech", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/cpapa/weap_cpapa_fire_plr_mech_01.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_02.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_03.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_04.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_05.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_06.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "weap_cpapa_sup_plr", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/decho/weap_decho_sup_plr_01.ogg", + "weapons/decho/weap_decho_sup_plr_02.ogg", + "weapons/decho/weap_decho_sup_plr_03.ogg", + "weapons/decho/weap_decho_sup_plr_04.ogg", + "weapons/decho/weap_decho_sup_plr_05.ogg", + "weapons/decho/weap_decho_sup_plr_06.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "weap_cpapa_sup_plr_atmo", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_01.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_02.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_03.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_04.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_05.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_06.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_01.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_02.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_03.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_04.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_05.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_06.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "weap_cpapa_sup_plr_lfe", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_fire_plr_lfe.ogg", + "weapons/decho/weap_decho_fire_plr_lfe.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "weap_cpapa_sup_plr_mech", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/cpapa/weap_cpapa_fire_plr_mech_01.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_02.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_03.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_04.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_05.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_06.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_01.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_02.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_03.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_04.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_05.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_06.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_cpapa_sup1_plr", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/decho/weap_decho_sup_plr_01.ogg", + "weapons/decho/weap_decho_sup_plr_02.ogg", + "weapons/decho/weap_decho_sup_plr_03.ogg", + "weapons/decho/weap_decho_sup_plr_04.ogg", + "weapons/decho/weap_decho_sup_plr_05.ogg", + "weapons/decho/weap_decho_sup_plr_06.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "weap_cpapa_sup1_plr_atmo", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_01.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_02.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_03.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_04.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_05.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_06.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_01.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_02.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_03.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_04.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_05.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_06.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "weap_cpapa_sup1_plr_lfe", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_fire_plr_lfe.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "weap_cpapa_sup1_plr_mech", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/cpapa/weap_cpapa_fire_plr_mech_01.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_02.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_03.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_04.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_05.ogg", + "weapons/cpapa/weap_cpapa_fire_plr_mech_06.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "weap_cpapa_sup2_plr", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/decho/weap_decho_sup_plr_01.ogg", + "weapons/decho/weap_decho_sup_plr_02.ogg", + "weapons/decho/weap_decho_sup_plr_03.ogg", + "weapons/decho/weap_decho_sup_plr_04.ogg", + "weapons/decho/weap_decho_sup_plr_05.ogg", + "weapons/decho/weap_decho_sup_plr_06.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "weap_cpapa_sup2_plr_atmo", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_01.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_02.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_03.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_04.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_05.ogg", + "weapons/atmo/exterior/dmr_sup/weap_dmr_sup_fire_plr_atmo_ext1_06.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_01.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_02.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_03.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_04.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_05.ogg", + "weapons/atmo/interior/dmr_sup/weap_dmr_sup_fire_plr_atmo_int1_06.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "weap_cpapa_sup2_plr_lfe", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_fire_plr_lfe.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "weap_cpapa_sup2_plr_mech", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/cpapa/weap_cpapa_fire_plr_mech_01.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "weap_pi_cpapa_ads_down", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_ads_down.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "weap_pi_cpapa_ads_up", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_ads_up.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_in_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_in_trigger_pull.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_quick_drop_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_quick_drop.ogg", + } +}) + +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_pi_cpapa_raise_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_raise.ogg", + } +}) + +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_pi_cpapa_first_raise_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_first_raise_start.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_pi_cpapa_first_raise_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_first_raise_cylinderopen_01.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_pi_cpapa_first_raise_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_first_raise_cylinderclose_01.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_pi_cpapa_first_raise_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_first_raise_end.ogg", + } +}) + +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_cylinderopen_01_new.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_start.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_ejectorrod_01.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_shelleject_01.ogg", + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_shelleject_02.ogg", + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_shelleject_03.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_arm.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_speedloader_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_07", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_shake.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_08", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_cylinderclose_01.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_09", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_end.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_fast_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_fast_start.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_fast_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_fast_cyclinderopen_01.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_fast_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_fast_ejectorrod_01.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_fast_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_fast_shelleject_01.ogg", + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_fast_shelleject_02.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_fast_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_fast_shelleject_03.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_fast_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_fast_arm.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_fast_07", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_fast_speedloader_01.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_fast_08", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_fast_grip.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_fast_09", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_fast_cylinderclose_01.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_pi_cpapa_charge_reload_fast_10", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_charge_reload_fast_end.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_pi_cpapa_drop_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_drop.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_pi_cpapa_fire_last_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_fire_last.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_pi_cpapa_fire_target_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_fire_target.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_pi_cpapa_inspect_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_inspect_01.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_pi_cpapa_inspect_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_inspect_02.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_pi_cpapa_inspect_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_inspect_03.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_pi_cpapa_inspect_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_inspect_04.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_pi_cpapa_melee_hit_01_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_melee_hit_01.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_pi_cpapa_melee_hit_02_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_melee_hit_02.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_start.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_cylinderopen_01.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_ejectorrod_01.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_shelleject_01.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_shelleject_02.ogg", + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_shelleject_03.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_arm.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_speedloader_01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_08", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_rattle.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_09", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_cylinderclose_01.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_10", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_end.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_fast_cylinderopen_01.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_fast_start.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_fast_ejectorrod_01.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_fast_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_fast_shelleject_01.ogg", + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_fast_shelleject_02.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_fast_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_fast_shelleject_03.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_fast_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_fast_grab.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_fast_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_fast_speedloader_01.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_fast_08", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_fast_cylinderclose_01.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stock_reload_fast_09", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_pi_cpapa_stock_reload_fast_end_old.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_empty_drop_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_empty_drop_down.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_empty_raise_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_empty_raise_up.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_cylinderopen_01.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_start.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_leftarm.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_load1stshell_01.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_grab2ndshell.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_load2ndtshell_01.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_07", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_grab3rdshell.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_08", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_load3rdtshell_01.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_09", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_grab4thshell.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_10", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_load4thshell_01.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_11", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_grab5thshell.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_12", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_load5thshell_01.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_13", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_grab6thshell.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_14", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_load6thshell_01.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_15", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_armdown.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_16", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_cylinderclose_01.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_17", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_cpapa/wfoly_plr_pi_cpapa_stp_sp_loaded_first_raise_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_pi_decho.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_pi_decho.all.lua new file mode 100644 index 0000000..7390e52 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_pi_decho.all.lua @@ -0,0 +1,644 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_pi_decho.all.lua +-- Total length: 106 + +-- Sound: 16 +sound.Add({ + name = "weap_decho_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,100}, + sound = "^weapons/decho/weap_decho_fire_plr_01.wav" + +}) +sound.Add({ + name = "weap_decho_fire_first", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_fire_first_plr_01.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "weap_decho_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_sup_plr_01.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "weap_decho_sup1_last_plr_mech", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_fire_last_plr_mech_01.ogg", + "weapons/decho/weap_decho_fire_last_plr_mech_02.ogg", + "weapons/decho/weap_decho_fire_last_plr_mech_03.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "weap_decho_sup1_plr_lfe", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_fire_plr_lfe.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "weap_decho_sup2_last_plr_mech", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_fire_last_plr_mech_01.ogg", + "weapons/decho/weap_decho_fire_last_plr_mech_02.ogg", + "weapons/decho/weap_decho_fire_last_plr_mech_03.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "weap_decho_sup2_plr_lfe", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/decho/weap_decho_fire_plr_lfe.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "weap_pi_decho_ads_down", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_ads_down.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "weap_pi_decho_ads_up", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_ads_up.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_pi_decho_drop_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_drop_mvmnt.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_pi_decho_inspect_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_inspect_01.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_pi_decho_inspect_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_inspect_02.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_pi_decho_inspect_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_inspect_03.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_pi_decho_raise_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_raise_mvmnt.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_pi_decho_first_raise_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_first_raise_mvmnt.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_pi_decho_first_raise_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_first_raise_safetyoff.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_pi_decho_first_raise_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_first_raise_end.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_raise.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_magout_01.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_magin_v2_01.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_035", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_magin_v2_02.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_end.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_shake.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_magout_01.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_035", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_mvmnt.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_end.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_charge_01.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_empty_raise.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_empty_magout_01.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_fast_035", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_empty_slide_01.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_empty_end.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_xmag_shake.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_xmag_magout_01.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_xmag_035", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_xmag_grab.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_xmag_charge_01.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_fast_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_raise.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_fast_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_magout_01.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_fast_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_magin_v2_01.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_fast_035", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_magin_v2_02.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_fast_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_end.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_exmag_raise.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_exmag_magout_01.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_exmag_magin_v2_01.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_fast_xmag_035", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_exmag_magin_v2_02.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_exmag_mvmnt.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_fast_xmag_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_fast_reload_exmag_end.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_xmag_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_xmag_raise.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_xmag_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_xmag_magout_01.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_xmag_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_xmag_035", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_pi_decho_reload_xmag_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_decho/wfoly_pi_decho_reload_xmag_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_pi_golf21.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_pi_golf21.all.lua new file mode 100644 index 0000000..5264041 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_pi_golf21.all.lua @@ -0,0 +1,575 @@ +AddCSLuaFile() + +-- Sound: 16 +sound.Add({ + name = "weap_golf21_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/golf21/weap_golf21_fire_plr_01.wav" +}) + +sound.Add({ + name = "weap_golf21_fire_first", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/golf21/weap_golf21_fire_first_plr_01.ogg", + } +}) +sound.Add({ + name = "weap_golf21_fire_disconnector", + channel = CHAN_WPNFOLEY +1, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/golf21/weap_golf21_disconnector_plr_01.ogg", + } +}) + +-- Sound: 40 +sound.Add({ + name = "weap_golf21_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/golf21/weap_golf21_supp_plr_01.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "weap_golf21_sup1_last_plr_mech", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/iw8_golf21/weap_golf21_fire_last_plr_mech_01.ogg", + "weapons/iw8_golf21/weap_golf21_fire_last_plr_mech_02.ogg", + "weapons/iw8_golf21/weap_golf21_fire_last_plr_mech_03.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "weap_golf21_sup1_plr_lfe", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/iw8_golf21/weap_golf21_sup_plr_lfe.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "weap_golf21_sup2_last_plr_mech", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/iw8_golf21/weap_golf21_fire_last_plr_mech_01.ogg", + "weapons/iw8_golf21/weap_golf21_fire_last_plr_mech_02.ogg", + "weapons/iw8_golf21/weap_golf21_fire_last_plr_mech_03.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "weap_golf21_sup2_plr_lfe", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/iw8_golf21/weap_golf21_sup_plr_lfe.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "weap_pi_golf21_ads_down", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_ads_down.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "weap_pi_golf21_ads_up", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_ads_up.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_pi_golf21_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_pi_golf21_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_fast_magin_v2_01.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_pi_golf21_reload_empty_fast_025", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_fast_magin_v2_02.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_pi_golf21_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_fast_chamber_01.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_pi_golf21_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_fast_end.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_pi_golf21_drop_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_drop.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_pi_golf21_farah_reload_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_farah_reload_01.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_pi_golf21_farah_reload_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_farah_reload_02.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_golf21_farah_reload_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_farah_reload_03.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_pi_golf21_farah_reload_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_farah_reload_04.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_pi_golf21_farah_reload_empty_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_farah_reload_empty_01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_pi_golf21_farah_reload_empty_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_farah_reload_empty_02.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_pi_golf21_farah_reload_empty_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_farah_reload_empty_03.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_pi_golf21_farah_reload_empty_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_farah_reload_empty_04.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_pi_golf21_farah_reload_empty_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_farah_reload_empty_05.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_pi_golf21_inspect_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_inspect_01.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_pi_golf21_inspect_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_inspect_02.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_pi_golf21_inspect_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_inspect_03.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_pi_golf21_inspect_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_inspect_04.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_pi_golf21_raise_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_raise.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_pi_golf21_first_raise_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_first_raise_open_slide.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_pi_golf21_first_raise_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_first_raise_slide_release.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_magout_01.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_magin_v2_01.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_025", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_magin_v2_02.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_end.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_magout_01.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_raise.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_035", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_down.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_chamber.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_end.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_fast_magin_v2_01.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_fast_025", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_fast_magin_v2_02.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_fast_chamber_01.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_empty_fast_end.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_fast_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_fast_magout_01.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_fast_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_fast_magin_v2_01.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_fast_025", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_fast_magin_v2_02.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_pi_golf21_reload_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_golf21/wfoly_pi_golf21_reload_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_pi_mike.all.sabs.lua b/lua/weapons/mg_base/modules/sounds/weapon_pi_mike.all.sabs.lua new file mode 100644 index 0000000..67bb12c --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_pi_mike.all.sabs.lua @@ -0,0 +1,2624 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_pi_mike.all.sabs.lua +-- Total length: 288 + +-- Sound: 26 +sound.Add({ + name = "weap_mike_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = "^weapons/mike/weap_mike_fire_plr.wav" + +}) +sound.Add({ + name = "weap_mike_fire_first", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {100,100}, + sound = "weapons/mike/weap_mike_hammer_plr_01.ogg", + +}) +sound.Add({ + name = "weap_mike_fire_disconnector", + channel = CHAN_WPNFOLEY +1, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mike/weap_mike_disconnector_plr_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "weap_mike_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mike/weap_mike_sup_fire_plr_01.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "weap_pi_mike_ads_down", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_ads_down.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "weap_pi_mike_ads_up", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_ads_up.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_pi_mike_drop_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_drop.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_pi_mike_drop_quick_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_drop_quick.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_pi_mike_drop_quick_stock_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_drop_quick_stock.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_pi_mike_drop_singleaction_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_drop_singleaction.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_pi_mike_drop_singleaction_stock_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_drop_singleaction_stock.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_pi_mike_drop_stock_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_drop_stock.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_up.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_magin.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_rotate.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_end.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_drum_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_drum_drumout.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_drum_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_drum_drumin.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_drum_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_drum_rotate.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_drum_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_drum_mvmnt.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_drum_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_drum_end.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_drum_stock_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_drum_magout.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_drum_stock_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_drum_stock_drumin.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_drum_stock_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_drum_stock_rotate.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_drum_stock_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_drum_stock_mvmnt.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_drum_stock_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_drum_stock_end.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_stock_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_stock_magout.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_stock_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_stock_drumin.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_stock_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_stock_mvmnt.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_stock_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_stock_end.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_xmag_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_xmag_magout.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_xmag_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_xmag_magin.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_xmag_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_xmag_mvmnt.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_xmag_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_xmag_end.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_xmag_stock_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_xmag_stock_magout.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_xmag_stock_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_xmag_stock_magin.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_xmag_stock_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_xmag_stock_rotate.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_xmag_stock_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_xmag_stock_mvmnt.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_pi_mike_inspect_xmag_stock_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_inspect_xmag_stock_end.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_pi_mike_l_drop_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_drop.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_pi_mike_l_drop_quick_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_drop_quick.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_pi_mike_l_inspect_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_inspect_up.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_pi_mike_l_inspect_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_inspect_rotate.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_pi_mike_l_inspect_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_inspect_end.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_pi_mike_l_raise_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_raise.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_down.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_magout.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_magin.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_end.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_down.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_magout.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_mvmnt.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_magin.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_up.ogg", + } +}) +-- Sound: 110 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_charge.ogg", + } +}) +-- Sound: 111 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_end.ogg", + } +}) +-- Sound: 112 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_fast_down.ogg", + } +}) +-- Sound: 113 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 114 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_fast_magin.ogg", + } +}) +-- Sound: 115 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_fast_up.ogg", + } +}) +-- Sound: 116 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_fast_charge.ogg", + } +}) +-- Sound: 117 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_empty_fast_end.ogg", + } +}) +-- Sound: 118 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_fast_down.ogg", + } +}) +-- Sound: 119 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_fast_magout.ogg", + } +}) +-- Sound: 120 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_fast_magin.ogg", + } +}) +-- Sound: 121 +sound.Add({ + name = "wfoly_plr_pi_mike_l_reload_fast_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_i_reload_fast_end.ogg", + } +}) +-- Sound: 122 +sound.Add({ + name = "wfoly_plr_pi_mike_r_drop_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_drop.ogg", + } +}) +-- Sound: 123 +sound.Add({ + name = "wfoly_plr_pi_mike_r_drop_quick_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_drop_quick.ogg", + } +}) +-- Sound: 124 +sound.Add({ + name = "wfoly_plr_pi_mike_r_inspect_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_inspect_up.ogg", + } +}) +-- Sound: 125 +sound.Add({ + name = "wfoly_plr_pi_mike_r_inspect_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_inspect_rotate.ogg", + } +}) +-- Sound: 126 +sound.Add({ + name = "wfoly_plr_pi_mike_r_inspect_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_inspect_end.ogg", + } +}) +-- Sound: 127 +sound.Add({ + name = "wfoly_plr_pi_mike_r_raise_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_raise.ogg", + } +}) +-- Sound: 128 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike'/wfoly_pi_mike_r_reload_down.ogg", + } +}) +-- Sound: 129 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike'/wfoly_pi_mike_r_reload_mvmnt.ogg", + } +}) +-- Sound: 130 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike'/wfoly_pi_mike_r_reload_magout.ogg", + } +}) +-- Sound: 131 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike'/wfoly_pi_mike_r_reload_magin.ogg", + } +}) +-- Sound: 132 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike'/wfoly_pi_mike_r_reload_end.ogg", + } +}) +-- Sound: 133 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_down.ogg", + } +}) +-- Sound: 134 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_magout.ogg", + } +}) +-- Sound: 135 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_mvmnt.ogg", + } +}) +-- Sound: 136 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_magin.ogg", + } +}) +-- Sound: 137 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_up.ogg", + } +}) +-- Sound: 138 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_charge.ogg", + } +}) +-- Sound: 139 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_07", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_end.ogg", + } +}) +-- Sound: 140 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_fast_down.ogg", + } +}) +-- Sound: 141 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 142 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_fast_magin.ogg", + } +}) +-- Sound: 143 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_fast_up.ogg", + } +}) +-- Sound: 144 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_fast_charge.ogg", + } +}) +-- Sound: 145 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_empty_fast_end.ogg", + } +}) +-- Sound: 146 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_fast_down.ogg", + } +}) +-- Sound: 147 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_fast_magout.ogg", + } +}) +-- Sound: 148 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_fast_magin.ogg", + } +}) +-- Sound: 149 +sound.Add({ + name = "wfoly_plr_pi_mike_r_reload_fast_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_r_reload_fast_end.ogg", + } +}) +-- Sound: 150 +sound.Add({ + name = "wfoly_plr_pi_mike_raise_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_raise.ogg", + } +}) +-- Sound: 150 +sound.Add({ + name = "wfoly_plr_pi_mike_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_first_raise_up.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_pi_mike_raise_first_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_first_raise_magout.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_pi_mike_raise_first_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_first_raise_magin.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_pi_mike_raise_first_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_first_raise_end.ogg", + } +}) + +-- Sound: 150 +sound.Add({ + name = "wfoly_plr_pi_mike_raise_first_drum_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_raise_first_drum_drumout.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_pi_mike_raise_first_drum_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_raise_first_drum_drumin.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_pi_mike_raise_first_drum_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_raise_first_drum_end.ogg", + } +}) +-- Sound: 151 +sound.Add({ + name = "wfoly_plr_pi_mike_raise_singleaction_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_raise_singleaction.ogg", + } +}) +-- Sound: 152 +sound.Add({ + name = "wfoly_plr_pi_mike_raise_singleaction_stock_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_raise_singleaction_stock.ogg", + } +}) +-- Sound: 153 +sound.Add({ + name = "wfoly_plr_pi_mike_raise_stock_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_raise_stock.ogg", + } +}) +-- Sound: 154 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_up.ogg", + } +}) +-- Sound: 155 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_magout.ogg", + } +}) +-- Sound: 156 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_mvmnt.ogg", + } +}) +-- Sound: 157 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_magin.ogg", + } +}) +-- Sound: 158 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_end.ogg", + } +}) +-- Sound: 159 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_up.ogg", + } +}) +-- Sound: 160 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_grab_drum.ogg", + } +}) +-- Sound: 161 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_drumout.ogg", + } +}) +-- Sound: 162 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_drumhit.ogg", + } +}) +-- Sound: 163 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_drumin.ogg", + } +}) +-- Sound: 164 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_end.ogg", + } +}) +-- Sound: 165 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_stock_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_stock_up.ogg", + } +}) +-- Sound: 166 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_stock_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_stock_grabdrum.ogg", + } +}) +-- Sound: 167 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_stock_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_stock_drumout.ogg", + } +}) +-- Sound: 168 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_stock_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_stock_mvmnt.ogg", + } +}) +-- Sound: 169 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_stock_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_stock_drumhit.ogg", + } +}) +-- Sound: 170 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_stock_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_stock_drumin.ogg", + } +}) +-- Sound: 171 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_drum_stock_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_drum_stock_end.ogg", + } +}) +-- Sound: 172 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_up.ogg", + } +}) +-- Sound: 173 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_magout.ogg", + } +}) +-- Sound: 174 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_maghit.ogg", + } +}) +-- Sound: 175 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_magin.ogg", + } +}) +-- Sound: 176 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_charge.ogg", + } +}) +-- Sound: 177 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_end.ogg", + } +}) +-- Sound: 178 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_up.ogg", + } +}) +-- Sound: 179 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_grabdrum.ogg", + } +}) +-- Sound: 180 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_drumout.ogg", + } +}) +-- Sound: 181 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_drumhit.ogg", + } +}) +-- Sound: 182 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_drumin.ogg", + } +}) +-- Sound: 183 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_charge.ogg", + } +}) +-- Sound: 184 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_end.ogg", + } +}) +-- Sound: 185 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_stock_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_stock_up.ogg", + } +}) +-- Sound: 186 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_stock_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_stock_grabdrum.ogg", + } +}) +-- Sound: 187 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_stock_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_stock_drumout.ogg", + } +}) +-- Sound: 188 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_stock_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_stock_maghit.ogg", + } +}) +-- Sound: 189 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_stock_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_stock_drumin.ogg", + } +}) +-- Sound: 190 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_stock_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_stock_mvmnt.ogg", + } +}) +-- Sound: 191 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_stock_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_stock_charge.ogg", + } +}) +-- Sound: 192 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_drum_stock_08", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_drum_stock_end.ogg", + } +}) +-- Sound: 193 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_stock_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_stock_up.ogg", + } +}) +-- Sound: 194 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_stock_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_stock_magout.ogg", + } +}) +-- Sound: 195 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_stock_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_stock_maghit.ogg", + } +}) +-- Sound: 196 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_stock_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_stock_magin.ogg", + } +}) +-- Sound: 197 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_stock_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_stock_charge.ogg", + } +}) +-- Sound: 198 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_stock_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_stock_end.ogg", + } +}) +-- Sound: 199 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_xmag_up.ogg", + } +}) +-- Sound: 200 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_xmag_magout.ogg", + } +}) +-- Sound: 201 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_xmag_magin.ogg", + } +}) +-- Sound: 202 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_xmag_charge.ogg", + } +}) +-- Sound: 203 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 204 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_xmag_stock_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_xmag_stock_up.ogg", + } +}) +-- Sound: 205 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_xmag_stock_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_xmag_stock_magout.ogg", + } +}) +-- Sound: 206 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_xmag_stock_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_xmag_stock_maghit.ogg", + } +}) +-- Sound: 207 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_xmag_stock_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_xmag_stock_magin.ogg", + } +}) +-- Sound: 208 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_xmag_stock_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_xmag_stock_charge.ogg", + } +}) +-- Sound: 209 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_empty_xmag_stock_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_empty_xmag_stock_end.ogg", + } +}) +-- Sound: 210 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_up.ogg", + } +}) +-- Sound: 211 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_magout.ogg", + } +}) +-- Sound: 212 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_magin.ogg", + } +}) +-- Sound: 213 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_end.ogg", + } +}) +-- Sound: 214 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_up.ogg", + } +}) +-- Sound: 215 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_grabdrum.ogg", + } +}) +-- Sound: 216 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_drumout.ogg", + } +}) +-- Sound: 217 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_drumhit.ogg", + } +}) +-- Sound: 218 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_drumin.ogg", + } +}) +-- Sound: 219 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_end.ogg", + } +}) +-- Sound: 220 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_stock_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_stock_up.ogg", + } +}) +-- Sound: 221 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_stock_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_stock_drumout.ogg", + } +}) +-- Sound: 222 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_stock_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_stock_mvmnt.ogg", + } +}) +-- Sound: 223 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_stock_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_stock_drumhit.ogg", + } +}) +-- Sound: 224 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_stock_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_stock_drumin.ogg", + } +}) +-- Sound: 225 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_drum_stock_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_drum_stock_end.ogg", + } +}) +-- Sound: 226 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_up.ogg", + } +}) +-- Sound: 227 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_magout.ogg", + } +}) +-- Sound: 228 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_magin.ogg", + } +}) +-- Sound: 229 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_charge.ogg", + } +}) +-- Sound: 230 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_end.ogg", + } +}) +-- Sound: 231 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_up.ogg", + } +}) +-- Sound: 232 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_grabdrum.ogg", + } +}) +-- Sound: 233 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_drumout.ogg", + } +}) +-- Sound: 234 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_mvmnt.ogg", + } +}) +-- Sound: 235 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_drumin.ogg", + } +}) +-- Sound: 236 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_end.ogg", + } +}) +-- Sound: 237 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_07", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_charge.ogg", + } +}) +-- Sound: 238 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_stock_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_stock_up.ogg", + } +}) +-- Sound: 239 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_stock_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_stock_grabdrum.ogg", + } +}) +-- Sound: 240 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_stock_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_stock_drumout.ogg", + } +}) +-- Sound: 241 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_stock_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_stock_drumhit.ogg", + } +}) +-- Sound: 242 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_stock_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_stock_drumin.ogg", + } +}) +-- Sound: 243 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_stock_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_stock_charge.ogg", + } +}) +-- Sound: 244 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_drum_stock_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_drum_stock_end.ogg", + } +}) +-- Sound: 245 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_stock_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_stock_up.ogg", + } +}) +-- Sound: 246 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_stock_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_stock_magout.ogg", + } +}) +-- Sound: 247 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_stock_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_stock_magin.ogg", + } +}) +-- Sound: 248 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_stock_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_stock_charge.ogg", + } +}) +-- Sound: 249 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_stock_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_stock_end1.ogg", + } +}) +-- Sound: 250 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_xmag_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_xmag_up.ogg", + } +}) +-- Sound: 251 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_xmag_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_xmag_magout.ogg", + } +}) +-- Sound: 252 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_xmag_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_xmag_maghit.ogg", + } +}) +-- Sound: 253 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_xmag_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_xmag_magin.ogg", + } +}) +-- Sound: 254 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_xmag_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_xmag_charge.ogg", + } +}) +-- Sound: 255 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_xmag_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_xmag_end.ogg", + } +}) +-- Sound: 256 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_xmag_stock_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_xmag_stock_up.ogg", + } +}) +-- Sound: 257 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_xmag_stock_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_xmag_stock_magout.ogg", + } +}) +-- Sound: 258 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_xmag_stock_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_xmag_stock_magin.ogg", + } +}) +-- Sound: 259 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_xmag_stock_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_xmag_stock_charge.ogg", + } +}) +-- Sound: 260 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_empty_xmag_stock_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_empty_xmag_stock_end.ogg", + } +}) +-- Sound: 261 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_stock_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_stock_up.ogg", + } +}) +-- Sound: 262 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_stock_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_stock_magout.ogg", + } +}) +-- Sound: 263 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_stock_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_stock_magin.ogg", + } +}) +-- Sound: 264 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_stock_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_stock_end.ogg", + } +}) +-- Sound: 265 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_xmag_up.ogg", + } +}) +-- Sound: 266 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_xmag_magout.ogg", + } +}) +-- Sound: 267 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_xmag_magin.ogg", + } +}) +-- Sound: 268 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_xmag_end.ogg", + } +}) +-- Sound: 269 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_xmag_stock_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_xmag_stock_up.ogg", + } +}) +-- Sound: 270 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_xmag_stock_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_xmag_stock_magout.ogg", + } +}) +-- Sound: 271 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_xmag_stock_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_xmag_stock_magin.ogg", + } +}) +-- Sound: 272 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_fast_xmag_stock_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_fast_xmag_stock_end.ogg", + } +}) +-- Sound: 273 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_stock_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_stock_up.ogg", + } +}) +-- Sound: 274 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_stock_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_stock_magout.ogg", + } +}) +-- Sound: 275 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_stock_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_stock_maghit.ogg", + } +}) +-- Sound: 276 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_stock_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_stock_magin.ogg", + } +}) +-- Sound: 277 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_stock_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_stock_end.ogg", + } +}) +-- Sound: 278 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_xmag_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_xmag_up.ogg", + } +}) +-- Sound: 279 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_xmag_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_xmag_magout.ogg", + } +}) +-- Sound: 280 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_xmag_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_xmag_maghit.ogg", + } +}) +-- Sound: 281 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_xmag_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_xmag_magin.ogg", + } +}) +-- Sound: 282 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_xmag_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_xmag_end.ogg", + } +}) +-- Sound: 283 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_xmag_stock_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_xmag_stock_up.ogg", + } +}) +-- Sound: 284 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_xmag_stock_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_xmag_stock_magout.ogg", + } +}) +-- Sound: 285 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_xmag_stock_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_xmag_stock_maghit.ogg", + } +}) +-- Sound: 286 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_xmag_stock_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_xmag_stock_magin.ogg", + } +}) +-- Sound: 287 +sound.Add({ + name = "wfoly_plr_pi_mike_reload_xmag_stock_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike/wfoly_pi_mike_reload_xmag_stock_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_pi_mike1911.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_pi_mike1911.all.lua new file mode 100644 index 0000000..23a9d27 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_pi_mike1911.all.lua @@ -0,0 +1,469 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_pi_mike1911.all.lua +-- Total length: 90 + + +sound.Add({ + name = "weap_mike1911_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/mike1911/weap_mike1911_fire_plr_01.wav" + +}) +sound.Add({ + name = "weap_mike1911_fire_first", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mike1911/weap_mike1911_fire_first_plr_01.ogg", + } +}) +sound.Add({ + name = "weap_mike1911_fire_disconnector", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mike1911/weap_mike1911_disconnector_plr_01.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "weap_mike1911_fire1_last_plr_mech", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mike1911/weap_mike1911_fire_last_plr_mech_01.ogg", + "weapons/mike1911/weap_mike1911_fire_last_plr_mech_02.ogg", + "weapons/mike1911/weap_mike1911_fire_last_plr_mech_03.ogg", + } +}) + +-- Sound: 40 +sound.Add({ + name = "weap_mike1911_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mike1911/weap_mike1911_sup_plr_01.ogg", + } +}) + +-- Sound: 58 +sound.Add({ + name = "weap_pi_mike1911_ads_down", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_ads_down.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "weap_pi_mike1911_ads_up", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_ads_up.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_pi_mike1911_drop_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_drop.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_pi_mike1911_raise_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_raise.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_pi_mike1911_first_raise_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_first_raise_lift.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_pi_mike1911_first_raise_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_first_raise_slide_pull.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_pi_mike1911_first_raise_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_first_raise_chamber_end.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_pi_mike1911_first_raise_04", + channel = CHAN_WPNFOLEY + 11, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_first_raise_slide_release.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_pi_mike1911_first_raise_oil_supressor_sp_c_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_plr_pi_mike1911_first_raise_oil_supressor_sp_c_01.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_pi_mike1911_first_raise_oil_supressor_sp_c_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_plr_pi_mike1911_first_raise_oil_supressor_sp_c_02.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_pi_mike1911_first_raise_oil_supressor_sp_lr_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_plr_pi_mike1911_first_raise_oil_supressor_sp_lr_01.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_pi_mike1911_first_raise_oil_supressor_sp_lr_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_plr_pi_mike1911_first_raise_oil_supressor_sp_lr_02.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_pi_mike1911_inspect_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_inspect_01.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_pi_mike1911_inspect_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_inspect_02.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_pi_mike1911_inspect_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_inspect_03.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_mike1911_inspect_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_inspect_04.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_pi_mike1911_quick_drop_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_quick_drop.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_reload_lift.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_reload_magout_01.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_reload_magin_v2_01.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_035", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_reload_magin_v2_02.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_reload_end.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_empty_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_reload_empty_lift.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_empty_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_reload_empty_magout_01.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_empty_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_empty_035", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_empty_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_reload_empty_end.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_empty_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_reload_empty_chamber_01.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_fast_reload_empty_lift.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_fast_reload_empty_magout_01.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_fast_reload_empty_magin_01.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_fast_reload_empty_end.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_fast_reload_empty_chamber_01.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_fast_reload_lift.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_fast_reload_magout_01.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_fast_reload_magin_01.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_pi_mike1911_reload_fast_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike1911/wfoly_pi_mike1911_fast_reload_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_pi_mike9a3.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_pi_mike9a3.all.lua new file mode 100644 index 0000000..10e1952 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_pi_mike9a3.all.lua @@ -0,0 +1,826 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_pi_mike9a3.all.lua +-- Total length: 126 + +-- Sound: 16 +sound.Add({ + name = "weap_mike9a3_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/mike9/weap_mike9a3_fire_plr_01.wav" + +}) +sound.Add({ + name = "weap_mike9a3_fire_first", + channel = CHAN_WPNFOLEY, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mike9/weap_mike9a3_hammer_plr_01.ogg", + } +}) +sound.Add({ + name = "weap_mike9a3_fire_disconnector", + channel = CHAN_WPNFOLEY +1, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mike9/weap_mike9a3_disconnector_plr_01.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "weap_mike9a3_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mike9/weap_mike9a3_sup_plr_01.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "weap_pi_mike9_ads_down", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/weap_pi_papa320_ads_down.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "weap_pi_mike9_ads_up", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/weap_pi_papa320_ads_up.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_pi_mike9_drop_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_drop.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_pi_mike9_drop_quick_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_drop_quick.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_pi_mike9_inspect_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_inspect_01.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_pi_mike9_inspect_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_inspect_02.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_pi_mike9_inspect_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_inspect_03.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_pi_mike9_inspect_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_inspect_04.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_pi_mike9_inspect_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_inspect_05.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_pi_mike9_raise_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_raise.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_pi_mike9_raise_first_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_raise_first_up.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_pi_mike9_raise_first_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_raise_first_hammer.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_pi_mike9_raise_first_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_raise_first_end.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_magrelease.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_magout.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_maghit.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_magin.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_end.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_raise.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_magout.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_magin.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_charge.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_end.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_raise.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_magin.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_charge.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_end.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_xmags_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_xmags_raise.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_xmags_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_xmags_magout.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_xmags_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_xmags_magin.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_xmags_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_xmags_sliderelease.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_xmags_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_xmags_end.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_xmagslrg_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_xmagslrg_raise.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_xmagslrg_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_xmagslrg_magout.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_xmagslrg_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_xmagslrg_magin.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_xmagslrg_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_xmagslrg_sliderelease.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_fast_xmagslrg_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_fast_xmagslrg_end.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_xmags_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_xmags_raise.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_xmags_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_xmags_magout.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_xmags_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_xmags_magin.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_xmags_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_xmags_mvmnt.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_xmags_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_xmags_charge.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_xmagslrg_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_xmaglrg_raise.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_xmagslrg_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_xmagslrg_magout.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_xmagslrg_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_xmagslrg_magin.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_xmagslrg_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_xmagslrg_charge.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_empty_xmagslrg_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_empty_xmagslrg_end.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_raise.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_magout.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_maghit.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_magin.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_end.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_xmags_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_xmags_raise.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_xmags_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_xmags_magout.ogg", + } +}) +-- Sound: 110 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_xmags_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_xmags_maghit.ogg", + } +}) +-- Sound: 111 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_xmags_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_xmags_magin.ogg", + } +}) +-- Sound: 112 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_xmags_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_xmags_end.ogg", + } +}) +-- Sound: 113 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_xmagslrg_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_xmagslrg_raise.ogg", + } +}) +-- Sound: 114 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_xmagslrg_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_xmagslrg_magout.ogg", + } +}) +-- Sound: 115 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_xmagslrg_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_xmagslrg_magin.ogg", + } +}) +-- Sound: 116 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_fast_xmagslrg_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_fast_xmagslrg_end.ogg", + } +}) +-- Sound: 117 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_xmags_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_xmags_raise.ogg", + } +}) +-- Sound: 118 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_xmags_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_xmags_magout.ogg", + } +}) +-- Sound: 119 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_xmags_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_xmags_magin.ogg", + } +}) +-- Sound: 120 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_xmags_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_xmags_end.ogg", + } +}) +-- Sound: 121 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_xmagslrg_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_xmagslrg_raise.ogg", + } +}) +-- Sound: 122 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_xmagslrg_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_xmagslrg_magout.ogg", + } +}) +-- Sound: 123 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_xmagslrg_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_xmagslrg_maghit.ogg", + } +}) +-- Sound: 124 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_xmagslrg_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_xmagslrg_magin.ogg", + } +}) +-- Sound: 125 +sound.Add({ + name = "wfoly_plr_pi_mike9_reload_xmagslrg_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mike9/wfoly_pi_mike9_reload_xmagslrg_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_pi_papa320.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_pi_papa320.all.lua new file mode 100644 index 0000000..38da5b0 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_pi_papa320.all.lua @@ -0,0 +1,751 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_pi_papa320.all.lua +-- Total length: 125 + +-- Sound: 16 +sound.Add({ + name = "weap_papa320_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/papa320/weap_papa320_fire_plr_01.wav" + +}) +sound.Add({ + name = "weap_papa320_fire_first", + channel = CHAN_WEAPON, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/papa320/weap_papa320_fire_first_plr_01.ogg", + } +}) +sound.Add({ + name = "weap_papa320_fire_disconnector", + channel = CHAN_WEAPON, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/papa320/weap_papa320_disconnector_plr_01.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "weap_papa320_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/golf21/weap_golf21_supp_plr_01.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "weap_pi_papa320_ads_down", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/weap_pi_papa320_ads_down.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "weap_pi_papa320_ads_up", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/weap_pi_papa320_ads_up.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_papa320_drop_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_drop_down.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_papa320_raise_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_raise_up.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_papa320_raise_first_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_raise_first_start.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_papa320_raise_first_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_raise_first_open_01.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_papa320_raise_first_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_raise_first_close_01.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_pi_papa320_raise_first_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_raise_first_end.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_pi_papa320_inspect_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_pi_papa320_inspect_01.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_pi_papa320_inspect_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_pi_papa320_inspect_02.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_pi_papa320_inspect_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_pi_papa320_inspect_03.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_pi_papa320_inspect_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_pi_papa320_inspect_04.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_start.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_magout_01.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_wiggle.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_magin_v2_01.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_045", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_magin_v2_02.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_end.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_start.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_magout_01.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_regrip.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_arm.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_055", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_end.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_07", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_charge_01.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_start.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_arm.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_magin_01.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_charge_01.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_end.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_xmag_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_xmag_start.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_xmag_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_xmag_magout_01.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_xmag_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_xmag_arm.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_xmag_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_xmag_magin_01.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_xmag_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_xmag_end.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_fast_xmag_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_fast_xmag_charge_01.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_xmag_start.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_xmag_magout_01.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_xmag_regrip.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_xmag_arm.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_xmag_055", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_charge_01.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_empty_xmag_07", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_fast_start.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_fast_magout_01.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_fast_arm.ogg", + } +}) +-- Sound: 110 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_fast_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_fast_magin_01.ogg", + } +}) +-- Sound: 111 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_fast_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_fast_end.ogg", + } +}) +-- Sound: 112 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_fast_xmag_start.ogg", + } +}) +-- Sound: 113 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_fast_xmag_magout_01.ogg", + } +}) +-- Sound: 114 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_fast_xmag_arm.ogg", + } +}) +-- Sound: 115 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_fast_xmag_magin_01.ogg", + } +}) +-- Sound: 116 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_fast_xmag_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_fast_xmag_end.ogg", + } +}) +-- Sound: 117 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_xmag_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_xmag_start.ogg", + } +}) +-- Sound: 118 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_xmag_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_xmag_arm.ogg", + } +}) +-- Sound: 119 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_xmag_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_xmag_magout_01.ogg", + } +}) +-- Sound: 120 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_xmag_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_xmag_thumb.ogg", + } +}) +-- Sound: 121 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_xmag_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 122 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_xmag_055", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 123 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_xmag_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_xmag_wiggle.ogg", + } +}) +-- Sound: 124 +sound.Add({ + name = "wfoly_plr_pi_papa320_reload_xmag_07", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa320/wfoly_plr_pi_papa320_reload_xmag_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sh_charlie725.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sh_charlie725.all.lua new file mode 100644 index 0000000..a48d717 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sh_charlie725.all.lua @@ -0,0 +1,922 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sh_charlie725.all.lua +-- Total length: 77 +sound.Add({ + name = "wfoly_plr_sh_charlie725_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_charlie725/wfoly_plr_sh_charlie725_raise_first_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_charlie725_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_charlie725/wfoly_plr_sh_charlie725_raise_first_close_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_charlie725_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_charlie725/wfoly_plr_sh_charlie725_raise_first_end.ogg"} +}) + + +sound.Add({ + name = "mw19.charlie725.fire", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^weapons/charlie725/weap_romeo870_fire_plr_01.wav" +}) +sound.Add({ + name = "mw19.charlie725.fire.s", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = "^weapons/charlie725/weap_romeo870_sup_plr_01.wav" +}) + +-- Sound: 6 +sound.Add({ + name = "weap_charlie725_fire_bang_plr", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/romeo870/weap_romeo870_fire_plr_01.ogg", + "weapons/romeo870/weap_romeo870_fire_plr_02.ogg", + "weapons/romeo870/weap_romeo870_fire_plr_03.ogg", + "weapons/romeo870/weap_romeo870_fire_plr_04.ogg", + "weapons/romeo870/weap_romeo870_fire_plr_05.ogg", + "weapons/romeo870/weap_romeo870_fire_plr_06.ogg", + } +}) +-- Sound: 7 +sound.Add({ + name = "weap_charlie725_fire_plr", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/charlie725/weap_charlie725_fire_first_plr_01.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_02.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_03.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_04.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_05.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_06.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_01.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_02.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_03.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_04.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_05.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_06.ogg", + } +}) +-- Sound: 8 +sound.Add({ + name = "weap_charlie725_fire_plr_atmo", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/atmo/exterior/shotgun/weap_shotgun_fire_plr_atmo_ext1_01.ogg", + "weapons/atmo/exterior/shotgun/weap_shotgun_fire_plr_atmo_ext1_02.ogg", + "weapons/atmo/exterior/shotgun/weap_shotgun_fire_plr_atmo_ext1_03.ogg", + "weapons/atmo/exterior/shotgun/weap_shotgun_fire_plr_atmo_ext1_04.ogg", + "weapons/atmo/exterior/shotgun/weap_shotgun_fire_plr_atmo_ext1_05.ogg", + "weapons/atmo/exterior/shotgun/weap_shotgun_fire_plr_atmo_ext1_06.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_01.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_02.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_03.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_04.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_05.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_06.ogg", + } +}) +-- Sound: 9 +sound.Add({ + name = "weap_charlie725_fire_plr_lfe", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/iw8_dpapa12/iw8_weap_dpapa12_fire_plr_lfe_01.ogg", + "weapons/iw8_dpapa12/iw8_weap_dpapa12_fire_plr_lfe_01.ogg", + } +}) +-- Sound: 10 +sound.Add({ + name = "weap_charlie725_fire_plr_mech", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/charlie725/weap_charlie725_fire_plr_swtn_01.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_02.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_03.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_04.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_05.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_06.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_01.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_02.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_03.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_04.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_05.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_06.ogg", + } +}) +-- Sound: 11 +sound.Add({ + name = "weap_charlie725_sup_bang_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/romeo870/weap_romeo870_sup_plr_01.ogg", + "weapons/romeo870/weap_romeo870_sup_plr_02.ogg", + "weapons/romeo870/weap_romeo870_sup_plr_03.ogg", + "weapons/romeo870/weap_romeo870_sup_plr_04.ogg", + "weapons/romeo870/weap_romeo870_sup_plr_05.ogg", + "weapons/romeo870/weap_romeo870_sup_plr_06.ogg", + } +}) +-- Sound: 12 +sound.Add({ + name = "weap_charlie725_sup_plr", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/charlie725/weap_charlie725_fire_first_plr_01.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_02.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_03.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_04.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_05.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_06.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_01.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_02.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_03.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_04.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_05.ogg", + "weapons/charlie725/weap_charlie725_fire_first_plr_ads_06.ogg", + } +}) +-- Sound: 13 +sound.Add({ + name = "weap_charlie725_sup_plr_atmo", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/atmo/exterior/shotgun_sup/weap_shotgunsup_fire_plr_atmo_ext1_01.ogg", + "weapons/atmo/exterior/shotgun_sup/weap_shotgunsup_fire_plr_atmo_ext1_02.ogg", + "weapons/atmo/exterior/shotgun_sup/weap_shotgunsup_fire_plr_atmo_ext1_03.ogg", + "weapons/atmo/exterior/shotgun_sup/weap_shotgunsup_fire_plr_atmo_ext1_04.ogg", + "weapons/atmo/exterior/shotgun_sup/weap_shotgunsup_fire_plr_atmo_ext1_05.ogg", + "weapons/atmo/exterior/shotgun_sup/weap_shotgunsup_fire_plr_atmo_ext1_06.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_01.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_02.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_03.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_04.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_05.ogg", + "weapons/atmo/interior/shotgun/weap_shotgun_fire_plr_atmo_int1_06.ogg", + } +}) +-- Sound: 14 +sound.Add({ + name = "weap_charlie725_sup_plr_lfe", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/iw8_dpapa12/iw8_weap_dpapa12_fire_plr_lfe_01.ogg", + "weapons/iw8_dpapa12/iw8_weap_dpapa12_fire_plr_lfe_01.ogg", + } +}) +-- Sound: 15 +sound.Add({ + name = "weap_charlie725_sup_plr_mech", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {98,101}, + sound = { + "weapons/charlie725/weap_charlie725_fire_plr_swtn_01.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_02.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_03.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_04.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_05.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_06.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_01.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_02.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_03.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_04.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_05.ogg", + "weapons/charlie725/weap_charlie725_fire_plr_swtn_ads_06.ogg", + } +}) +-- Sound: 16 +sound.Add({ + name = "weap_sh_charlie725_ads_down", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/weap_sh_charlie725_ads_down.ogg", + } +}) +-- Sound: 17 +sound.Add({ + name = "weap_sh_charlie725_ads_up", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/weap_sh_charlie725_ads_up.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "wfoly_plr_sh_charlie725_drop_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_drop_down.ogg", + } +}) +-- Sound: 17 +sound.Add({ + name = "weap_sh_charlie725_fire_first_plr", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/charlie725/weap_charlie725_fire_first_plr_01.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "weap_sh_charlie725_disconnector_plr", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/romeo870/weap_romeo870_disconnector_plr_01.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "wfoly_plr_sh_charlie725_drop_quick_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_drop_quick_down.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "wfoly_plr_sh_charlie725_inspect_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_sh_charlie725_inspect_01.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_sh_charlie725_inspect_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_sh_charlie725_inspect_02.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_sh_charlie725_inspect_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_sh_charlie725_inspect_03.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_sh_charlie725_inspect_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_sh_charlie725_inspect_04.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sh_charlie725_inspect_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_sh_charlie725_inspect_05.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sh_charlie725_raise_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_raise_up.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sh_charlie725_raise_quick_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_raise_quick_up.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_start.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_open_01.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_swing.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_shellin_01.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_close_01.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_end.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_start.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_open_01.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_swing.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_shellsin_v2_01.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_045", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_shellsin_v2_02.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_close_01.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_end.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_fast_start.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_fast_open_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_fast_swing.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_fast_shellsin_01.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_fast_end.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_close_01.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_scope_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_fast_scope_start.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_scope_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_fast_scope_open_01.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_scope_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_fast_scope_swing.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_scope_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_fast_scope_shellsin_01.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_scope_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_fast_scope_end.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_fast_scope_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_close_01.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_scope_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_scope_start.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_scope_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_scope_open_01.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_scope_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_scope_swing.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_scope_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_scope_shellsin_v2_01.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_scope_045", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_scope_shellsin_v2_02.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_scope_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_close_01.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_empty_scope_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_empty_scope_end.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_fast_open_01.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_fast_start.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_fast_swing.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_fast_shellin_01.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_fast_end.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_close_01.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_scope_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_fast_scope_start.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_scope_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_fast_scope_open_01.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_scope_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_fast_scope_swing.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_scope_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_fast_scope_shellin_01.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_scope_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_fast_scope_end.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_fast_scope_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_close_01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_scope_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_scope_start.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_scope_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_scope_open_01.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_scope_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_scope_swing.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_scope_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_scope_shellin_01.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_scope_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_close_01.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sh_charlie725_reload_scope_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie725/wfoly_plr_sh_charlie725_reload_scope_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sh_dpapa12.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sh_dpapa12.all.lua new file mode 100644 index 0000000..1fb7dd8 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sh_dpapa12.all.lua @@ -0,0 +1,549 @@ +-- Generated by GmodSoundGen +sound.Add({ + name = "wfoly_plr_sh_dpapa12_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_dpapa12/wfoly_sh_dpapa12_raise_first_lift.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_dpapa12_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_end_chamber_01_02.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_end_chamber_01_03.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_end_chamber_01_04.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sh_dpapa12_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_dpapa12/wfoly_sh_dpapa12_raise_first_end.ogg" + +} +}) +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sh_dpapa12.all.lua +-- Total length: 55 + +-- Sound: 0 +sound.Add({ + name = "mount_enter_side_dpapa12_vestlight_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_side_dpapa12_vestlight_plr.ogg", + } +}) +-- Sound: 1 +sound.Add({ + name = "mount_enter_top_dpapa12_vestlight_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_top_dpapa12_vestlight_plr.ogg", + } +}) +-- Sound: 2 +sound.Add({ + name = "mount_exit_side_dpapa12_vestlight_plr", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_side_dpapa12_vestlight_plr.ogg", + } +}) +-- Sound: 3 +sound.Add({ + name = "mount_exit_top_dpapa12_vestlight_plr", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_top_dpapa12_vestlight_plr.ogg", + } +}) +-- Sound: 5 +sound.Add({ + name = "weap_dpapa12_dryfire_plr", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/weap_dryfire_smg.ogg", + } +}) +-- Sound: 9 +sound.Add({ + name = "weap_dpapa12_fire_plr_lfe", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = "^weapons/dpapa12/iw8_weap_dpapa12_fire_plr_01.wav", + +}) +-- Sound: 14 +sound.Add({ + name = "weap_dpapa12_sup_plr_lfe", + channel = CHAN_WPNFOLEY + 7, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/dpapa12/weap_romeo870_sup_plr_01.wav", + +}) +-- Sound: 16 +sound.Add({ + name = "weap_sh_dpapa12_ads_down", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_ads_down.ogg", + } +}) +-- Sound: 17 +sound.Add({ + name = "weap_sh_dpapa12_ads_up", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_ads_up.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_drop_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_drop.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_drop_quick_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_drop_quick.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_inspect_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_inspect_01.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_inspect_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_inspect_02.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_inspect_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_inspect_03.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_inspect_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_inspect_04.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_inspect_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_inspect_05.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_raise_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_raise.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_raise_quick_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_raise_quick.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_rechamber_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + " ", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_rechamber_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_rechamber_chamber_v3_02a.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_rechamber_chamber_v3_02b.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_rechamber_chamber_v3_02c.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_rechamber_025", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_rechamber_chamber_v3_01a.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_rechamber_chamber_v3_01b.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_rechamber_chamber_v3_01c.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_empty_end_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_end_rotate.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_empty_end_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_end_chamber_01_02.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_end_chamber_01_03.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_end_chamber_01_04.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_empty_end_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_fast_load_01.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_empty_end_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_fast_rotate.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_empty_end_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_fast_chamber_01_01.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_fast_chamber_01_02.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_fast_chamber_01_03.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_empty_end_fast_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_empty_fast_end.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_end_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_end_load_01.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_end_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_end_rotate.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_end_fast_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_end_fast_load_01.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_end_fast_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_end_fast_rotate.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_end_fast_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_end_fast_end.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_loop_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_cloth.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_loop_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_load_01.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_load_02.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_load_03.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_loop_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_clothpush.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_loop_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_load_04.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_load_01.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_load_02.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_loop_fast_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_load_01.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_load_03.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_loop_fast_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_cloth.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_loop_fast_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_load_02.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_load_04.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_loop_fast_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_loop_fast_clothpush.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_start_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_start_rotate.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_start_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_start_load_01.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_start_load_02.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_start_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_start_load_03.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_start_load_04.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_start_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_start_fast_rotate.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_start_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_start_fast_load_01.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sh_dpapa12_reload_start_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_start_fast_load_02.ogg", + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_reload_start_fast_load_03.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sh_oscar12.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sh_oscar12.all.lua new file mode 100644 index 0000000..2f0be4c --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sh_oscar12.all.lua @@ -0,0 +1,1038 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sh_oscar12.all.lua +-- Total length: 109 +sound.Add({ + name = "wfoly_plr_sh_oscar12_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_oscar12/wfoly_plr_sh_oscar12_raise_first_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_oscar12_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_oscar12/wfoly_plr_sh_oscar12_raise_first_magin_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_oscar12_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_oscar12/wfoly_plr_sh_oscar12_raise_first_end_hit.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_oscar12_raise_first_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_oscar12/wfoly_plr_sh_oscar12_raise_first_end.ogg"} +}) +-- Sound: 0 +sound.Add({ + name = "mount_enter_side_oscar12_vestlight_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_side_oscar12_vestlight_plr.ogg", + } +}) + +-- Sound: 12 +sound.Add({ + name = "weap_oscar12_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/oscar12/weap_oscar12_fire_plr_01.wav", + +}) +sound.Add({ + name = "weap_oscar12_fire_plr_first", + channel = CHAN_TRIGGER, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/oscar12/weap_oscar12_fire_first_plr_01.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "weap_oscar12_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/oscar12/weap_oscar12_sup_plr_01.wav", + +}) +-- Sound: 22 +sound.Add({ + name = "weap_sh_oscar12_ads_down", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/weap_sh_oscar12_ads_down.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_sh_oscar12_ads_up", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/weap_sh_oscar12_ads_up.ogg", + } +}) +sound.Add({ + name = "weap_sh_oscar12_ads_down", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/weap_sh_oscar12_ads_down.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sh_oscar12_ads_down_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_ads_down_start.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sh_oscar12_ads_down_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_ads_down_cloth.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sh_oscar12_ads_down_nvg_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_ads_down_nvg_up.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sh_oscar12_ads_down_nvg_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_ads_down_nvg_cloth.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sh_oscar12_drop_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_drop_down.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sh_oscar12_drop_quick_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_drop_quick_down.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sh_oscar12_inspect_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_sh_oscar12_inspect_01.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sh_oscar12_inspect_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_sh_oscar12_inspect_02.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sh_oscar12_inspect_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_sh_oscar12_inspect_03.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sh_oscar12_inspect_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_sh_oscar12_inspect_04.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sh_oscar12_inspect_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_sh_oscar12_inspect_05.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sh_oscar12_raise_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_raise_up.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sh_oscar12_raise_quick_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_raise_quick_up.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_start.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_pull.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_magout_01.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_magin_v2_01.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_045", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_magin_v2_02.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_end.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_drum_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_drum_start.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_drum_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_drum_drumout_01.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_drum_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_drum_tilt.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_drum_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_drum_drumin_01.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_drum_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_drum_end.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_start.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_magout_01.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_tilt.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_045", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_hands.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_xmag_charge_01.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_07", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_end.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_drum_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_drum_start.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_drum_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_drum_drumout_01.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_drum_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_drum_tilt.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_drum_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_drum_drumin_01.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_drum_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_drum_arm.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_drum_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_drum_grip.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_drum_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_drum_charge_01.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_drum_08", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_drum_end.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_start.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_arm.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_magin_v2_01.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_045", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_magin_v2_02.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_xmag_charge_01.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_end.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_drum_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_drum_start.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_drum_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_drum_drumout_01.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_drum_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_drum_tilt.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_drum_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_drum_drumin_01.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_drum_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_drum_charge_01.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_drum_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_drum_end.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_xmag_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_xmag_start.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_xmag_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_xmag_magout_01.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_xmag_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_xmag_arm.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_xmag_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_xmag_magin_01.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_xmag_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_xmag_charge_01.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_fast_xmag_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_fast_xmag_end.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_xmag_start.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_xmag_magout_01.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_xmag_tilt.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_xmag_magin_01.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_xmag_arm.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_xmag_grab.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_xmag_07", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_xmag_charge_01.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_empty_xmag_08", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_start.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_magout_01.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_magin_01.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_end.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_drum_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_drum_start.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_drum_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_drum_drumout_01.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_drum_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_drum_tilt.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_drum_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_drum_drumin_01.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_drum_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_drum_end.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_xmag_start.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_xmag_magout_01.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_xmag_magin_01.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_fast_xmag_end.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_xmag_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_xmag_start.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_xmag_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_xmag_magout_01.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_xmag_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_xmag_magin_01.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_xmag_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_xmag_arm.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_sh_oscar12_reload_xmag_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_oscar12/wfoly_plr_sh_oscar12_reload_xmag_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sh_romeo870.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sh_romeo870.all.lua new file mode 100644 index 0000000..62e86d1 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sh_romeo870.all.lua @@ -0,0 +1,712 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sh_romeo870.all.lua +-- Total length: 79 +sound.Add({ + name = "wfoly_plr_sh_romeo870_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_romeo870/wfoly_sh_romeo870_raise_first_lift.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_romeo870_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_romeo870/wfoly_sh_romeo870_raise_first_chamber_e.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sh_romeo870_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_romeo870/wfoly_sh_romeo870_raise_first_shoulder.ogg"} +}) +-- Sound: 0 +sound.Add({ + name = "mount_enter_side_romeo870_vestlight_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_side_romeo870_vestlight_plr.ogg", + } +}) +-- Sound: 1 +sound.Add({ + name = "mount_enter_top_romeo870_vestlight_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_top_romeo870_vestlight_plr.ogg", + } +}) +-- Sound: 2 +sound.Add({ + name = "mount_exit_side_romeo870_vestlight_plr", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_side_romeo870_vestlight_plr.ogg", + } +}) +-- Sound: 3 +sound.Add({ + name = "mount_exit_top_romeo870_vestlight_plr", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_top_romeo870_vestlight_plr.ogg", + } +}) +-- Sound: 10 +sound.Add({ + name = "weap_romeo870_fire_plr_lfe", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,100}, + sound = + "^weapons/romeo870/weap_romeo870_fire_plr_01.wav", + +}) +-- Sound: 20 +sound.Add({ + name = "weap_romeo870_sup_plr_lfe", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/romeo870/weap_romeo870_sup_plr_01.wav", + +}) +-- Sound: 22 +sound.Add({ + name = "weap_sh_romeo870_ads_down", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_ads_down.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_sh_romeo870_ads_up", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_dpapa12/wfoly_sh_dpapa12_ads_up.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sh_romeo870_drop_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_drop.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sh_romeo870_drop_quick_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_drop_quick.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sh_romeo870_raise_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_raise.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sh_romeo870_raise_quick_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_raise_quick_lift.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sh_romeo870_raise_quick_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_raise_quick_shoulder.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sh_romeo870_rechamber_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_rechamber_v2_01a.ogg", + "reloads/iw8_romeo870/wfoly_sh_romeo870_rechamber_v2_01b.ogg", + "reloads/iw8_romeo870/wfoly_sh_romeo870_rechamber_v2_01c.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sh_romeo870_rechamber_015", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_rechamber_v2_02a.ogg", + "reloads/iw8_romeo870/wfoly_sh_romeo870_rechamber_v2_02b.ogg", + "reloads/iw8_romeo870/wfoly_sh_romeo870_rechamber_v2_02c.ogg", + "reloads/iw8_romeo870/wfoly_sh_romeo870_rechamber_v2_02d.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_empty_start_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_empty_start_open_01.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_empty_start_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_empty_start_twist.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_empty_start_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_empty_start_sideload_01.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_empty_start_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_empty_start_close_01.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_empty_start_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_empty_start_end.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_empty_start_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_empty_start_underload_01.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_empty_start_ads_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_empty_start_fast_open_01.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_empty_start_ads_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_empty_start_fast_twist.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_empty_start_ads_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_empty_start_fast_sideload_01.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_empty_start_ads_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_empty_start_fast_close.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_empty_start_ads_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_empty_start_fast_underload_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_end_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_end_turnover.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_end_fast_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_end_fast_twist.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_end_fast_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_end_fast_shoulder.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_loop_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_loop_loadportstart.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_loop_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_loop_loadportend.ogg", + } +}) +-- Sound: 46 pt2 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_loop_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_loop_shellin_01.ogg", + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_loop_shellin_02.ogg", + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_loop_shellin_03.ogg", + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_loop_shellin_04.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_loop_fast_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_loop_fast_start.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_start_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_start_twist.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_start_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_start_shellin_01.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_start_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_start_fast_twist.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sh_romeo870_reload_start_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_reload_start_fast_shellin_01.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sh_romeo871_caldb_reload_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_raise.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sh_romeo871_caldb_reload_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_magout.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sh_romeo871_caldb_reload_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_magup.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sh_romeo871_caldb_reload_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_maghit.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sh_romeo871_caldb_reload_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_magin.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sh_romeo871_caldb_reload_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_end.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sh_romeo872_caldb_reload_empty_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_pump_foreend.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sh_romeo872_caldb_reload_empty_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_raise.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sh_romeo872_caldb_reload_empty_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_magout.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sh_romeo872_caldb_reload_empty_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_magup.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sh_romeo872_caldb_reload_empty_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_maghit.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sh_romeo872_caldb_reload_empty_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_magin.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sh_romeo872_caldb_reload_empty_07", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_chamber.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sh_romeo872_caldb_reload_empty_08", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_end.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sh_romeo873_caldb_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_fast_pump_foreend.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sh_romeo873_caldb_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sh_romeo873_caldb_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_fast_magup.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sh_romeo873_caldb_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_fast_magin.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sh_romeo873_caldb_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_fast_chamber.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sh_romeo873_caldb_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_empty_fast_end.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sh_romeo874_caldb_reload_fast_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_fast_raise.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sh_romeo874_caldb_reload_fast_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_fast_magout.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sh_romeo874_caldb_reload_fast_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_fast_magup.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_sh_romeo874_caldb_reload_fast_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_fast_magin.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_sh_romeo874_caldb_reload_fast_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_romeo870/wfoly_sh_romeo870_caldb_reload_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sm_augolf.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sm_augolf.all.lua new file mode 100644 index 0000000..baff5f0 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sm_augolf.all.lua @@ -0,0 +1,1220 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sm_augolf.all.lua +-- Total length: 123 + +-- Sound: 9 +sound.Add({ + name = "weap_augolf_cal_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/augolf/weap_augolf_fire_plr_01.wav", + +}) +-- Sound: 18 +sound.Add({ + name = "weap_augolf_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/augolf/weap_augolf_fire_plr_9mm_01.wav", + +}) +sound.Add({ + name = "weap_augolf_cal_plr_sup", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = { + "weapons/augolf/weap_augolf_sup_fire_plr_01.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "weap_augolf_fire_plr_sup", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = { + "weapons/augolf/weap_augolf_sup_fire_plr_9mm_01.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "weap_sm_augolf_ads_down", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_ads_down.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "weap_sm_augolf_ads_up", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_ads_up.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sm_augolf_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_augolf/wfoly_sm_augolf_raise_first_raise.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_augolf_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_augolf/wfoly_sm_augolf_raise_first_chamber_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_augolf_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_augolf/wfoly_sm_augolf_raise_first_end_01.ogg"} +}) +-- Sound: 22 +sound.Add({ + name = "weap_sm_augolf_selector_off", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_augolf_selector_off.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_sm_augolf_selector_on", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_augolf_selector_on.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "weap_augolf_disconnector_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/augolf/weap_augolf_disconnector_plr_01.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_augolf_fire_first_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/augolf/weap_augolf_fire_first_plr_01.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sm_augolf_drop_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_drop.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sm_augolf_drop_quick_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_drop_quick.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sm_augolf_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_augolf_hybrid_scope_side_off.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sm_augolf_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_augolf_hybrid_scope_side_on.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sm_augolf_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sm_augolf_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sm_augolf_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_augolf_hybrid_scope_top_in.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sm_augolf_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_augolf_hybrid_scope_top_out.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sm_augolf_inspect_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_inspect_01.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sm_augolf_inspect_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_inspect_02.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sm_augolf_inspect_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_inspect_03.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sm_augolf_inspect_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_inspect_04.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sm_augolf_inspect_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_inspect_05.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sm_augolf_raise_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_raise_01.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sm_augolf_raise_quick_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_raise_quick.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_raise.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_magout_cloth.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_magout_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_magin_cloth.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_magin_v2_01.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_055", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_magin_v2_02.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_lower.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_07", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_end.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_drum_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_drum_raise.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_drum_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_drum_magout_cloth.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_drum_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_drum_magout_01.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_drum_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_drum_magin_cloth.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_drum_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_drum_magin_v2_01.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_drum_055", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_drum_magin_v2_02.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_drum_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_drum_end.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_mvmnt.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_boltopen.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_magout_01.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_magoutcloth.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_magincloth.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_065", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_end.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_08", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_chamber_01.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_drum_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_rotate.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_drum_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_drum_boltopen_01.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_drum_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_drum_raise.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_drum_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_drum_magoutcloth.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_drum_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_drum_magout_01.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_drum_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_drum_rotate.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_drum_07", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_drum_magin_v2_01.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_drum_08", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_drum_chamber_01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_drum_09", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_drum_end.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_raise.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_magout_01.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_cloth02.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_cloth01.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_magin_01.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_chamber_01.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_end.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_drum_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_drum_raise.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_drum_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_drum_magout_01.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_drum_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_drum_cloth.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_drum_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_drum_magin_01.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_drum_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_drum_boltrelease.ogg", + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_drum_chamber_01.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_drum_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_drum_end.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_waffle_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_raise.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_waffle_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_magout_01.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_waffle_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_cloth02.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_waffle_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_cloth01.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_waffle_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_magin_01.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_waffle_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_chamber_01.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_fast_waffle_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_fast_waffle_end.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_waffle_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_waffle_raise.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_waffle_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_waffle_boltopen_01.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_waffle_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_waffle_rotate.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_waffle_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_waffle_magout_01.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_waffle_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_waffle_cloth02.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_waffle_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_waffle_cloth01.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_waffle_07", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_waffle_magin_v2_01.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_waffle_075", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_waffle_magin_v2_02.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_waffle_08", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_waffle_chamber_01.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_empty_waffle_09", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_empty_waffle_end.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_raise.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_magout_01.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_cloth.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_magin_01.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_end.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_drum_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_drum_cloth02.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_drum_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_drum_magout_01.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_drum_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_drum_cloth01.ogg", + } +}) +-- Sound: 110 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_drum_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_drum_magin_01.ogg", + } +}) +-- Sound: 111 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_drum_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_drum_end.ogg", + } +}) +-- Sound: 112 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_waffle_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_waffle_raise.ogg", + } +}) +-- Sound: 113 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_waffle_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_waffle_magout_01.ogg", + } +}) +-- Sound: 114 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_waffle_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_waffle_mvmnt.ogg", + } +}) +-- Sound: 115 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_waffle_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_waffle_magin.ogg", + } +}) +-- Sound: 116 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_fast_waffle_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_fast_waffle_end.ogg", + } +}) +-- Sound: 117 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_waffle_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_waffle_raise.ogg", + } +}) +-- Sound: 118 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_waffle_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_waffle_magout_01.ogg", + } +}) +-- Sound: 119 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_waffle_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_waffle_rotate.ogg", + } +}) +-- Sound: 120 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_waffle_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_waffle_magin_v2_01.ogg", + } +}) +-- Sound: 121 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_waffle_045", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_waffle_magin_v2_02.ogg", + } +}) +-- Sound: 122 +sound.Add({ + name = "wfoly_plr_sm_augolf_reload_waffle_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_augolf/wfoly_sm_augolf_reload_waffle_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sm_beta.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sm_beta.all.lua new file mode 100644 index 0000000..933e1fc --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sm_beta.all.lua @@ -0,0 +1,856 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sm_beta.all.lua +-- Total length: 88 +sound.Add({ + name = "wfoly_plr_sm_beta_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_beta/wfoly_plr_sm_beta_raise_first_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_beta_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_beta/wfoly_plr_sm_beta_raise_first_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_beta_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_beta/wfoly_plr_sm_beta_raise_first_end.ogg"} +}) +sound.Add({ + name = "weap_beta_disconnector_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/beta/weap_beta_disconnector_plr_01.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_beta_fire_first_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/beta/weap_beta_fire_first_plr_01.ogg", + } +}) +-- Sound: 9 +sound.Add({ + name = "weap_beta_fire_plr_lfe", + channel = CHAN_WEAPON +1, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/beta/weap_beta_fire_plr_01.wav", + +}) +-- Sound: 13 +sound.Add({ + name = "weap_beta_sup_fire_plr_lfe", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = { + "weapons/beta/weap_beta_sup_fire_plr_01.ogg", + } +}) +-- Sound: 16 +sound.Add({ + name = "weap_sm_beta_ads_down", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/weap_sm_beta_ads_down.ogg", + } +}) +-- Sound: 17 +sound.Add({ + name = "weap_sm_beta_ads_up", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/weap_sm_beta_ads_up.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "weap_sm_beta_selector_off", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_beta_selector_off.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "weap_sm_beta_selector_on", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_beta_selector_on.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "wfoly_plr_sm_beta_drop_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_drop_down.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_sm_beta_drop_quick_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_drop_quick_down.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_sm_beta_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_beta_hybrid_side_out.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_sm_beta_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_beta_hybrid_side_in.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sm_beta_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sm_beta_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sm_beta_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_beta_hybrid_top_in.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sm_beta_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_beta_hybrid_top_out.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sm_beta_inspect_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_sm_beta_inspect_01.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sm_beta_inspect_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_sm_beta_inspect_02.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sm_beta_inspect_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_sm_beta_inspect_03.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sm_beta_inspect_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_sm_beta_inspect_04.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sm_beta_inspect_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_sm_beta_inspect_05.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sm_beta_raise_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_raise_up.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sm_beta_raise_quick_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_raise_quick_up.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_start.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_magout_01.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_rotate.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_magin_v2_01.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_045", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_magin_v2_02.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_end.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_start.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_magout_01.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_rotate.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_045", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_charge_01.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_end.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_start.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_rotate.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_magin_v2_01.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_045", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_magin_v2_02.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_charge_01.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_end.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_xmag_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_xmag_start.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_xmag_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_xmag_magout_01.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_xmag_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_xmag_rotate.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_xmag_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_xmag_045", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_xmag_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_xmag_charge_01.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_fast_xmag_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_fast_xmag_end.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_xmag_start.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_xmag_magout_01.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_xmag_rotate.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_xmag_045", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_xmag_charge_01.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_fast_start.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_fast_magout_01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_fast_rotate.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_fast_magin_v2_01.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_045", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_fast_magin_v2_02.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_fast_end.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_fast_xmag_start.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_fast_xmag_magout_01.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_fast_xmag_rotate.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_fast_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_xmag_045", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_fast_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_fast_xmag_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_end.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_xmag_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_xmag_start.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_xmag_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_xmag_magout_01.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_xmag_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_xmag_arm.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_xmag_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_xmag_rotate.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_xmag_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_xmag_055", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_sm_beta_reload_xmag_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_beta/wfoly_plr_sm_beta_reload_xmag_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sm_charlie9.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sm_charlie9.all.lua new file mode 100644 index 0000000..4bd6b8d --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sm_charlie9.all.lua @@ -0,0 +1,1043 @@ +-- Sound: 7 +sound.Add({ + name = "wfoly_plr_sm_charlie9_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_charlie9/wfoly_sm_charlie9_first_raise_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_charlie9_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_charlie9/wfoly_sm_charlie9_first_raise_bolt_forward.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_charlie9_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_charlie9/wfoly_sm_charlie9_first_raise_end.ogg"} +}) + +sound.Add({ + name = "weap_charlie9_fire_first_plr", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"weapons/charlie9/weap_charlie9_hammer_plr_01.ogg"} +}) +sound.Add({ + name = "weap_charlie9_disconnector_plr", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"weapons/charlie9/weap_charlie9_disconnector_plr_01.ogg"} +}) + +sound.Add({ + name = "weap_charlie9_fire_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/charlie9/weap_charlie9_fire_plr_01.wav", + +}) +-- Sound: 18 +sound.Add({ + name = "weap_charlie9_sup_fire_plr", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = { + "weapons/charlie9/weap_charlie9_sup_fire_plr_01.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "weap_sm_mpapa5_selector_off", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_mpapa5_selector_off.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_sm_mpapa5_selector_on", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_mpapa5_selector_on.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sm_charlie9_ads_down", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_ads_down.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sm_charlie9_ads_up", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_ads_up.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sm_charlie9_drop_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_drop.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sm_charlie9_drop_quick_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_drop_quick.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sm_charlie9_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_side_off.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sm_charlie9_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_side_on.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sm_charlie9_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_top_in.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sm_charlie9_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_top_out.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sm_charlie9_hybrid_west02_toggle_off_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_hybrid_west02_toggle_off.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sm_charlie9_hybrid_west02_toggle_on_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_hybrid_west02_toggle_on.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sm_charlie9_inspect_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_inspect_raise.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sm_charlie9_inspect_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_inspect_mvmnt.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sm_charlie9_inspect_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_inspect_rotate.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sm_charlie9_inspect_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_inspect_fingers.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sm_charlie9_inspect_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_inspect_end.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sm_charlie9_raise_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_raise.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sm_charlie9_raise_quick_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_raise_quick.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_up.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_grab.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_magout.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_magin.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_end.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_drum_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_drum_up.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_drum_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_drum_magout.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_drum_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_drum_arm.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_drum_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_drum_magin_01.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_drum_045", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_drum_magin_02.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_drum_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_drum_end.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_shake.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_magout.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_arm.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_magin.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_bolt_release.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_end.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_drum_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_drum_shake.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_drum_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_drum_magout.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_drum_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_drum_arm.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_drum_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_drum_magin_01.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_drum_045", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_drum_magin_02.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_drum_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_drum_rotate.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_drum_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_drum_bolt_release.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_drum_07", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_drum_end.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_up.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_magin.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_bolt_release.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_end.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_drum_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_drum_up.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_drum_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_drum_magout.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_drum_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_drum_magin_01.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_drum_035", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_drum_magin_02.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_drum_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_drum_bolt_release.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_drum_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_drum_end.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_xmag_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_xmag_up.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_xmag_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_xmag_magout.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_xmag_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_xmag_magin.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_xmag_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_xmag_bolt_release.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_fast_xmag_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_fast_xmag_end.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_xmag_shake.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_xmag_magout.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_xmag_arm.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_xmag_maghit.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_xmag_magin.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_xmag_mvmnt.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_empty_xmag_07", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_up.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_magout.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_arm.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_magin.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_end.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_drum_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_drum_up.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_drum_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_drum_magout.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_drum_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_drum_mvmnt.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_drum_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_drum_magin_01.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_drum_045", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_drum_magin_02.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_drum_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_drum_end.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_xmag_up.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_xmag_magout.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_xmag_arm.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_xmag_magin.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_fast_xmag_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_fast_xmag_end.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_xmag_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_xmag_up.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_xmag_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_xmag_arm.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_xmag_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_xmag_magout.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_xmag_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_xmag_magin.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_sm_charlie9_reload_xmag_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_charlie9/wfoly_sm_charlie9_reload_xmag_end.ogg", + } +}) +-- Sound: 110 +sound.Add({ + name = "wfoly_plr_sm_charlie9_selectsemi_off_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/wfoly_sm_charlie9_selectsemi_off.ogg", + } +}) +-- Sound: 111 +sound.Add({ + name = "wfoly_plr_sm_charlie9_selectsemi_on_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/wfoly_sm_charlie9_selectsemi_on.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sm_mpapa5.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sm_mpapa5.all.lua new file mode 100644 index 0000000..d306965 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sm_mpapa5.all.lua @@ -0,0 +1,659 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sm_mpapa5.all.lua +-- Total length: 71 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_mpapa5/wfoly_pi_mpapa5_raise_first_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_mpapa5_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_mpapa5/wfoly_pi_mpapa5_raise_first_closebolt_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_mpapa5_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_mpapa5/wfoly_pi_mpapa5_raise_first_end.ogg"} +}) +-- Sound: 22 +sound.Add({ + name = "weap_mpapa5_disconnector_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mpapa5/weap_mpapa5_disconnector_plr_01.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_mpapa5_fire_first_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mpapa5/weap_mpapa5_fire_first_plr_01.ogg", + } +}) +-- Sound: 10 +sound.Add({ + name = "weap_mpapa5_fire_plr_lfe", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/mpapa5/weap_mpapa5_fire_plr_01.wav", + +}) +-- Sound: 14 +sound.Add({ + name = "weap_mpapa5_sup_fire_plr_lfe", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = { + "weapons/mpapa5/weap_mpapa5_sup_fire_plr_01.ogg", + } +}) +-- Sound: 17 +sound.Add({ + name = "weap_sm_mpapa5_ads_down", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_ads_down.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "weap_sm_mpapa5_ads_up", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_ads_up.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "weap_sm_mpapa5_selector_off", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_mpapa5_selector_off.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "weap_sm_mpapa5_selector_on", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_mpapa5_selector_on.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_drop_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_drop.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_drop_quick_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_drop_quick.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_side_off.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_side_on.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_top_in.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_top_out.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_inspect_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_inspect_01.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_inspect_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_inspect_02.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_inspect_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_inspect_03.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_inspect_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_inspect_04.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_inspect_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_inspect_05.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_raise_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_raise.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_raise_quick_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_raise_quick.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_rotate.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_bolt_open.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_cloth01.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_magout_01.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_rattle_01.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_reload_magin_v2_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_065", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_reload_magin_v2_02.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_07", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_rattle_02.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_08", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_boltclose_01.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_09", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_cloth02.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_10", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_end.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_rotate.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_boltopen_01.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_magout_01.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_mvmnt.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_055", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_cloth.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_07", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_boltclose_01.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_08", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_end.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_fast_rotate.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_fast_boltopen_01.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_fast_mvmnt.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_fast_cloth.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_fast_magin_01.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_fast_boltclose_01.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_empty_fast_08", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_pi_mpapa5_reload_empty_fast_end.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_reload_fast_openbolt_01.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_reload_fast_rotate.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_reload_fast_magout_01.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_fast_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_reload_fast_rattle.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_fast_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_reload_fast_magin_01.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_fast_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_reload_fast_end.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sm_mpapa5_reload_fast_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_reload_fast_closebolt_01.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sm_mpapa7.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sm_mpapa7.all.lua new file mode 100644 index 0000000..5452e25 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sm_mpapa7.all.lua @@ -0,0 +1,857 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sm_mpapa7.all.lua +-- Total length: 93 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_raise_first_lift.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_mpapa7_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_raise_first_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_mpapa7_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_raise_first_end.ogg"} +}) + +-- Sound: 12 +sound.Add({ + name = "weap_mpapa7_fire_plr_lfe", + channel = CHAN_WEAPON +1, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/mpapa7/weap_mpapa7_fire_plr_01.wav", + +}) +-- Sound: 12 +sound.Add({ + name = "weap_mpapa7_fire_plr_sup", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = { + "weapons/mpapa7/weap_mpapa7_sup_fire_plr_01.ogg", + } +}) +-- Sound: 14 +sound.Add({ + name = "weap_mpapa7_selector_off", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_mpapa7_selector_off.ogg", + } +}) +sound.Add({ + name = "weap_mpapa7_disconnector_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mpapa7/weap_golf21_disconnector_plr_01.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_mpapa7_fire_first_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mpapa7/weap_mpapa7_fire_first_plr_01.ogg", + } +}) +-- Sound: 15 +sound.Add({ + name = "weap_mpapa7_selector_on", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_mpapa7_selector_on.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "weap_mpapa7_sup_fire_plr_lfe", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/mpapa7/weap_mpapa7_sup_fire_plr_01.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "weap_sm_mpapa7_ads_down", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/weap_sm_mpapa7_ads_down.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "weap_sm_mpapa7_ads_up", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/weap_sm_mpapa7_ads_up.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_drop_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_drop.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_drop_quick_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_drop_quick.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_gun_butt_hit_01_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_gun_butt_hit_01.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_gun_butt_hit_02_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_gun_butt_hit_02.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa7_hybrid_side_off.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa7_hybrid_side_on.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa7_hybrid_top_in.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa7_hybrid_top_out.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_inspect_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_sm_mpapa7_inspect_01.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_inspect_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_sm_mpapa7_inspect_02.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_inspect_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_sm_mpapa7_inspect_03.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_inspect_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_sm_mpapa7_inspect_04.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_inspect_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_sm_mpapa7_inspect_05.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_raise_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_raise.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_raise_quick_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_raise_quick.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_lift.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_mag_release.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_mvmnt.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_magout.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_magin_v2_01.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_055", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_magin_v2_02.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_end.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_lift.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_magout.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_035", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_mvmnt.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_bolt_release.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_end.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_lift.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_magin_v2_01.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_035", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_magin_v2_02.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_bolt_release.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_end.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_lift.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_magout.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_mvmnt.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_045", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_bolt_release.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_end.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_xmag_lift.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_xmag_magout.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_xmag_mvmnt.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_xmag_045", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_xmag_bolt_release.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_fast_lift.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_fast_magout.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_fast_magin_v2_01.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_fast_035", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_fast_magin_v2_02.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_fast_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_fast_end.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_fast_xmag_lift.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_fast_xmag_magout.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_fast_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_fast_xmag_035", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_fast_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_fast_xmag_end.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_xmag_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_xmag_lift.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_xmag_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_xmag_magout.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_xmag_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_xmag_mvmnt.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_xmag_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_xmag_045", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_sm_mpapa7_reload_xmag_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa7/wfoly_plr_sm_mpapa7_reload_xmag_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sm_papa90.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sm_papa90.all.lua new file mode 100644 index 0000000..1fe8028 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sm_papa90.all.lua @@ -0,0 +1,705 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sm_papa90.all.lua +-- Total length: 75 +sound.Add({ + name = "wfoly_plr_sm_papa90_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_papa90/wfoly_sm_papa90_raise_first_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_papa90_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_papa90/wfoly_sm_papa90_raise_first_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_papa90_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_papa90/wfoly_sm_papa90_first_raise_end.ogg"} +}) + +sound.Add({ + name = "weap_papa90_disconnector_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/papa90/weap_papa90_disconnector_plr_01.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_papa90_fire_first_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/papa90/weap_papa90_fire_first_plr_01.ogg", + } +}) + + +-- Sound: 10 +sound.Add({ + name = "weap_papa90_fire_plr_lfe", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/papa90/weap_papa90_fire_plr_01.wav", + +}) +-- Sound: 14 +sound.Add({ + name = "weap_papa90_sup_fire_plr_lfe", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = { + "weapons/papa90/weap_papa90_sup_fire_plr_01.ogg", + } +}) +-- Sound: 17 +sound.Add({ + name = "weap_sm_papa90_ads_down", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_ads_down.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "weap_sm_papa90_ads_up", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_ads_up.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "weap_sm_papa90_selector_off", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_papa90_selector_off.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "weap_sm_papa90_selector_on", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_papa90_selector_on.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_sm_papa90_drop_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_drop.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_sm_papa90_drop_quick_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_drop_quick.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_sm_papa90_gun_butt_hit_01_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_gun_butt_hit_cloth01.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sm_papa90_gun_butt_hit_01_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_gun_butt_hit_cloth02.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sm_papa90_gun_butt_hit_01_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_gun_butt_hit_cloth03.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sm_papa90_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_papa90_hybrid_scope_side_off.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sm_papa90_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_papa90_hybrid_scope_side_on.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sm_papa90_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sm_papa90_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sm_papa90_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_papa90_hybrid_scope_top_in.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sm_papa90_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_papa90_hybrid_scope_top_out.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sm_papa90_inspect_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_inspect_01.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sm_papa90_inspect_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_inspect_02.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sm_papa90_inspect_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_inspect_03.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sm_papa90_inspect_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_inspect_04.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sm_papa90_inspect_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_inspect_05.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sm_papa90_raise_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_raise.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sm_papa90_raise_quick_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_raise_quick.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_grabmag.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_magout_01.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_arm_down.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_arm_up.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_magin_v2_01.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_055", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_magin_v2_02.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_arm_maghit.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_hitmag_01.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_08", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_end.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_gunrattle.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_magout_01.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_arm_down.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_rattle.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_055", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_arm_swing.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_hitmag_02.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_08", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_chamber_01.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_09", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_end.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_fast_start.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_fast_magin.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_fast_magin_v2_01.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_fast_045", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_fast_magin_v2_02.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_hitmag_01.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_fast_chamber_01.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_empty_fast_end.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_fast_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_fast_cloth02.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_fast_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_fast_magout_01.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_fast_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_fast_cloth.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_fast_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_fast_cloth03.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_fast_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_fast_magin_v2_01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_fast_055", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_fast_magin_v2_02.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_fast_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_fast_maghit.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_fast_07", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_fast_maghit_02.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sm_papa90_reload_fast_08", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_papa90/wfoly_sm_papa90_reload_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sm_smgolf45.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sm_smgolf45.all.lua new file mode 100644 index 0000000..0da01c7 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sm_smgolf45.all.lua @@ -0,0 +1,1007 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sm_smgolf45.all.lua +-- Total length: 106 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_smgolf45/wfoly_sm_smgolf45_raise_first_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_smgolf45_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_smgolf45/wfoly_sm_smgolf45_raise_first_bolt_pull.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_smgolf45_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_smgolf45/wfoly_sm_smgolf45_raise_first_mvmnt.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_smgolf45_raise_first_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_smgolf45/wfoly_sm_smgolf45_raise_first_bolt_release.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_smgolf45_raise_first_05", + channel = CHAN_WPNFOLEY +5, + volume = 1, + sound = {"reloads/iw8_smgolf45/wfoly_sm_smgolf45_raise_first_end.ogg"} +}) + +sound.Add({ + name = "weap_smgolf45_fire_first_plr", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"weapons/smgolf45/weap_smgolf45_fire_hammer_01.ogg"} +}) +sound.Add({ + name = "weap_smgolf45_disconnector_plr", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"weapons/smgolf45/weap_smgolf45_disconnector_plr_01.ogg"} +}) + + +-- Sound: 0 +sound.Add({ + name = "mount_enter_side_smgolf45_vestlight_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_side_mpapa5_vestlight_plr.ogg", + } +}) + + + +sound.Add({ + name = "weap_sm_mpapa5_selector_off", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_mpapa5_selector_off.ogg", + } +}) +-- Sound: 5 +sound.Add({ + name = "weap_sm_mpapa5_selector_on", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_mpapa5_selector_on.ogg", + } +}) +-- Sound: 14 +sound.Add({ + name = "weap_smgolf45_fire_plr_lfe", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/smgolf45/weap_smgolf45_fire_plr_01.wav", + +}) +-- Sound: 18 +sound.Add({ + name = "weap_smgolf45_sup_fire_plr_lfe", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = { + "weapons/smgolf45/weap_smgolf45_sup_fire_plr_01.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_ads_down", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_ads_down.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_ads_up", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_mpapa5/wfoly_sm_mpapa5_ads_up.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_drop_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_drop.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_drop_quick_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_drop_quick.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_side_off.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_side_on.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_top_in.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_mpapa5_hybrid_scope_top_out.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_hybrid_west02_toggle_off_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_hybrid_west02_toggle_off.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_hybrid_west02_toggle_on_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_hybrid_west02_toggle_on.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_inspect_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_inspect_01.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_inspect_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_inspect_02.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_inspect_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_inspect_03.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_inspect_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_inspect_04.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_inspect_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_inspect_05.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_raise_quick_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_raise_quick.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_raise.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_magout.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_magin.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_end.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_raise.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_magout.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_maghit.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_magin.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_045", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + " ", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_bolt_release.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_end.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_raise.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_maghit.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_magin.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_charge.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_end.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_smag_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_smag_raise.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_smag_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_smag_magout.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_smag_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_smag_magin.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_smag_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_smag_charge.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_smag_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_smag_end.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_xmaglrg_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_xmaglrg_raise.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_xmaglrg_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_xmaglrg_magout.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_xmaglrg_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_xmaglrg_magin.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_xmaglrg_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_xmaglrg_end.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_fast_xmaglrg_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_fast_xmaglrg_charge.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_smag_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_smag_raise.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_smag_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_smag_magout.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_smag_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_smag_maghit.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_smag_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_smag_magin.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_smag_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_smag_end.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_smag_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_smag_charge.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_xmaglrg_raise.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_xmaglrg_magout.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_xmaglrg_maghit.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_xmaglrg_magin.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_xmaglrg_charge.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_empty_xmaglrg_end.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_raise.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_magout.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_maghit.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_magin.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_end.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_smag_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_smag_raise.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_smag_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_smag_magout.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_smag_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_smag_magin.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_smag_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_smag_end.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_xmaglrg_raise.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_xmaglrg_magout.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_xmaglrg_arm.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_xmaglrg_maghit.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_xmaglrg_magin.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_fast_xmaglrg_end.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_smag_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_smag_raise.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_smag_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_smag_magout.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_smag_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_smag_maghit.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_smag_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_smag_magin.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_smag_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_smag_end.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_xmaglrg_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_xmaglrg_raise.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_xmaglrg_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_xmaglrg_magout.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_xmaglrg_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_xmaglrg_maghit.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_xmaglrg_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_xmaglrg_magin.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_reload_xmaglrg_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_smgolf45/wfoly_sm_smgolf45_reload_xmaglrg_end.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_selectsemi_off_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/wfoly_sm_smgolf45_selectsemi_off.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_sm_smgolf45_selectsemi_on_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/wfoly_sm_smgolf45_selectsemi_on.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sm_uzulu.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sm_uzulu.all.lua new file mode 100644 index 0000000..c81c0bf --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sm_uzulu.all.lua @@ -0,0 +1,1520 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sm_uzulu.all.lua +-- Total length: 148 +sound.Add({ + name = "ps_wfoly_plr_sm_uzulu_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_first_start.ogg"} +}) +sound.Add({ + name = "ps_wfoly_plr_sm_uzulu_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_first_stock.ogg"} +}) +sound.Add({ + name = "ps_wfoly_plr_sm_uzulu_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_first_extend.ogg"} +}) +sound.Add({ + name = "ps_wfoly_plr_sm_uzulu_raise_first_04", + channel = CHAN_WPNFOLEY +4, + volume = 1, + sound = {"reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_first_end.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_uzulu_raise_first_nostock_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_first_start.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_uzulu_raise_first_nostock_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_charge_01.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_uzulu_raise_first_nostock_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_first_end.ogg"} +}) +-- Sound: 4 +sound.Add({ + name = "weap_uzulu_disconnector_plr", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/uzulu/weap_uzulu_disconnector_plr_01.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_uzulu_fire_first_plr", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/uzulu/weap_uzulu_prefire_plr_01.ogg", + } +}) + +sound.Add({ + name = "weap_sm_uzulu_ads_down", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/weap_sm_uzulu_ads_down.ogg", + } +}) +-- Sound: 5 +sound.Add({ + name = "weap_sm_uzulu_ads_up", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/weap_sm_uzulu_ads_up.ogg", + } +}) +-- Sound: 6 +sound.Add({ + name = "weap_sm_uzulu_selector_off", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_uzulu_selector_off.ogg", + } +}) +-- Sound: 7 +sound.Add({ + name = "weap_sm_uzulu_selector_on", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/selector/weap_sm_uzulu_selector_on.ogg", + } +}) +-- Sound: 10 +sound.Add({ + name = "weap_uzulu_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/uzulu/weap_uzulu_fire_plr_01.wav", + +}) +-- Sound: 15 +sound.Add({ + name = "weap_uzulu_sub_fire_plr", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = { + "weapons/uzulu/weap_uzulu1911_fire_plr_01.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "weap_uzulu_sup_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/uzulu/weap_uzulu_sup_fire_plr_01.ogg", + } +}) + +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_sm_uzulu_drop_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_drop_down.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sm_uzulu_drop_quick_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_drop_quick_down.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sm_uzulu_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_uzulu_hybrid_scope_side_off.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sm_uzulu_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_uzulu_hybrid_scope_side_on.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sm_uzulu_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sm_uzulu_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sm_uzulu_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_uzulu_hybrid_scope_top_in.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sm_uzulu_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_uzulu_hybrid_scope_top_out.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sm_uzulu_idle_active_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_idle_active_idle1.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sm_uzulu_idle_active_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_idle_active_idle2.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sm_uzulu_idle_active_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_idle_active_idle3.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sm_uzulu_idle_active_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_idle_active_idle4.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sm_uzulu_inspect_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_inspect_01.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sm_uzulu_inspect_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_inspect_02.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sm_uzulu_inspect_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_inspect_03.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sm_uzulu_inspect_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_inspect_04.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sm_uzulu_inspect_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_inspect_05.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sm_uzulu_raise_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_up.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sm_uzulu_raise_first_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_first_start.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sm_uzulu_raise_first_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_first_stock.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sm_uzulu_raise_first_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_first_extend.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sm_uzulu_raise_first_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_first_end.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sm_uzulu_raise_quick_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_raise_quick_up.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_start.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_arm.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_magout_01.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_shake.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_magin_01.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_rattle.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_07", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_end.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_start.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_magout_01.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_rattle.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_arm.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_magin_01.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_tilt.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_charge_01.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_08", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_end.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_fast_start.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_fast_rattle.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_fast_arm.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_fast_magin_01.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_fast_tilt.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_fast_charge_01.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_fast_08", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_fast_end.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_start.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_magout_01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_rattle.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_arm.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_magin_01.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_tilt.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_charge_01.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_08", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_end.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_fast_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_fast_start.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_fast_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_fast_magout_01.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_fast_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_fast_rattle.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_fast_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_fast_arm.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_fast_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_fast_magin_01.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_fast_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_fast_tilt.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_fast_07", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_fast_charge_01.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_scope_fast_08", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_scope_fast_end.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_start.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_magout_01.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_rattle.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_arm.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_magin_01.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_tilt.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmag_07", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_charge_01.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmag_08", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_fast_start.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_fast_magout_01.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_fast_rattle.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_fast_arm.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_fast_magin_01.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_fast_tilt.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_fast_charge_01.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_08", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xmag_fast_end.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmag_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_start.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmag_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_magout_01.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmag_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_rattle.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmag_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_arm.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmag_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_magin_01.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmag_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_tilt.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmag_07", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_charge_01.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmag_08", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_end.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmeg_fast_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_fast_start.ogg", + } +}) +-- Sound: 110 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmeg_fast_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_fast_magout_01.ogg", + } +}) +-- Sound: 111 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmeg_fast_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_fast_rattle.ogg", + } +}) +-- Sound: 112 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmeg_fast_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_fast_arm.ogg", + } +}) +-- Sound: 113 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmeg_fast_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_fast_magin_01.ogg", + } +}) +-- Sound: 114 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmeg_fast_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_fast_tilt.ogg", + } +}) +-- Sound: 115 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmeg_fast_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_fast_charge_01.ogg", + } +}) +-- Sound: 116 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_empty_xxmeg_fast_08", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_empty_xxmag_fast_end.ogg", + } +}) +-- Sound: 117 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_fast_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_fast_start.ogg", + } +}) +-- Sound: 118 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_fast_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_fast_arm.ogg", + } +}) +-- Sound: 119 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_fast_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_fast_magout_01.ogg", + } +}) +-- Sound: 120 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_fast_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_fast_rattle.ogg", + } +}) +-- Sound: 121 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_fast_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_fast_magin_01.ogg", + } +}) +-- Sound: 122 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_fast_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_fast_end.ogg", + } +}) +-- Sound: 123 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmag_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_start.ogg", + } +}) +-- Sound: 124 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmag_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_arm.ogg", + } +}) +-- Sound: 125 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmag_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_magout_01.ogg", + } +}) +-- Sound: 126 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmag_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_rattle.ogg", + } +}) +-- Sound: 127 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmag_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_magin_01.ogg", + } +}) +-- Sound: 128 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmag_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_end.ogg", + } +}) +-- Sound: 129 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmeg_fast_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_fast_start.ogg", + } +}) +-- Sound: 130 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmeg_fast_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_fast_arm.ogg", + } +}) +-- Sound: 131 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmeg_fast_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_fast_magout_01.ogg", + } +}) +-- Sound: 132 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmeg_fast_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_fast_rattle.ogg", + } +}) +-- Sound: 133 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmeg_fast_05", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_fast_magin_01.ogg", + } +}) +-- Sound: 134 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmeg_fast_06", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_fast_shake.ogg", + } +}) +-- Sound: 135 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xmeg_fast_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xmag_fast_end.ogg", + } +}) +-- Sound: 136 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmag_01", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_start.ogg", + } +}) +-- Sound: 137 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmag_02", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_arm.ogg", + } +}) +-- Sound: 138 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmag_03", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_magout_01.ogg", + } +}) +-- Sound: 139 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmag_04", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_rattle.ogg", + } +}) +-- Sound: 140 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmag_05", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_magin_01.ogg", + } +}) +-- Sound: 141 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmag_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_end.ogg", + } +}) +-- Sound: 142 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmeg_fast_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_fast_start.ogg", + } +}) +-- Sound: 143 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmeg_fast_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_fast_arm.ogg", + } +}) +-- Sound: 144 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmeg_fast_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_fast_magout_01.ogg", + } +}) +-- Sound: 145 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmeg_fast_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_fast_rattle.ogg", + } +}) +-- Sound: 146 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmeg_fast_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_fast_magin_01.ogg", + } +}) +-- Sound: 147 +sound.Add({ + name = "wfoly_plr_sm_uzulu_reload_xxmeg_fast_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_reload_xxmag_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sm_victor.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sm_victor.all.lua new file mode 100644 index 0000000..b88795d --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sm_victor.all.lua @@ -0,0 +1,1213 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sm_victor.all.lua +-- Total length: 127 + +sound.Add({ + name = "wfoly_plr_sm_victor_raise_first_01", + channel = CHAN_WPNFOLEY +1, + volume = 1, + sound = {"reloads/iw8_victor/wfoly_sm_victor_raise_first_up.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_victor_raise_first_02", + channel = CHAN_WPNFOLEY +2, + volume = 1, + sound = {"reloads/iw8_victor/wfoly_sm_victor_raise_first_charge.ogg"} +}) +sound.Add({ + name = "wfoly_plr_sm_victor_raise_first_03", + channel = CHAN_WPNFOLEY +3, + volume = 1, + sound = {"reloads/iw8_victor/wfoly_sm_victor_raise_first_end.ogg"} +}) + + +-- Sound: 4 +sound.Add({ + name = "weap_sm_victor_ads_down", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/victor/weap_sm_uzulu_ads_down.ogg", + } +}) +-- Sound: 5 +sound.Add({ + name = "weap_sm_victor_ads_up", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "weapons/victor/weap_sm_uzulu_ads_up.ogg", + } +}) +-- Sound: 14 +sound.Add({ + name = "weap_victor_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {80,110}, + sound = + "^weapons/victor/weap_victor_fire_plr_01.wav", + +}) +-- Sound: 17 +sound.Add({ + name = "weap_victor_sup_fire_plr", + channel = CHAN_WEAPON, + volume = 1, + pitch = {80,110}, + sound = { + "weapons/victor/weap_victor_sup_fire_plr_01.ogg", + } +}) +sound.Add({ + name = "weap_victor_fire_first_plr", + channel = CHAN_WPNFOLEY +20, + volume = 1, + sound = {"weapons/victor/weap_mpapa7_fire_first_plr_01.ogg"} +}) +sound.Add({ + name = "weap_victor_disconnector_plr", + channel = CHAN_WPNFOLEY +21, + volume = 1, + sound = {"weapons/victor/weap_victor_disconnector_plr_01.ogg"} +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sm_victor_drop_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_drop.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sm_victor_drop_quick_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_drop_quick.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sm_victor_hybrid_scope_side_off", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_uzulu_hybrid_scope_side_off.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sm_victor_hybrid_scope_side_on", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_uzulu_hybrid_scope_side_on.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sm_victor_hybrid_scope_snap_closed", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_closed.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sm_victor_hybrid_scope_snap_open", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_ar_falpha_hybrid_scope_snap_open.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sm_victor_hybrid_scope_top_in", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_uzulu_hybrid_scope_top_in.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sm_victor_hybrid_scope_top_out", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/hybrid_scope/wfoly_plr_sm_uzulu_hybrid_scope_top_out.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sm_victor_inspect_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_plr_sm_victor_inspect_01.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sm_victor_inspect_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_plr_sm_victor_inspect_02.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sm_victor_inspect_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_plr_sm_victor_inspect_03.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sm_victor_inspect_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_plr_sm_victor_inspect_04.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sm_victor_inspect_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_plr_sm_victor_inspect_05.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sm_victor_raise_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_raise.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sm_victor_raise_quick_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_raise_quick.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_up.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_mag_release.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_magout.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_arm.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_maghit.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_magin.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_07", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_end.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_drum_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_drum_up.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_drum_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_drum_magrelease.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_drum_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_drum_drumout.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_drum_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_drum_arm.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_drum_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_drum_drumhit.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_drum_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_drum_drumin.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_drum_07", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_drum_end.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_up.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_magout.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_arm.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_rotate.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_maghit.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_magin_01.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_065", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_magin_02.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_07", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_charge.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_08", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_end.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_drum_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_drum_up.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_drum_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_drum_drumout.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_drum_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_drum_arm.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_drum_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_drum_drumhit.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_drum_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_drum_drumin.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_drum_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_drum_charge.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_drum_07", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_drum_end.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_up.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_arm.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_maghit.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_magin.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_hit.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_bolt.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_08", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_end.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_drum_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_drum_up.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_drum_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_drum_drumout.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_drum_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_drum_arm.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_drum_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_drum_drumhit.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_drum_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_drum_drumin.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_drum_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_drum_hit.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_drum_07", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_drum_charge.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_drum_08", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_drum_end.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_smag_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_smag_up.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_smag_02", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_smag_magout.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_smag_03", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_smag_arm.ogg", + } +}) +-- Sound: 88 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_smag_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_smag_maghit.ogg", + } +}) +-- Sound: 89 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_smag_05", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_smag_magin.ogg", + } +}) +-- Sound: 90 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_smag_06", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_smag_hit.ogg", + } +}) +-- Sound: 91 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_smag_07", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_smag_charge.ogg", + } +}) +-- Sound: 92 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_fast_smag_08", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_fast_smag_end.ogg", + } +}) +-- Sound: 93 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_smag_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_smag_up.ogg", + } +}) +-- Sound: 94 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_smag_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_smag_magout.ogg", + } +}) +-- Sound: 95 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_smag_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_smag_arm.ogg", + } +}) +-- Sound: 96 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_smag_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_smag_maghit.ogg", + } +}) +-- Sound: 97 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_smag_05", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_smag_magin.ogg", + } +}) +-- Sound: 98 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_smag_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_smag_charge.ogg", + } +}) +-- Sound: 99 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_empty_smag_07", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_empty_smag_end.ogg", + } +}) +-- Sound: 100 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_up.ogg", + } +}) +-- Sound: 101 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_magout.ogg", + } +}) +-- Sound: 102 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_arm.ogg", + } +}) +-- Sound: 103 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_maghit.ogg", + } +}) +-- Sound: 104 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_magin.ogg", + } +}) +-- Sound: 105 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_06", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_end.ogg", + } +}) +-- Sound: 106 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_drum_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_drum_up.ogg", + } +}) +-- Sound: 107 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_drum_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_drum_drumout.ogg", + } +}) +-- Sound: 108 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_drum_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_drum_arm.ogg", + } +}) +-- Sound: 109 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_drum_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_drum_drumhit.ogg", + } +}) +-- Sound: 110 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_drum_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_drum_drumin.ogg", + } +}) +-- Sound: 111 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_drum_06", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_drum_end.ogg", + } +}) +-- Sound: 112 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_smag_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_smag_up.ogg", + } +}) +-- Sound: 113 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_smag_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_smag_magout.ogg", + } +}) +-- Sound: 114 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_smag_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_smag_arm.ogg", + } +}) +-- Sound: 115 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_smag_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_smag_maghit.ogg", + } +}) +-- Sound: 116 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_smag_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_smag_magin.ogg", + } +}) +-- Sound: 117 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_fast_smag_06", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_fast_smag_end.ogg", + } +}) +-- Sound: 118 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_smag_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_smag_up.ogg", + } +}) +-- Sound: 119 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_smag_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_smag_magrelease.ogg", + } +}) +-- Sound: 120 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_smag_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_smag_magout.ogg", + } +}) +-- Sound: 121 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_smag_04", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_smag_arm.ogg", + } +}) +-- Sound: 122 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_smag_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_smag_maghit.ogg", + } +}) +-- Sound: 123 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_smag_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_smag_magin.ogg", + } +}) +-- Sound: 124 +sound.Add({ + name = "wfoly_plr_sm_victor_reload_smag_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_victor/wfoly_sm_victor_reload_smag_end.ogg", + } +}) +-- Sound: 125 +sound.Add({ + name = "wfoly_plr_sm_victor_selectsemi_switch_off_01", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/wfoly_sm_victor_selectsemi_switch_off.ogg", + } +}) +-- Sound: 126 +sound.Add({ + name = "wfoly_plr_sm_victor_selectsemi_switch_on_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "foley/wfoly_sm_victor_selectsemi_switch_on.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sn_alpha50.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sn_alpha50.all.lua new file mode 100644 index 0000000..3b33098 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sn_alpha50.all.lua @@ -0,0 +1,517 @@ +sound.Add({ + name = "weap_alpha50_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/alpha50/weap_alpha50_fire_plr_01.wav", + +}) +sound.Add({ + name = "weap_alpha50_fire_plr_sup", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/alpha50/weap_alpha50_sup_plr_01.wav", + +}) +-- Sound: 11 +sound.Add({ + name = "weap_sn_alpha50_ads_down", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_ads_down.ogg", + } +}) +-- Sound: 12 +sound.Add({ + name = "weap_sn_alpha50_ads_up", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_ads_up.ogg", + } +}) +-- Sound: 13 +sound.Add({ + name = "wfoly_plr_sm_uzulu_idle_active_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_idle_active_idle1.ogg", + } +}) +-- Sound: 14 +sound.Add({ + name = "wfoly_plr_sm_uzulu_idle_active_02", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_idle_active_idle2.ogg", + } +}) +-- Sound: 15 +sound.Add({ + name = "wfoly_plr_sm_uzulu_idle_active_03", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_idle_active_idle3.ogg", + } +}) +-- Sound: 16 +sound.Add({ + name = "wfoly_plr_sm_uzulu_idle_active_04", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_uzulu/wfoly_plr_sm_uzulu_idle_active_idle4.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "wfoly_plr_sn_alpha50_ads_rechamber_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_ads_rechamber_02.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "wfoly_plr_sn_alpha50_drop_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_drop.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "wfoly_plr_sn_alpha50_drop_quick_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_drop_quick.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_sn_alpha50_inspect_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_inspect_01.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_sn_alpha50_inspect_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_inspect_02.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_sn_alpha50_inspect_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_inspect_03.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sn_alpha50_raise_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_raise.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sn_alpha50_raise_quick_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_raise_quick.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sn_alpha50_rechamber_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_rechamber_01_01.ogg", + "reloads/iw8_alpha50/wfoly_sn_alpha50_rechamber_01_02.ogg", + "reloads/iw8_alpha50/wfoly_sn_alpha50_rechamber_01_03.ogg", + "reloads/iw8_alpha50/wfoly_sn_alpha50_rechamber_01_04.ogg", + "reloads/iw8_alpha50/wfoly_sn_alpha50_rechamber_01_05.ogg", + "reloads/iw8_alpha50/wfoly_sn_alpha50_rechamber_01_06.ogg", + "reloads/iw8_alpha50/wfoly_sn_alpha50_rechamber_01_07.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sn_alpha50_rechamber_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_rechamber_02.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_raise.ogg", + } +}) +--Sound 28 part 2 lole +sound.Add({ + name = "wfoly_plr_sn_alpha50_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_raise_first.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sn_alpha50_raise_first_02", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_raise_first_boltclose_01.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_magout_01.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_arm.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_maghit.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_05", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_magin_v2_01.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_055", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_magin_v2_02.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_end.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_02", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_arm.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_03", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_magout_01.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_04", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_maggrab.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_05", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_055", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_06", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_maghit_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_07", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_end.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_08", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_boltclose_01.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_fast_raise.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_fast_maggrab.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_fast_magin_v2_01.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_fast_055", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_fast_magin_v2_02.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_fast_boltclose_01.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_empty_fast_end.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_fast_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_fast_mvmnt.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_fast_02", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_fast_magout_01.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_fast_03", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_fast_magin_v2_01.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_fast_035", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_fast_magin_v2_02.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sn_alpha50_reload_fast_04", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_alpha50/wfoly_sn_alpha50_reload_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sn_delta.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sn_delta.all.lua new file mode 100644 index 0000000..534bc28 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sn_delta.all.lua @@ -0,0 +1,692 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sn_delta.all.lua +-- Total length: 88 + +-- Sound: 7 +sound.Add({ + name = "weap_delta_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {90,110}, + sound = + "^weapons/delta/weap_delta_fire_plr_01.wav", + +}) +sound.Add({ + name = "weap_delta_fire_first", + channel = CHAN_WEAPON +1, + volume = 1, + pitch = {90,110}, + sound = { + "weapons/delta/weap_delta_fire_first_plr_01.ogg", + } +}) +sound.Add({ + name = "weap_delta_fire_disconnector", + channel = CHAN_WEAPON +2, + volume = 1, + pitch = {90,110}, + sound = { + "weapons/delta/weap_delta_disconnector_plr_01.ogg", + } +}) +sound.Add({ + name = "weap_delta_fire_plr_sup", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {90,110}, + sound = + "^weapons/delta/weap_delta_sup_plr_01.wav", + +}) +-- Sound: 22 +sound.Add({ + name = "weap_sn_delta_ads_down", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/weap_sn_delta_ads_down.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "weap_sn_delta_ads_up", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/weap_sn_delta_ads_up.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sn_delta_drop_01", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_drop_mvmnt.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sn_delta_inspect_01", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_inspect_01.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sn_delta_inspect_02", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_inspect_02.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sn_delta_inspect_03", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_inspect_03.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sn_delta_raise_01", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_raise_mvmnt.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sn_delta_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_raise_first_mvmnt.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sn_delta_raise_first_02", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_raise_first_charge_01.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sn_delta_raise_first_03", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_raise_first_end.ogg", + } +}) + +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_01", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_raise.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_02", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_magout_01.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_03", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_cloth_01.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_04", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_cloth_02.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_05", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_magin_v2_01.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_055", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_magin_v2_02.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_06", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_end.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_01", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_raise.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_02", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_magout_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_03", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_throw_mag.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_04", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_045", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_05", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_end.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_06", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_charge_01.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_raise.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_maghit_01.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_magin_v2_01.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_045", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_magin_v2_02.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_end.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_charge_01.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_xmag_01", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_xmag_rotate.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_xmag_02", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_xmag_maghit_01.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_xmag_03", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_xmag_magout_01.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_xmag_04", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_xmag_045", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_xmag_05", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_xmag_end.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_fast_xmag_06", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_fast_xmag_charge_01.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_xmag_01", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_xmag_raise.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_xmag_02", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_xmag_magout_01.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_xmag_03", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_xmag_mag_throw.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_xmag_04", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_xmag_045", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_xmag_05", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_xmag_rotate.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_xmag_06", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_xmag_end.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_empty_xmag_07", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_empty_xmag_charge_01.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_01", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_raise.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_02", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_magout_01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_03", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_rotate.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_04", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_magin_v2_01.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_045", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_magin_v2_02.ogg", + } +}) +-- Sound: 74 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_05", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_end.ogg", + } +}) +-- Sound: 75 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_xmag_01", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_xmag_raise.ogg", + } +}) +-- Sound: 76 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_xmag_02", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_xmag_magout_01.ogg", + } +}) +-- Sound: 77 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_xmag_03", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_xmag_mvmnt.ogg", + } +}) +-- Sound: 78 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_xmag_04", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 79 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_xmag_045", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 80 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_fast_xmag_05", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_fast_xmag_end.ogg", + } +}) +-- Sound: 81 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_xmag_01", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_xmag_raise.ogg", + } +}) +-- Sound: 82 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_xmag_02", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_xmag_maggrab_01.ogg", + } +}) +-- Sound: 83 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_xmag_03", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_xmag_magout_01.ogg", + } +}) +-- Sound: 84 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_xmag_04", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_xmag_cloth.ogg", + } +}) +-- Sound: 85 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_xmag_05", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_xmag_magin_v2_01.ogg", + } +}) +-- Sound: 86 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_xmag_055", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_xmag_magin_v2_02.ogg", + } +}) +-- Sound: 87 +sound.Add({ + name = "wfoly_plr_sn_delta_reload_xmag_06", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/wfoly_sn_delta_reload_xmag_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sn_hdromeo.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sn_hdromeo.all.lua new file mode 100644 index 0000000..1f9c5f0 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sn_hdromeo.all.lua @@ -0,0 +1,741 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sn_hdromeo.all.lua +-- Total length: 74 + +-- Sound: 0 +sound.Add({ + name = "mount_enter_side_hdromeo_vestlight_plr", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_side_hdromeo_vestlight_plr.ogg", + } +}) +-- Sound: 1 +sound.Add({ + name = "mount_enter_top_hdromeo_vestlight_plr", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_enter_top_hdromeo_vestlight_plr.ogg", + } +}) +-- Sound: 2 +sound.Add({ + name = "mount_exit_side_hdromeo_vestlight_plr", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_side_hdromeo_vestlight_plr.ogg", + } +}) +-- Sound: 3 +sound.Add({ + name = "mount_exit_top_hdromeo_vestlight_plr", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "foley/mount/mount_exit_top_hdromeo_vestlight_plr.ogg", + } +}) +-- Sound: 4 +sound.Add({ + name = "weap_hdromeo_dryfire_plr", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "weapons/weap_dryfire_rifle.ogg", + } +}) +-- Sound: 8 +sound.Add({ + name = "weap_hdromeo_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/hdromeo/weap_hdromeo_fire_plr_01.wav", + +}) +sound.Add({ + name = "weap_hdromeo_fire_plr_sup", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/hdromeo/weap_hdromeo_sup_plr_01.wav", + +}) +-- Sound: 10 +sound.Add({ + name = "weap_sn_hdromeo_ads_down", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/weap_sn_hdromeo_ads_down.ogg", + } +}) +-- Sound: 11 +sound.Add({ + name = "weap_sn_hdromeo_ads_up", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/weap_sn_hdromeo_ads_up.ogg", + } +}) +-- Sound: 12 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_01", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_start.ogg", + } +}) +-- Sound: 13 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_02", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_raisesettle.ogg", + } +}) +-- Sound: 14 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_03", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_maggrab.ogg", + } +}) +-- Sound: 15 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_04", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_magout_01.ogg", + } +}) +-- Sound: 16 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_05", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_look.ogg", + } +}) +-- Sound: 17 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_06", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_insert.ogg", + } +}) +-- Sound: 18 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_07", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_magin_01.ogg", + } +}) +-- Sound: 19 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_08", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_rotate.ogg", + } +}) +-- Sound: 20 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_09", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_boltopen_01.ogg", + } +}) +-- Sound: 21 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_10", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_arm.ogg", + } +}) +-- Sound: 22 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_11", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_boltclose_01.ogg", + } +}) +-- Sound: 23 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_12", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_forward.ogg", + } +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_13", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_adjust.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_ballistics_raise_first_14", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_ballistics_raise_first_end.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_drop_01", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_drop_down.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_drop_quick_01", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_drop_quick_down.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_inspect_01", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_sn_hdromeo_inspect_01.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_inspect_02", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_sn_hdromeo_inspect_02.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_inspect_03", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_sn_hdromeo_inspect_03.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_raise_01", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_raise_up.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_raise_02", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_raise_hand.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_raise_03", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_raise_settle.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_raise_first_01", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_raise_first_up.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_raise_first_02", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_raise_first_boltclose_01.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_raise_first_03", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_raise_first_adjust.ogg", + } +}) +-- Sound: 33 2 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_raise_first_04", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_raise_first_settle.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_raise_quick_01", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_raise_quick_up.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_rechamber_01", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_rechamber_boltopen_01_01.ogg", + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_rechamber_boltopen_01_02.ogg", + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_rechamber_boltopen_01_03.ogg", + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_rechamber_boltopen_01_04.ogg", + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_rechamber_boltopen_01_05.ogg", + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_rechamber_boltopen_01_06.ogg", + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_rechamber_boltopen_01_07.ogg", + } +}) +sound.Add({ + name = "wfoly_plr_sn_hdromeo_rechamber_02", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_rechamber_boltclose_01.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_01", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_start.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_02", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_magout_01.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_03", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_pull.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_04", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_rattle.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_05", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_magin_v2_01.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_055", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_magin_v2_02.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_06", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_end.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_02", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_pull.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_03", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_raise.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_04", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_magout_01.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_05", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_toss.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_06", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_arm.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_07", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_magin_v2_01.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_075", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_magin_v2_02.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_08", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_end.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_09", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_boltclose_01.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_fast_start.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_fast_handmove.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_fast_magout_01.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_fast_shake.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_fast_arm.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_fast_magin_v2_01.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_fast_075", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_fast_magin_v2_02.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_fast_08", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_fast_rattle.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_fast_09", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_fast_boltclose_01.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_fast_10", + channel = CHAN_WPNFOLEY + 8, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_fast_armforward.ogg", + } +}) +-- Sound: 65 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_empty_fast_11", + channel = CHAN_WPNFOLEY + 9, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_empty_fast_end.ogg", + } +}) +-- Sound: 66 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_fast_01", + channel = CHAN_WPNFOLEY + 10, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_fast_start.ogg", + } +}) +-- Sound: 67 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_fast_02", + channel = CHAN_WPNFOLEY + 1, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_fast_magout_01.ogg", + } +}) +-- Sound: 68 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_fast_03", + channel = CHAN_WPNFOLEY + 2, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_fast_pull.ogg", + } +}) +-- Sound: 69 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_fast_04", + channel = CHAN_WPNFOLEY + 3, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_fast_tilt.ogg", + } +}) +-- Sound: 70 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_fast_05", + channel = CHAN_WPNFOLEY + 4, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_fast_magin_v2_01.ogg", + } +}) +-- Sound: 71 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_fast_055", + channel = CHAN_WPNFOLEY + 5, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_fast_magin_v2_02.ogg", + } +}) +-- Sound: 72 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_fast_06", + channel = CHAN_WPNFOLEY + 6, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_fast_shake.ogg", + } +}) +-- Sound: 73 +sound.Add({ + name = "wfoly_plr_sn_hdromeo_reload_fast_07", + channel = CHAN_WPNFOLEY + 7, + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_hdromeo/wfoly_plr_sn_hdromeo_reload_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/modules/sounds/weapon_sn_xmike109.all.lua b/lua/weapons/mg_base/modules/sounds/weapon_sn_xmike109.all.lua new file mode 100644 index 0000000..342fc84 --- /dev/null +++ b/lua/weapons/mg_base/modules/sounds/weapon_sn_xmike109.all.lua @@ -0,0 +1,544 @@ +-- Generated by GmodSoundGen + +-- File: D:\Downloads\important_stuff_v2\Tools\GmodSoundGen_0519\weapon_sn_xmike109.all.lua +-- Total length: 65 + +-- Sound: 4 +sound.Add({ + name = "weap_sn_xmike109_ads_down", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/weap_sn_delta_ads_down.ogg", + } +}) +-- Sound: 5 +sound.Add({ + name = "weap_sn_xmike109_ads_up", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_delta/weap_sn_delta_ads_up.ogg", + } +}) +-- Sound: 14 +sound.Add({ + name = "weap_xmike109_fire_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/xm109/weap_xmike109_fire_plr_01.wav", + +}) +-- Sound: 22 +sound.Add({ + name = "weap_xmike109_sup_plr", + channel = CHAN_WEAPON, + level = 140, + volume = 1, + pitch = {100,100}, + sound = + "^weapons/xm109/weap_xmike109_sup_plr_01.wav", + +}) +-- Sound: 24 +sound.Add({ + name = "wfoly_plr_sn_xmike109_drop_01", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_drop.ogg", + } +}) +-- Sound: 25 +sound.Add({ + name = "wfoly_plr_sn_xmike109_drop_quick_01", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_drop_quick.ogg", + } +}) +-- Sound: 26 +sound.Add({ + name = "wfoly_plr_sn_xmike109_inspect_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_inspect_up.ogg", + } +}) +-- Sound: 27 +sound.Add({ + name = "wfoly_plr_sn_xmike109_inspect_02", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_inspect_grabrotate.ogg", + } +}) +-- Sound: 28 +sound.Add({ + name = "wfoly_plr_sn_xmike109_inspect_03", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_inspect_move.ogg", + } +}) +-- Sound: 29 +sound.Add({ + name = "wfoly_plr_sn_xmike109_inspect_04", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_inspect_end.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sn_xmike109_raise_01", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_raise.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sn_xmike109_raise_first_01", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_first_raise_up.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sn_xmike109_raise_first_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_first_raise_bolt_pull.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sn_xmike109_raise_first_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_first_raise_bolt_release.ogg", + } +}) +-- Sound: 30 +sound.Add({ + name = "wfoly_plr_sn_xmike109_raise_first_04", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_first_raise_end.ogg", + } +}) +-- Sound: 31 +sound.Add({ + name = "wfoly_plr_sn_xmike109_raise_quick_01", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_raise_quick.ogg", + } +}) +-- Sound: 32 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_01", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_up.ogg", + } +}) +-- Sound: 33 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_02", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_magrelease.ogg", + } +}) +-- Sound: 34 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_03", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_magout.ogg", + } +}) +-- Sound: 35 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_04", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_arm.ogg", + } +}) +-- Sound: 36 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_05", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_magin_01.ogg", + } +}) +-- Sound: 37 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_055", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_magin_02.ogg", + } +}) +-- Sound: 38 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_06", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_end.ogg", + } +}) +-- Sound: 39 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_up.ogg", + } +}) +-- Sound: 40 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_magrelease.ogg", + } +}) +-- Sound: 41 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_magout.ogg", + } +}) +-- Sound: 42 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_arm.ogg", + } +}) +-- Sound: 43 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_magin_01.ogg", + } +}) +-- Sound: 44 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_055", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_magin_02.ogg", + } +}) +-- Sound: 45 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_rotate.ogg", + } +}) +-- Sound: 46 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_boltpull.ogg", + } +}) +-- Sound: 47 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_08", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_release.ogg", + } +}) +-- Sound: 48 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_09", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_end.ogg", + } +}) +-- Sound: 49 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_fast_01", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_fast_up.ogg", + } +}) +-- Sound: 50 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_fast_02", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_fast_magout.ogg", + } +}) +-- Sound: 51 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_fast_03", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_fast_arm.ogg", + } +}) +-- Sound: 52 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_fast_04", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_fast_magin_01.ogg", + } +}) +-- Sound: 53 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_fast_045", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_fast_magin_02.ogg", + } +}) +-- Sound: 54 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_fast_05", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_fast_grab.ogg", + } +}) +-- Sound: 55 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_fast_06", + channel = CHAN_WPNFOLEY + 10, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_fast_pullbolt.ogg", + } +}) +-- Sound: 56 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_fast_07", + channel = CHAN_WPNFOLEY + 1, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_fast_magrelease.ogg", + } +}) +-- Sound: 57 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_empty_fast_08", + channel = CHAN_WPNFOLEY + 2, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_empty_fast_end.ogg", + } +}) +-- Sound: 58 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_fast_01", + channel = CHAN_WPNFOLEY + 3, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_fast_up.ogg", + } +}) +-- Sound: 59 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_fast_02", + channel = CHAN_WPNFOLEY + 4, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_fast_magout.ogg", + } +}) +-- Sound: 60 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_fast_03", + channel = CHAN_WPNFOLEY + 5, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_fast_arm.ogg", + } +}) +-- Sound: 61 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_fast_04", + channel = CHAN_WPNFOLEY + 6, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_fast_magin_01.ogg", + } +}) +-- Sound: 62 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_fast_045", + channel = CHAN_WPNFOLEY + 7, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_fast_magin_02.ogg", + } +}) +-- Sound: 63 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_fast_05", + channel = CHAN_WPNFOLEY + 8, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_fast_shake.ogg", + } +}) +-- Sound: 64 +sound.Add({ + name = "wfoly_plr_sn_xmike109_reload_fast_06", + channel = CHAN_WPNFOLEY + 9, + + volume = 1, + pitch = {100,100}, + sound = { + "reloads/iw8_xmike109/wfoly_sn_xmike109_reload_fast_end.ogg", + } +}) diff --git a/lua/weapons/mg_base/shared.lua b/lua/weapons/mg_base/shared.lua new file mode 100644 index 0000000..bf6ee19 --- /dev/null +++ b/lua/weapons/mg_base/shared.lua @@ -0,0 +1,704 @@ +--ArachnitCZ is cool and awesome and perfect and epic and he beat me and ViperCZ +AddCSLuaFile() +require("mw_utils") + +function clearBaseClass(t) + t.BaseClass = nil + + for i, v in pairs(t) do + if (istable(v)) then + clearBaseClass(v) + end + end +end + +function SWEP:GetStoredAttachment(ind) + if (istable(ind)) then + PrintTable(ind) + error("Something went wrong when loading an attachment! Probably still using old customization method (read above for info).") + end + + if (MW_ATTS[ind] == nil) then + error("Attachment "..(ind != nil && ind || "none").." is missing!") + end + + return MW_ATTS[ind] +end + +function SWEP:GetBreathingSwayAngle() + local ang = self:GetBreathingAngle() + ang.p = math.NormalizeAngle(ang.p) + ang.y = math.NormalizeAngle(ang.y) + ang.r = math.NormalizeAngle(ang.r) + + if (IsValid(self:GetOwner())) then + ang:Mul(1 + math.min(self:GetOwner():GetVelocity():LengthSqr(), 300 * 300) * 0.0001 * (self.Zoom.MovementMultiplier || 1)) + end + + ang:Mul(self.Zoom.BreathingMultiplier || 1) + + return ang +end + +SWEP.Category = "MG" +SWEP.Spawnable = false +SWEP.AdminOnly = false +SWEP.PrintName = "Base Weapon" +SWEP.Base = "weapon_base" +SWEP.BounceWeaponIcon = false +-- SWEP.m_WeaponDeploySpeed = 12 --fastest it can be because Think freezes when weapon is drawing +SWEP.ViewModel = "models/weapons/c_arms.mdl" +SWEP.VModel = "models/weapons/v_357.mdl" + +SWEP.RenderGroup = RENDERGROUP_OPAQUE +SWEP.RenderMode = RENDERMODE_NORMAL + +SWEP.ViewModelFlip = false +SWEP.ViewModelFOV = 64 +SWEP.WorldModel = "models/weapons/w_357.mdl" +SWEP.AutoSwitchFrom = false +SWEP.AutoSwitchTo = false +SWEP.BobScale = 0 +SWEP.SwayScale = 0 +SWEP.DrawAmmo = true +SWEP.DrawCrosshair = false +SWEP.UseHands = false + +SWEP.Primary.DefaultClip = 0 + +SWEP.Secondary.ClipSize = -1 +SWEP.Secondary.DefaultClip = -1 +SWEP.Secondary.Ammo = -1 +SWEP.CrouchVector = Vector(-1, -1, -1) + +--modules: +-- shared +include("modules/shared/sh_think.lua") +include("modules/shared/sh_button_dispatcher.lua") +include("modules/shared/sh_sprint_behaviour.lua") +include("modules/shared/sh_safety_behavior.lua") +include("modules/shared/sh_bipod_behavior.lua") +include("modules/shared/sh_inspect_behavior.lua") +include("modules/shared/sh_datatables.lua") +include("modules/shared/sh_aim_behaviour.lua") +include("modules/shared/sh_aim_mode_behavior.lua") +include("modules/shared/sh_reload_behaviour.lua") +include("modules/shared/sh_trigger_behavior.lua") +include("modules/shared/sh_melee_behaviour.lua") +include("modules/shared/sh_firemode_behaviour.lua") +include("modules/shared/sh_primaryattack_behaviour.lua") +include("modules/shared/sh_holdtypes.lua") +include("modules/shared/sh_customization.lua") +include("modules/shared/sh_stats.lua") +-- client +include("modules/client/cl_calcview.lua") +include("modules/client/cl_worldmodel_render.lua") +include("modules/client/cl_hud.lua") +include("modules/client/cl_spawnmenu.lua") +include("modules/client/cl_new_customizemenu.lua") +-- reverb +include("modules/reverb/mw_reverb.lua") +include("modules/reverb/mw_reverbimpl.lua") + +--particles: +game.AddParticles("particles/ac_mw_handguns.pcf") +game.AddParticles("particles/mw_particles.pcf") +game.AddParticles("particles/mw19_attachments.pcf") +game.AddParticles("particles/mgbase_tracer.pcf") +game.AddParticles("particles/generic_explosions_pak.pcf") +game.AddParticles("particles/weapon_fx_mwb.pcf") + +PrecacheParticleSystem("mw_ins2_shell_eject") +PrecacheParticleSystem("mw_fas2_shocksmoke") + +PrecacheParticleSystem("mw_fas2_muzzleflash_ar") +PrecacheParticleSystem("mw_fas2_muzzleflash_pistol") +PrecacheParticleSystem("mw_fas2_muzzleflash_pistol_deagle") +PrecacheParticleSystem("mw_fas2_muzzleflash_dmr") +PrecacheParticleSystem("mw_fas2_muzzleflash_lmg") +PrecacheParticleSystem("mw_fas2_muzzleflash_shotgun") +PrecacheParticleSystem("mw_fas2_muzzleflash_slug") +PrecacheParticleSystem("mw_ins2_ins_weapon_rpg_frontblast") +PrecacheParticleSystem("mw_fas2_muzzleflash_suppressed") + +PrecacheParticleSystem("mw_doi_flamethrower") + +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("ac_muzzle_muzzlebreak") +PrecacheParticleSystem("ac_muzzle_flashhider") +PrecacheParticleSystem("ac_muzzle_compensator") +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol") +PrecacheParticleSystem("AC_muzzle_desert") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_desert_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") + +PrecacheParticleSystem("flashlight_mw19") +PrecacheParticleSystem("mw_envdust") +PrecacheParticleSystem("smoke_explosion_he") +PrecacheParticleSystem("Generic_explo_high") +PrecacheParticleSystem("mgbase_tracer") +PrecacheParticleSystem("mgbase_tracer_fast") +PrecacheParticleSystem("mgbase_tracer_slow") +PrecacheParticleSystem("mgbase_tracer_small") + +--game.AddParticles("particles/cstm_muzzleflashes.pcf") +--game.AddParticles("particles/realistic_muzzleflashes_1.pcf") +--game.AddParticles("particles/realistic_muzzleflashes_2.pcf") +CreateConVar("mgbase_sv_pvpdamage", "1", {FCVAR_ARCHIVE, FCVAR_REPLICATED}, "PvP damage multiplier", 0, 5) +CreateConVar("mgbase_sv_pvedamage", "1", {FCVAR_ARCHIVE, FCVAR_REPLICATED}, "PvE damage multiplier", 0, 5) +CreateConVar("mgbase_sv_recoil", "1", {FCVAR_ARCHIVE, FCVAR_REPLICATED}, "Recoil multiplier", 0, 5) +CreateConVar("mgbase_sv_range", "1", {FCVAR_ARCHIVE, FCVAR_REPLICATED}, "Range multiplier", 0, 10) +CreateConVar("mgbase_sv_accuracy", "1", {FCVAR_ARCHIVE, FCVAR_REPLICATED}, "Accuracy multiplier", 0.01, 5) +CreateConVar("mgbase_sv_customization", "1", {FCVAR_ARCHIVE, FCVAR_NOTIFY, FCVAR_REPLICATED}, "Allow gun customization.", 0, 1) +CreateConVar("mgbase_sv_customization_limit", "0", {FCVAR_ARCHIVE, FCVAR_NOTIFY, FCVAR_REPLICATED}, "Attachments limit.", 0) +CreateConVar("mgbase_sv_aimassist", "1", {FCVAR_ARCHIVE, FCVAR_REPLICATED}, "Attachments limit.", 0, 1) +CreateConVar("mgbase_sv_breathing", "1", {FCVAR_ARCHIVE, FCVAR_REPLICATED}, "Scope breathing.", 0, 1) +CreateConVar("mgbase_sv_full_penetration", "0", {FCVAR_ARCHIVE, FCVAR_REPLICATED}, "Enables a more detailed penetration model.", 0, 1) +CreateConVar("mgbase_sv_firstdraws", "1", {FCVAR_ARCHIVE, FCVAR_REPLICATED}, "Enables first draws.", 0, 1) +CreateConVar("mgbase_sv_sprintreloads", "0", {FCVAR_ARCHIVE, FCVAR_REPLICATED}, "Enables sprint reloads.", 0, 1) +CreateConVar("mgbase_sv_shootreloads", "0", {FCVAR_ARCHIVE, FCVAR_REPLICATED}, "Enables shoot reloads.", 0, 1) +CreateConVar("mgbase_debug_reverb", "0", FCVAR_REPLICATED, "Show reverb.", 0, 1) +CreateConVar("mgbase_debug_range", "0", FCVAR_REPLICATED, "Show range at hit location.", 0, 1) +CreateConVar("mgbase_debug_projectiles", "0", FCVAR_REPLICATED, "Show projectiles info.", 0, 1) +CreateConVar("mgbase_debug_mag", "0", FCVAR_REPLICATED, "Forces mag to 1.", 0, 1) + +function SWEP:CanAttackInterruptReload() + return GetConVar("mgbase_sv_shootreloads"):GetInt() > 0 && self:Clip1() > 0 && !self:HasFlag("MagInserted") +end + +function SWEP:MakeEnvironmentDust(radius) + --simple func for snipers + radius = radius || 150 + + if (!IsValid(self:GetOwner()) || !self:GetOwner():IsOnGround()) then + return + end + + local bInWater = self:GetOwner():WaterLevel() > 0 + + if (IsFirstTimePredicted()) then + local data = EffectData() + data:SetEntity(self:GetOwner()) + data:SetScale(bInWater && radius * 0.15 || radius) + data:SetOrigin(bInWater && self:GetOwner():EyePos() || self:GetOwner():GetPos()) + + util.Effect(bInWater && "waterripple" || "ThumperDust", data) + end +end + +function SWEP:PostAttachment(attachment) + --do stuff on the gun +end + +function SWEP:CreateAttachmentEntity(attachmentClass) + if (CLIENT) then + return + end + + local att = ents.Create("mg_attachment") + att:SetOwner(self) + att:SetIndex(1) + for slot, atts in pairs(self.Customization) do + for ind, attachmentCls in pairs(atts) do + if (attachmentClass == attachmentCls) then + att:SetSlot(slot) + att:SetIndex(ind) + break + end + end + end + + att:Spawn() + att:SetPos(self:GetPos()) + att:SetParent(self) + + self:DeleteOnRemove(att) +end + +function SWEP:RemoveAttachment(att) + if (att != nil) then --it could be nil if we are customizing for the first time (just spawned) + att:OnRemove(self) + att = nil + end +end + +function SWEP:CreateAttachmentForUse(attachmentClass, custTable) + custTable = custTable || self.Customization + + if (MW_ATTS[attachmentClass] == nil) then + return + end + + local slot = nil + + for s, atts in pairs(custTable) do + if (table.HasValue(atts, attachmentClass)) then --kinda slow whatever + slot = s + break + end + end + + if (slot == nil) then + return + end + + local oldAtt = self:GetAttachmentInUseForSlot(slot) + + if (oldAtt != nil && oldAtt.ClassName == attachmentClass) then + return + end + + self:RemoveAttachment(oldAtt) + + --reload the attachment for developer + mw_utils.ReloadAttachment(attachmentClass) + + local att = table.Copy(self:GetStoredAttachment(attachmentClass)) + att.Slot = slot + att.Index = 1 + + for ind, attClass in pairs(custTable[slot]) do + if (attClass == att.ClassName) then + att.Index = ind + end + end + + self.m_CustomizationInUse[slot] = att + att:Init(self) + return att +end + +--this is for bullets in mag +function SWEP:AttachmentFunction(funcname) + for slot, attachment in pairs(self:GetAllAttachmentsInUse()) do + if (attachment[funcname] && isfunction(attachment[funcname])) then + attachment[funcname](attachment, self) + end + end +end + +function SWEP:Initialize() + if (SERVER) then + local vm = ents.Create("mg_viewmodel") + vm:SetParent(self) + vm:SetOwner(self) + vm:Spawn() + vm:SetPos(self:GetPos()) + vm:SetModel(self.VModel) + self:DeleteOnRemove(vm) + self:SetViewModel(vm) + end + + self:SetModel(self.WorldModel) + self.m_bInitialized = true + self.m_hybridSwitchThreshold = 0.4 + + self:AddFlag("PlayFirstDraw") + self:RemoveFlag("Holstering") + self:SetNextHolsterTime(0) + self:SetBreathingDelta(1) + self:AddFlag("Rechambered") + self:AddFlag("MagInserted") + self:SetHasRunOutOfBreath(false) + + if CLIENT then + self.Camera = { + Shake = 0, + Fov = 0, + LerpReloadFov = 0, + LerpReloadBlur = 0, + LerpCustomization = 0, + LerpBreathing = Angle(0, 0, 0), + SprayEffect = 0 + } + + self.CantedReloadDisableDelta = 1 + self.m_AimModeDeltaLerp = Vector(0, 0, 0) + self.m_AimModeDeltaVelocity = Vector(0, 0, 0) + self.MouseX = ScrW() * 0.5 + self.MouseY = ScrH() * 0.5 + + self.ViewModelMouseX = ScrW() * 0.5 + self.ViewModelMouseY = ScrH() * 0.5 + self.m_bHasLoadedPreset = false + end + + self.LastReverbState = true + self.ValuesToRemove = {} + self.StatBreadcrumbs = {} + + self:SetFiremode(1) + + if (self.Customization != nil) then + self.m_CustomizationInUse = {} + + --create objects + for slot, atts in pairs(self.Customization) do + self:CreateAttachmentForUse(atts[1]) + end + --there's no need to create entities in this stage + + self:BuildCustomizedGun() + end + + self:SetClip1(self:GetMaxClip1WithChamber()) +end + +function SWEP:LoadSpawnPreset() + if (SERVER || (!IsFirstTimePredicted() && !game.SinglePlayer())) then + return + end + + if (self.m_bHasLoadedPreset) then + return + end + + local method = math.Clamp(GetConVar("mgbase_presetspawnmethod"):GetInt(), 0, 3) + + if (method > 0) then + local presets = mw_utils.GetPresetsForSWEP(self:GetClass()) + + if (#presets > 0) then + if (method == 1) then --random + mw_utils.LoadPreset(self, presets[math.random(1, #presets)]) + elseif (method == 2) then --random curated + local toRemove = {} + + for i, preset in pairs(presets) do + if (preset._bUserGenerated) then + table.insert(toRemove, preset) + end + end + + for _, preset in pairs(toRemove) do + table.RemoveByValue(presets, preset) + end + + if (#presets > 0) then + mw_utils.LoadPreset(self, presets[math.random(1, #presets)]) + end + elseif (method == 3) then --random fav + local toRemove = {} + + for i, preset in pairs(presets) do + if (!mw_utils.IsAssetFavorite(self:GetClass(), preset.ClassName)) then + table.insert(toRemove, preset) + end + end + + for _, preset in pairs(toRemove) do + table.RemoveByValue(presets, preset) + end + + if (#presets > 0) then + mw_utils.LoadPreset(self, presets[math.random(1, #presets)]) + end + end + end + end + + self.m_bHasLoadedPreset = true +end + +function SWEP:SecondaryAttack() +end + +function SWEP:OnDrop() + self:AddFlag("PlayFirstDraw") +end + +function SWEP:GetCurrentHoldType() + if (self:HasFlag("BipodDeployed")) then + return "Bipod" + end + + return self.HoldType +end + +function SWEP:Deploy() + local seqIndex = "Draw" + + if (self:HasFlag("PlayFirstDraw") && self:GetAnimation("Equip") != nil && GetConVar("mgbase_sv_firstdraws"):GetInt() > 0) then + seqIndex = "Equip" + end + + self:RemoveFlag("Holstering") + self:AddFlag("Drawing") + self:PlayViewModelAnimation(seqIndex) + self:SetNextActionTime(CurTime() + self:GetAnimLength(seqIndex)) + self:SetBurstRounds(0) + + if (self:GetFlashlightAttachment() != nil) then + local bFlashlightOn = self:GetOwner():FlashlightIsOn() + + if (SERVER) then + self:GetOwner():Flashlight(false) + end + + if (bFlashlightOn) then + self:AddFlag("FlashlightOn") + else + self:RemoveFlag("FlashlightOn") + end + end + + self:SetToggleAim(false) + + self:PlayerGesture(GESTURE_SLOT_CUSTOM, self.HoldTypes[self:GetCurrentHoldType()].Draw) + + self:SetBreathingDelta(1) + self:SetHasRunOutOfBreath(false) + self:RemoveFlag("Lowered") + self:SetNextInspectTime(0) + + if SERVER then self:GetOwner():SetSaveValue("m_flNextAttack", 0) end + + --meme marine + self:SetShouldHoldType(true) + + return true +end + +function SWEP:Holster(weapon) + if (!self:HasFlag("Holstering")) then + self:PlayViewModelAnimation("Holster") + self:AddFlag("Holstering") + self:RemoveFlag("Reloading") + self:SetBurstRounds(0) + self:SetNextHolsterTime(CurTime() + self:GetAnimLength("Holster")) + self:RemoveFlag("Lowered") + self:SetNextInspectTime(0) + end + + self:SetNextWeapon(weapon) + self:StopCustomizing() + + self:SetToggleAim(false) + + if (IsValid(self:GetOwner()) && self:GetOwner():GetMoveType() == MOVETYPE_LADDER) then --ttt calls holster when dropping (but no owner) + return false + end + + return CurTime() >= self:GetNextHolsterTime() || self:HasFlag("Drawing") || !IsValid(weapon) +end + +function SWEP:PreAttachments() + --do stuff +end + +function SWEP:OnRestore() + self.m_LastRestored = CurTime() + self:SetNextReloadTime(0) + self:SetNextPrimaryFire(0) + self:SetNextSprintTime(0) + self:SetNextMagTime(0) + self:SetAimDelta(0) + self:SetAimModeDelta(0) + self:SetNextInspectTime(0) + self:SetNextFiremodeTime(0) + self:SetNextMeleeTime(0) + self:SetTriggerDelta(0) + self:AddFlag("MagInserted") + self:RemoveFlag("PlayFirstDraw") + self:RemoveFlag("Reloading") + self:RemoveFlag("Holstering") + self:RemoveFlag("Aiming") + self:RemoveFlag("Sprinting") + self:RemoveFlag("HoldingTrigger") + self:RemoveFlag("Customizing") + self:SetToggleAim(false) + self:RemoveFlag("Lowered") + self:SetNextInspectTime(0) + self:SetNextWeapon(NULL) + self:SetSprayRounds(0) + self:SetBurstRounds(0) + self:SetPenetrationCount(0) + self:SetNextActionTime(0) +end + +local function removeChildren(ent) + for _, c in pairs(ent:GetChildren()) do + removeChildren(c) + end + + ent:Remove() +end + +function SWEP:OnRemove() + if (CLIENT) then + for _, att in pairs(self:GetAllAttachmentsInUse()) do + if (att.OnRemove) then + att:OnRemove(self) + end + end + end + + for _, c in pairs(self:GetChildren()) do + removeChildren(c) + end +end + +function SWEP:PlayViewModelAnimation(seqIndex) + if (!IsFirstTimePredicted() && !game.SinglePlayer()) then + return + end + + self:GetViewModel():PlayAnimation(seqIndex) +end + +function SWEP:GetAnimLength(seqIndex, length) + local seq = self:GetAnimation(seqIndex) + + if (seq == nil) then + error(seqIndex.." does not exist on the weapon's animation list!") + end + + length = length || seq.Length + + local pb = seq.Fps / 30 + return length / pb +end + +function SWEP:GetAnimation(seqIndex) + for index, seq in pairs(self.Animations) do + if (string.lower(index) == string.lower(seqIndex)) then + return seq + end + end + return nil +end + +function SWEP:PlayerGesture(slot, anim) + if (CLIENT && IsFirstTimePredicted()) then + self:GetOwner():AnimRestartGesture(slot, anim, true) + end + + if SERVER then + net.Start("mgbase_tpanim", true) + net.WriteUInt(slot, 2) + net.WriteInt(anim, 12) + net.WriteEntity(self:GetOwner()) + if (game.SinglePlayer()) then + net.Send(self:GetOwner()) + else + net.SendOmit(self:GetOwner()) + end + end +end + +function SWEP:OnReloaded() + if (self.Customization != nil) then + self:BuildCustomizedGun() + else + if (self.Firemodes != nil) then + self:ApplyFiremode(self:GetFiremode()) + end + end + + --self:SetAimMode(1) +end + + + +function SWEP:DeepObjectCopy(defaults, tbl) + --self:SetHoldType("duel") --setting something people wont normally use + + --defaults = weapons.get(class) + --tbl = {} + for i, v in pairs(defaults) do + if (!istable(v) && !isvector(v) && !isangle(v)) then + tbl[i] = v + elseif (isvector(v)) then + --if (tbl[i] == nil) then + tbl[i] = Vector(0, 0, 0) + --end + + tbl[i]:Set(v) + elseif (isangle(v)) then + -- if (tbl[i] == nil) then + tbl[i] = Angle(0, 0, 0) + --end + + tbl[i].p = v.p + tbl[i].y = v.y + tbl[i].r = v.r + else + if (tbl[i] == nil) then + tbl[i] = {} + end + + self:DeepObjectCopy(v, tbl[i]) + end + end +end + +--meme marine +local LastHoldType = nil + +function SWEP:SetShouldHoldType(force) + if (!IsValid(self:GetOwner())) then + return + end + + local ht = "Idle" + if (self:HasFlag("Aiming")) then + ht = "Aim" + elseif (self:HasFlag("Sprinting") || self:HasFlag("Holstering") || self:HasFlag("Lowered")) then + ht = "Down" + end + + local fullht = "fist" + + local crouching = self:GetOwner():IsFlagSet(4) + -- self:SetHoldType(crouching && self.HoldTypes[self:GetCurrentHoldType()][ht].Crouching || self.HoldTypes[self:GetCurrentHoldType()][ht].Standing) + + if crouching then + fullht = self.HoldTypes[self:GetCurrentHoldType()][ht].Crouching + else + fullht = self.HoldTypes[self:GetCurrentHoldType()][ht].Standing + end + + if LastHoldType != fullht || force then + self:SetHoldType(fullht) + end + + LastHoldType = fullht +end + + +--ttt support + +SWEP.IsSuppresed = false +SWEP.IsEquipment = false + +function SWEP:DampenDrop() + -- For some reason gmod drops guns on death at a speed of 400 units, which + -- catapults them away from the body. Here we want people to actually be able + -- to find a given corpse's weapon, so we override the velocity here and call + -- this when dropping guns on death. + local phys = self:GetPhysicsObject() + if IsValid(phys) then + phys:SetVelocityInstantaneous(Vector(0,0,-75) + phys:GetVelocity() * 0.001) + phys:AddAngleVelocity(phys:GetAngleVelocity() * -0.99) + end +end + +function SWEP:IsEquipment() + return self.IsEquipment +end + +function SWEP:GetHeadshotMultiplier(victim, dmginfo) + return self.Bullet.HeadshotMultiplier || 2 +end + +hook.Add("PlayerButtonDown", "MW19_PlayerButtonDown", function(p, button) + local w = p:GetActiveWeapon() + if (IsValid(w) && w.HandleButton != nil) then + w:HandleButton(button) + end +end) \ No newline at end of file diff --git a/lua/weapons/mg_beta/animations.lua b/lua/weapons/mg_beta/animations.lua new file mode 100644 index 0000000..8adf352 --- /dev/null +++ b/lua/weapons/mg_beta/animations.lua @@ -0,0 +1,366 @@ +AddCSLuaFile() + + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.45, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.beta.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.6, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.beta.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.9, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_raise_first_01")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_raise_first_02")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_raise_first_03")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.26, + Fps = 30, + MagLength = 1.7, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_045")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_05")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_04")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_02")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_01")) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.63, + Fps = 30, + MagLength = 1.16, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_02")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_05")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_04")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_045")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_03")) end}, + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.26, + Fps = 30, + MagLength = 1.66, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) self:DisableGrip(true) end}, + {Time = 2, Callback = function(self) --[[self:EnableGrip()]] end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_xmag_055")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_xmag_04")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_xmag_05")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_xmag_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_xmag_01")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_xmag_02")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_xmag_03")) end}, + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_fast_xmag"}, + Length = 1.66, + Fps = 30, + MagLength = 1.16, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.7, Callback = function(self) self:EnableGrip() end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_xmag_045")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_xmag_04")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_xmag_05")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_xmag_02")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_xmag_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_fast_xmag_01")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.86, + Fps = 30, + MagLength = 1.66, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_045")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_03")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_01")) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_06")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_05")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_04")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.13, + Fps = 30, + MagLength = 1.16, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_fast_045")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_fast_01")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_fast_03")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_fast_02")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_fast_05")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_fast_04")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_fast_06")) end}, + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 2.86, + Fps = 30, + MagLength = 1.66, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_xmag_045")) end}, + {Time = 2.4, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_xmag_01")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_xmag_02")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_xmag_03")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_xmag_04")) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_xmag_05")) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_reload_empty_xmag_06")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.beta.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.beta.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 39, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.beta.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.beta.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_inspect_01")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_inspect_03")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_inspect_02")) end}, + {Time = 4.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_inspect_05")) end}, + {Time = 3.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_beta_inspect_04")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_beta/customization.lua b/lua/weapons/mg_beta/customization.lua new file mode 100644 index 0000000..45a705c --- /dev/null +++ b/lua/weapons/mg_beta/customization.lua @@ -0,0 +1,846 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_beta_sup_fire_plr_lfe") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +-- local function doCalConversionStats(self) +-- local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") +-- local bSup2 = self:HasAttachment("attachment_vm_silencer02") +-- local bSup3 = self:HasAttachment("attachment_vm_silencer03") +-- local bSup4 = self:HasAttachment("attachment_vm_silencer04") +-- local bSup5 = self:HasAttachment("attachment_vm_sm_uzulu_suppressor") + +-- if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5) then +-- self.Primary.Sound = Sound("mw19.uzulu.fire.9mm") +-- end + +-- self.Shell.Model = Model("models/viper/mw/shells/fx_pistol_shell_lod0.mdl") +-- self.Shell.Scale = 0.5 +-- self.Shell.Sound = Sound("MW_Casings.9mm") +-- end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sm_beta_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_rof"}, + + {"att_receiver"}, + + {"attachment_vm_sm_beta_stock", "attachment_vm_sm_beta_stockmrkt", "attachment_vm_sm_augolf_stock_v2", + "att_vm_stock_heavy01", "att_vm_stock_heavy02", + "att_vm_stock_light01", "att_vm_stock_medium01", + "att_vm_stock_no"}, + + {"attachment_vm_sm_beta_mag", "attachment_vm_sm_beta_xmags"}, + + {"attachment_vm_sm_beta_barrel", "attachment_vm_sm_beta_barshort", + "attachment_vm_sm_beta_barmid", "attachment_vm_sm_beta_barlong"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04"}, + + {"att_laser", "attachment_vm_sm_beta_laser01", "attachment_vm_sm_beta_laser02", + "attachment_vm_sm_beta_laser03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "no_attachment", +-- }, +-- { +-- Key = "attachment_vm_sm_beta_barlong", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_beta_barmid", +-- Bodygroups = { +-- ["tag_tip"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_beta_barshort", +-- Bodygroups = { +-- ["tag_tip"] = 6 +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.8) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.01, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.8) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.035, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.034, 0.018, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.02, 1.5, -0.885) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.034, 0.018, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -1.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.035, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.15, 0.017, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.1, 2, -1.21) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.007, 0, -1.315) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.012, 0, -1.205) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 2, -1.14) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0075, 1, -0.72) +-- self.HybridAimAngles = Angle(-0.02, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 5, -0.2) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0075, 1.75, -0.7) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 5, -1.09) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 5, -1.025) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.001, 3, -0.85) +-- self.HybridAimAngles = Angle(-0.02, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-2) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0075, 1.5, -0.78) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0.015, -45) +-- self.HybridAimPos = Vector(-1.55, 5, 0.015) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, 1.6, 0), Angle()}, +-- [4] = {Vector(0, 1.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sm_beta_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_beta_stockmrkt", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["tag_stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["tag_stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_sm_beta_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_beta_xmags", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_xmag_offset") +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_beta/shared.lua b/lua/weapons/mg_beta/shared.lua new file mode 100644 index 0000000..cd281bf --- /dev/null +++ b/lua/weapons/mg_beta/shared.lua @@ -0,0 +1,169 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_beta", "VGUI/entities/mg_beta", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sm_beta") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_xmag_offset"} + +SWEP.PrintName = "PP19 Bizon" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Submachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_beta.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_beta.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("weap_beta_fire_first_plr"), + ReleasedSound = Sound("weap_beta_disconnector_plr"), + Time = 0.015 +} + +SWEP.Primary.Sound = Sound("weap_beta_fire_plr_lfe") +SWEP.Primary.Ammo = "SMG1" +SWEP.Primary.ClipSize = 64 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 659 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.1, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.032, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.09, --multiply the increase value by this amount while aiming + Max = 1.15, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6215 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.4, 0.5}, --random value between the 2 + Horizontal = {-0.3, 0.5}, --random value between the 2 + Shake = 0.95, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 77777 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {19, 11}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 35, --in meters, damage scales within this distance + DropOffStartRange = 10, --in meters, damage will start dropping off after this range + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.5, --how much damaged is multipled by when leaving a surface. + MaxCount = 2, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,100,-90), + Pos = Vector(3,-2.5,-2) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(-5, 0, 0), Angles = Angle(40, 0, 0)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(0, 0, 1.5), Angles = Angle(10, 0, 0)} + } + }, + + RecoilMultiplier = 0.25, + KickMultiplier = 0.2, + AimKickMultiplier = 0.75 +} + +SWEP.Shell = "mwb_shelleject_9mm" + +DEFINE_BASECLASS("mg_base") \ No newline at end of file diff --git a/lua/weapons/mg_charlie725/animations.lua b/lua/weapons/mg_charlie725/animations.lua new file mode 100644 index 0000000..6eb9721 --- /dev/null +++ b/lua/weapons/mg_charlie725/animations.lua @@ -0,0 +1,495 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.charlie725.raise")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.925, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.charlie725.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_raise_first_03")) end}, + {Time = 0.733, Callback = function(self) self:EnableGrip() end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_raise_first_02")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_raise_first_01")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.45, + Fps = 30, + MagLength = 1.35, + NextSequence = "Idle", + Events = { + { + Time = 0.25, + Callback = function(self) + if (self.bShowShell1) then + self:DoParticle("Overheating", "shell_eject1") + end + self.bShowShell1 = false + end + }, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 90, 0)) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_02")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_06")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_04")) end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_05")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_01")) end}, + {Time = 2.233, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["reload_scope"] = { + Sequences = {"reload_scope"}, + Length = 2.45, + Fps = 30, + MagLength = 1.35, + NextSequence = "Idle", + Events = { + { + Time = 0.25, + Callback = function(self) + if (self.bShowShell1) then + self:DoParticle("Overheating", "shell_eject1") + end + self.bShowShell1 = false + end + }, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 90, 0)) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_02")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_06")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_04")) end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_05")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_01")) end}, + {Time = 2.233, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.75, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + { + Time = 0.25, + Callback = function(self) + if (self.bShowShell1) then + self:DoParticle("Overheating", "shell_eject1") + end + self.bShowShell1 = false + end + }, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 20, 0)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.367, Callback = function(self) self:EnableGrip() end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_02")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_03")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_01")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_06")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_04")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_05")) end}, + } + }, + + ["reload_scope_fast"] = { + Sequences = {"reload_scope_fast"}, + Length = 1.75, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + { + Time = 0.25, + Callback = function(self) + if (self.bShowShell1) then + self:DoParticle("Overheating", "shell_eject1") + end + self.bShowShell1 = false + end + }, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 20, 0)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.367, Callback = function(self) self:EnableGrip() end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_02")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_03")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_01")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_06")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_04")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_fast_05")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.7, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + { + Time = 0.25, + Callback = function(self) + if (self.bShowShell1) then + self:DoParticle("Overheating", "shell_eject1") + end + self.bShowShell1 = false + end + }, + { + Time = 0.35, + Callback = function(self) + if (self.bShowShell2) then + self:DoParticle("Overheating", "shell_eject2") + end + self.bShowShell2 = false + end + }, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 90, 0)) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 90, 0)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_045")) end}, + {Time = 2.367, Callback = function(self) self:EnableGrip() end}, + {Time = 2.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_06")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_04")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_05")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_01")) end}, + } + }, + + ["reload_empty_scope"] = { + Sequences = {"reload_empty_scope"}, + Length = 2.7, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + { + Time = 0.25, + Callback = function(self) + if (self.bShowShell1) then + self:DoParticle("Overheating", "shell_eject1") + end + self.bShowShell1 = false + end + }, + { + Time = 0.35, + Callback = function(self) + if (self.bShowShell2) then + self:DoParticle("Overheating", "shell_eject2") + end + self.bShowShell2 = false + end + }, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 90, 0)) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 90, 0)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_045")) end}, + {Time = 2.367, Callback = function(self) self:EnableGrip() end}, + {Time = 2.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_06")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_04")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_05")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_01")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + { + Time = 0.15, + Callback = function(self) + if (self.bShowShell1) then + self:DoParticle("Overheating", "shell_eject1") + end + self.bShowShell1 = false + end + }, + { + Time = 0.25, + Callback = function(self) + if (self.bShowShell2) then + self:DoParticle("Overheating", "shell_eject2") + end + self.bShowShell2 = false + end + }, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 90, 0)) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 90, 0)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.433, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_02")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_01")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_06")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_04")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_05")) end}, + } + }, + + ["reload_empty_scope_fast"] = { + Sequences = {"reload_empty_scope_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + { + Time = 0.15, + Callback = function(self) + if (self.bShowShell1) then + self:DoParticle("Overheating", "shell_eject1") + end + self.bShowShell1 = false + end + }, + { + Time = 0.25, + Callback = function(self) + if (self.bShowShell2) then + self:DoParticle("Overheating", "shell_eject2") + end + self.bShowShell2 = false + end + }, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 90, 0)) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_Casings.Shotgun"), Vector(35, 90, 0)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.433, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_02")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_01")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_06")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_04")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_reload_empty_fast_05")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.charlie725.ads.up")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.charlie725.ads.down")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} , + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_inspect_04")) end}, + {Time = 4.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_inspect_05")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_inspect_02")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_inspect_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_inspect_01")) end}, + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 4.467, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["inspect_scope"] = { + Sequences = {"inspect_scope"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_inspect_04")) end}, + {Time = 4.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_inspect_05")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_inspect_02")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_inspect_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_charlie725_inspect_01")) end}, + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 4.467, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_charlie725/customization.lua b/lua/weapons/mg_charlie725/customization.lua new file mode 100644 index 0000000..ff4a4e6 --- /dev/null +++ b/lua/weapons/mg_charlie725/customization.lua @@ -0,0 +1,827 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.charlie725.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Shotgun2.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Reflection_ARSUP.Inside"), + Reflection = Sound("Reflection_ShotgunSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +end + +function SWEP:doDBStats() + self.Primary.TrailingSound = Sound("wpn_shotgun_fire_lyr") + self.ParticleEffects.MuzzleFlash = "AC_muzzle_shotgun_db" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sh_charlie725_perk_soh", "att_perk_hip"}, + + {"att_receiver"}, + + {"attachment_vm_sh_charlie725_barrel", "attachment_vm_sh_charlie725_barrel_sawnoff", "attachment_vm_sh_charlie725_barrel_mid", + "attachment_vm_sh_charlie725_barrel_long"}, + + {"attachment_vm_sh_charlie725_guard", "attachment_vm_sh_charlie725_forendtactical", "attachment_vm_sh_charlie725_forendstable", + "attachment_vm_sh_charlie725_foreendlight"}, + + {"att_ammo_default", "att_ammo_db", "att_ammo_flechette", + "att_ammo_he", "att_ammo_slugs"}, + + {"attachment_vm_sh_charlie725_stock", "attachment_vm_sh_charlie725_stock_sawnoff", "attachment_vm_sh_charlie725_stocklight", + "attachment_vm_sh_charlie725_stockstable","attachment_vm_sh_charlie725_stocktactical"}, + + {"att_muzzle", "attachment_vm_sh_charlie725_comp", "attachment_vm_sh_charlie725_flashhider", "attachment_vm_sh_charlie725_muzzlebrake", + "attachment_vm_sh_charlie725_muzzlemelee", "attachment_vm_sh_charlie725_silencer01", "attachment_vm_sh_charlie725_silencer02", + "attachment_vm_sh_charlie725_silencer03"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_reflex_west04", "att_vm_charlie725_2x_west01", + "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_charlie725_scope_mike14", "att_vm_charlie725_scope_vz", "attachment_vm_sn_charlie725_scope"}, + + {"att_laser", "attachment_vm_sh_charlie725_laser01", "attachment_vm_sh_charlie725_laser02", "attachment_vm_sh_charlie725_laser03"}, + + {"att_grip", "attachment_vm_sh_charlie725_angledgrip01", "attachment_vm_sh_charlie725_angledgrip02", "attachment_vm_sh_charlie725_stubbygrip01", + "attachment_vm_sh_charlie725_stubbygrip02", "attachment_vm_sh_charlie725_vertgrip01", "attachment_vm_sh_charlie725_vertgrip02", + "attachment_vm_sh_charlie725_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.reload_scope = self.Animations.reload_scope_fast +-- self.Animations.reload_empty_scope = self.Animations.reload_empty_scope_fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- --[[{ +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- }]] +-- }, + +-- ["Ammo"] = { +-- Slot = 2, +-- { +-- Key = "no_perk", +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- self.Projectile = nil +-- end, +-- }, +-- { +-- Key = "sh_slugs", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- { +-- Key = "sh_db", +-- Stats = function(self) +-- doDBStats(self) +-- end +-- }, +-- { +-- Key = "sh_flechette", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- { +-- Key = "sh_he", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- }, + +-- ["Barrel"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_sh_charlie725_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_barrel_long", +-- -- Bodygroups = { +-- -- ["tag_tip"] = 2, +-- -- ["tag_sight_barrel"] = 1, +-- -- ["tag_barrel_hide"] = 1, +-- -- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_barrel_mid", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_barrel_sawnoff", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Guard"] = { +-- Slot = 4, +-- { +-- Key = "attachment_vm_sh_charlie725_guard", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_foreendlight", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_forendstable", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_forendtactical", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 5, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_choke", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.2, 0), Angle()}, +-- [3] = {Vector(0, -3.4, 0), Angle()}, +-- [4] = {Vector(0, -14.65, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_comp", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.2, 0), Angle()}, +-- [3] = {Vector(0, -3.4, 0), Angle()}, +-- [4] = {Vector(0, -14.65, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_muzzlebrake", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.2, 0), Angle()}, +-- [3] = {Vector(0, -3.4, 0), Angle()}, +-- [4] = {Vector(0, -14.65, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_muzzlemelee", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.2, 0), Angle()}, +-- [3] = {Vector(0, -3.4, 0), Angle()}, +-- [4] = {Vector(0, -14.65, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_flashhider", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.2, 0), Angle()}, +-- [3] = {Vector(0, -3.4, 0), Angle()}, +-- [4] = {Vector(0, -14.65, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_silencer01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.2, 0), Angle()}, +-- [3] = {Vector(0, -3.4, 0), Angle()}, +-- [4] = {Vector(0, -14.65, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_silencer03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.2, 0), Angle()}, +-- [3] = {Vector(0, -3.4, 0), Angle()}, +-- [4] = {Vector(0, -14.65, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_silencer02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.2, 0), Angle()}, +-- [3] = {Vector(0, -3.4, 0), Angle()}, +-- [4] = {Vector(0, -14.65, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 6, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0, 0) --i know you tell me not to fuck with this but the dot being actually centered on the glass demands it xoxo +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.92) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.03, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.93) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.03, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -1.12) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.045, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.004, 0, -0.95) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.046, 0.07, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.045, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.04, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.115, 0, -1.27) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.3715) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.022, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.264) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.018, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.201) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.006, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.7735) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.0065, 0) +-- self.HybridAimAngles = Angle(-0.04, 0.02, -45) +-- self.HybridAimPos = Vector(-1.78, 0, -0.32) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.753) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.014, 0) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.reload_scope +-- self.Animations.Reload_Empty = self.Animations.reload_empty_scope +-- self.Animations.Inspect = self.Animations.inspect_scope +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3.5, -1.178) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.028, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.reload_scope +-- self.Animations.Reload_Empty = self.Animations.reload_empty_scope +-- self.Animations.Inspect = self.Animations.inspect_scope +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3.5, -1.109) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.017, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.91) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.01, 0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-2.15) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -0.84) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, -0.012, 0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(-0.04, 0.02, -45) +-- self.HybridAimPos = Vector(-1.6, 0, -0.08) +-- end +-- }, +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sh_charlie725_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_stock_sawnoff", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_stocklight", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_stockstable", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_charlie725_stocktactical", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 8, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 9, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_charlie725/shared.lua b/lua/weapons/mg_charlie725/shared.lua new file mode 100644 index 0000000..4be5e3f --- /dev/null +++ b/lua/weapons/mg_charlie725/shared.lua @@ -0,0 +1,211 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_charlie725", "VGUI/entities/mg_charlie725", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sh_charlie725") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "725" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Shotguns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_charlie725.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_charlie725.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_sh_charlie725_fire_first_plr"), + ReleasedSound = Sound("weap_sh_charlie725_disconnector_plr"), + Time = 0.025 +} + +SWEP.Slot = 3 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("mw19.charlie725.fire") +SWEP.Primary.Ammo = "Buckshot" +SWEP.Primary.ClipSize = 2 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 560 +SWEP.CanChamberRound = false +SWEP.CanDisableAimReload = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_shotgun", + ["MuzzleFlash_DB"] = "mw_fas2_muzzleflash_slug", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", + ["Overheating"] = "AC_muzzle_pistol_smoke_barrel", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper.Outside"), + Reflection = Sound("Reflection_Shotgun.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Sniper.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Break-Action", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.5, --accuracy while hip + Ads = 0.5, --accuracy while aiming + Increase = 0.085, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.7, --the cone size will not go beyond this size + Decrease = 0.24, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 9879 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {8, 7}, --random value between the 2 + Horizontal = {-1.75, 2.75}, --random value between the 2 + Shake = 4, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 79852, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1.75 +} +SWEP.Bullet = { + Damage = {132, 51}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 20, --in meters, damage scales within this distance + DropOffStartRange = 20, + Range = 40, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 6, --the amount of bullets to fire + PhysicsMultiplier = 1.7, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.97, --how much damaged is multipled by when leaving a surface. + MaxCount = 0, --how many times the bullet can penetrate. + Thickness = 16, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 15 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,100,-90), + Pos = Vector(7,-2,-9) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 5, + KickMultiplier = 1, + AimKickMultiplier = 0.45 +} + +SWEP.Shell = "mwb_shelleject_12g" + +DEFINE_BASECLASS("mg_base") + +-- SWEP.bShowShell1 = true +-- SWEP.bShowShell2 = true + +-- function SWEP:Reload(fromFallback) +-- local bWasReloading = self:HasFlag("Reloading") +-- BaseClass.Reload(self, fromFallback) + +-- if ((SERVER && !game.SinglePlayer()) || !IsFirstTimePredicted()) then +-- return +-- end + +-- if (self:HasFlag("Reloading") && !bWasReloading) then +-- self:ShellRemove() +-- end +-- end + +-- local normal = Vector(1, 1, 1) +-- local tiny = Vector(0.001, 0.001, 0.001) + +-- function SWEP:ShellRemove() +-- if (CLIENT) then +-- local shell1 = self:LookupBoneCached(self.m_ViewModel, "j_shell1_fired") +-- local shell2 = self:LookupBoneCached(self.m_ViewModel, "j_shell2_fired") + +-- self.m_ViewModel:ManipulateBoneScale(shell1, self.bShowShell1 && normal || tiny) +-- self.m_ViewModel:ManipulateBoneScale(shell2, self.bShowShell2 && normal || tiny) +-- end + +-- if (SERVER) then +-- self:CallOnClient("ShellRemove") +-- end +-- end + +-- function SWEP:PostDrawViewModel(vm, weapon, ply) +-- BaseClass.PostDrawViewModel(self, vm, weapon, ply) + +-- if (self:Clip1() > 1) then +-- self.bShowShell1 = true +-- end + +-- if (self:Clip1() > 0) then +-- self.bShowShell2 = true +-- end +-- end \ No newline at end of file diff --git a/lua/weapons/mg_charlie9/animations.lua b/lua/weapons/mg_charlie9/animations.lua new file mode 100644 index 0000000..68ec1ea --- /dev/null +++ b/lua/weapons/mg_charlie9/animations.lua @@ -0,0 +1,464 @@ +AddCSLuaFile() + + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.55, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.charlie9.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.4, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.charlie9.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_raise_first_03")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_raise_first_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_raise_first_01")) end}, + {Time = 0.73, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.3, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.0, Callback = function(self) self:EnableGrip() end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_03")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_01")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_04")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_05")) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.33, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_05")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.033, Callback = function(self) self:EnableGrip() end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_04")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_02")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_01")) end}, + + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_Xmag"}, + Length = 2.6, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_xmag_04")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_xmag_03")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_xmag_02")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_xmag_01")) end}, + {Time = 2.3, Callback = function(self) self:EnableGrip() end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_xmag_05")) end}, + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_fast_Xmag"}, + Length = 1.5, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_xmag_03")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_xmag_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.167, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_xmag_01")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_xmag_05")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_xmag_04")) end}, + } + }, + + ["Reload_Drum"] = { + Sequences = {"reload_Drum"}, + Length = 2.7, + Fps = 30, + MagLength = 1.83, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_drum_01")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_drum_02")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_drum_03")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_drum_04")) end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_drum_05")) end}, + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 2.167, Callback = function(self) self:EnableGrip() end}, + {Time = 2.167, Callback = function(self) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_drum_045")) end}, + } + }, + + ["Reload_Drum_Fast"] = { + Sequences = {"reload_fast_Drum"}, + Length = 1.43, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_drum_04")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_drum_05")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_drum_01")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_drum_02")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_drum_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.033, Callback = function(self) self:EnableGrip() end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_fast_drum_045")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.26, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-15, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_06")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_04")) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_05")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_02")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_03")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.7, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.56, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_01")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_04")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_05")) end}, + {Time = 1.133, Callback = function(self) self:EnableGrip() end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_03")) end}, + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_Xmag"}, + Length = 2.6, + Fps = 30, + MagLength = 1.53, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-15, 0, 40)) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_xmag_06")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_xmag_07")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_xmag_04")) end}, + {Time = 1.967, Callback = function(self) self:EnableGrip() end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_xmag_05")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_xmag_03")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_xmag_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_xmag_01")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_xmag_04")) end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_Xmag_fast"}, + Length = 1.66, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_xmag_05")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.233, Callback = function(self) self:EnableGrip() end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_xmag_03")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_xmag_02")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_xmag_01")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_xmag_04")) end}, + } + }, + + ["Reload_Empty_Drum"] = { + Sequences = {"reload_empty_Drum"}, + Length = 2.86, + Fps = 30, + MagLength = 1.53, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-15, 0, 40)) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_drum_04")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_drum_05")) end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_drum_06")) end}, + {Time = 2.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_drum_07")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_drum_01")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_drum_02")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_drum_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_drum_045")) end}, + {Time = 1.933, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Drum_Fast"] = { + Sequences = {"reload_empty_Drum_fast"}, + Length = 1.66, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_drum_035")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_drum_01")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_drum_02")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_drum_03")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_drum_04")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_reload_empty_fast_drum_05")) end}, + {Time = 1.233, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.charlie9.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.charlie9.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 39, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.charlie9.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.charlie9.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_inspect_01")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_inspect_02")) end}, + {Time = 3.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_inspect_04")) end}, + {Time = 4.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_inspect_05")) end}, + {Time = 2.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_charlie9_inspect_03")) end}, + + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Small")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Small")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_charlie9/customization.lua b/lua/weapons/mg_charlie9/customization.lua new file mode 100644 index 0000000..28a50a7 --- /dev/null +++ b/lua/weapons/mg_charlie9/customization.lua @@ -0,0 +1,959 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_charlie9_sup_fire_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sm_charlie9_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_rof"}, + + {"attachment_vm_sm_charlie9_stock", "attachment_vm_sm_charlie9_nostock", "attachment_vm_sm_charlie9_fullstock", + "att_vm_stock_heavy01", "att_vm_stock_heavy02", + "att_vm_stock_light01", "att_vm_stock_medium01", + "att_vm_stock_no"}, + + {"attachment_vm_sm_charlie9_mag", "attachment_vm_sm_charlie9_drummag", "attachment_vm_sm_charlie9_xmag"}, + + {"attachment_vm_sm_charlie9_barrel", "attachment_vm_sm_charlie9_barsil", + "attachment_vm_sm_charlie9_longbarrel", "attachment_vm_sm_charlie9_medbarrel", + "attachment_vm_sm_charlie9_shortbarrel"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04"}, + + {"att_laser", "attachment_vm_sm_charlie9_laser01", "attachment_vm_sm_charlie9_laser02", + "attachment_vm_sm_charlie9_laser03"}, + + {"att_grip", "attachment_vm_sm_charlie9_bipodgrip", "attachment_vm_sm_charlie9_angledgrip01", "attachment_vm_sm_charlie9_angledgrip02", "attachment_vm_sm_charlie9_stubbygrip01", + "attachment_vm_sm_charlie9_stubbygrip02", "attachment_vm_sm_charlie9_vertgrip01", "attachment_vm_sm_charlie9_vertgrip02", + "attachment_vm_sm_charlie9_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- self.Animations.Reload_Drum = self.Animations.Reload_Drum_Fast +-- self.Animations.Reload_Empty_Drum = self.Animations.Reload_Empty_Drum_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sm_charlie9_barrel", +-- }, +-- { +-- Key = "attachment_vm_sm_charlie9_barsil", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- ["tag_fsight"] = 8, +-- }, +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18} +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_charlie9_longbarrel", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- ["tag_fsight"] = 4, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_charlie9_medbarrel", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- ["tag_fsight"] = 4, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_charlie9_shortbarrel", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- ExcludedAttachments = { +-- ["Muzzle"] = {14,15,16,17,18} +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 4.9, 0), Angle()}, +-- [4] = {Vector(0, 3.45, 0), Angle()}, +-- [5] = {Vector(0, 0.1, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, 0.32) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.1, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.1, 0.017, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 3, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.007, 3, -0.11) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.006, 3, -0.01) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_bsight"] = 1, +-- ["tag_fsight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 3, 0.05) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_bsight"] = 2, +-- ["tag_fsight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 3, 0.48) +-- self.HybridAimAngles = Angle(-0.02, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 5, 1) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_bsight"] = 2, +-- ["tag_fsight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 3, 0.5) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_bsight"] = 2, +-- ["tag_fsight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.008, 5, 0.1) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_bsight"] = 2, +-- ["tag_fsight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 5, 0.17) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_bsight"] = 2, +-- ["tag_fsight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 3, 0.345) +-- self.HybridAimAngles = Angle(-0.02, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-0.85) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_bsight"] = 2, +-- ["tag_fsight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0075, 3, 0.415) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0.015, -45) +-- self.HybridAimPos = Vector(-1.55, 5, 1.25) +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 5, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser_attach"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser_attach"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser_attach"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Magazine"] = { +-- Slot = 6, +-- { +-- Key = "attachment_vm_sm_charlie9_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_charlie9_xmag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_charlie9_drummag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sm_charlie9_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_charlie9_fullstock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_charlie9_nostock", +-- Bodygroups = { +-- ["tag_stock_attach"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["tag_stock_attach"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_heavy02", +-- Bodygroups = { +-- ["tag_stock_attach"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- }, + +-- } \ No newline at end of file diff --git a/lua/weapons/mg_charlie9/shared.lua b/lua/weapons/mg_charlie9/shared.lua new file mode 100644 index 0000000..b790981 --- /dev/null +++ b/lua/weapons/mg_charlie9/shared.lua @@ -0,0 +1,170 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_charlie9", "VGUI/entities/mg_charlie9", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sm_charlie9") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vertpro_offset", "grip_unretard_offset"} + +SWEP.PrintName = "ISO" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Submachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_charlie9.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_charlie9.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "TinyGun" +SWEP.Trigger = { + PressedSound = Sound("weap_charlie9_fire_first_plr"), + ReleasedSound = Sound("weap_charlie9_disconnector_plr"), + Time = 0.015 +} + +SWEP.Primary.Sound = Sound("weap_charlie9_fire_fire_plr") +SWEP.Primary.Ammo = "SMG1" +SWEP.Primary.ClipSize = 20 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 900 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.135, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.025, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.09, --multiply the increase value by this amount while aiming + Max = 1.15, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6215 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.8, 1}, --random value between the 2 + Horizontal = {-1, 1}, --random value between the 2 + Shake = 0.95, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = -1547 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {20, 11}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 36, --in meters, damage scales within this distance + DropOffStartRange = 11, --in meters, damage will start dropping off after this range + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.5, --how much damaged is multipled by when leaving a surface. + MaxCount = 2, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,90,-90), + Pos = Vector(1,-4,-3.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 2, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(5, 0, 3), Angles = Angle(40, 0, 0)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-15, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(0, 0, 1.5), Angles = Angle(10, 0, 15)} + } + }, + + RecoilMultiplier = 0.3, + KickMultiplier = 0.3, + AimKickMultiplier = 1.5 +} + +SWEP.Shell = "mwb_shelleject_9mm" + + +DEFINE_BASECLASS("mg_base") \ No newline at end of file diff --git a/lua/weapons/mg_crossbow/animations.lua b/lua/weapons/mg_crossbow/animations.lua new file mode 100644 index 0000000..f06c650 --- /dev/null +++ b/lua/weapons/mg_crossbow/animations.lua @@ -0,0 +1,271 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.85, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_raise_01")) end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.6, + Fps = 30, + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_drop_01")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_raise_first_01")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_raise_first_02")) end}, + {Time = 0.7, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 3.1, + MagLength = 2.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 2.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_04")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_01")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_02")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_03")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.767, Callback = function(self) self:EnableGrip() end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_045")) end}, + {Time = 2.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_05")) end}, + + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2.26, + MagLength = 1.66, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.467, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_04")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_01")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.033, Callback = function(self) self:EnableGrip() end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_045")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_02")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_03")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_05")) end}, + + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload"}, + Length = 3.1, + MagLength = 2.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 2.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_04")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_01")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_02")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_03")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.767, Callback = function(self) self:EnableGrip() end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_045")) end}, + {Time = 2.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_05")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2.26, + MagLength = 1.66, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.467, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_04")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_01")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.033, Callback = function(self) self:EnableGrip() end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_045")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_02")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_03")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_reload_fast_05")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sksierra.ads.up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sksierra.ads.down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end}, + {Time = 3.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_inspect_04")) end}, + {Time = 4.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_inspect_05")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_inspect_01")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_inspect_02")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_crossbow_inspect_03")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_crossbow/customization.lua b/lua/weapons/mg_crossbow/customization.lua new file mode 100644 index 0000000..15e9c63 --- /dev/null +++ b/lua/weapons/mg_crossbow/customization.lua @@ -0,0 +1,1019 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_crossbow_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_DMR_Sup.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_DMR_Sup.Inside"), + Reflection = Sound("Reflection_Sniper.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"attachment_vm_sn_crossbow_perk_none", "attachment_vm_sn_crossbow_perk_soh", "attachment_vm_sn_crossbow_perk_ammo"}, + + {"attachment_vm_sn_crossbow_stock", "attachment_vm_sn_crossbow_stock_tac", + "attachment_vm_sn_crossbow_stock_light", "attachment_vm_sn_crossbow_stock_heavy"}, + + {"attachment_vm_sn_crossbow_mag", "attachment_vm_sn_crossbow_mag_stunbolt", + "attachment_vm_sn_crossbow_mag_firebolt", "attachment_vm_sn_crossbow_mag_expbolt", + "attachment_vm_sn_crossbow_mag_empbolt", "attachment_vm_sn_crossbow_mag_smokebolt", + "attachment_vm_sn_crossbow_mag_flashbolt", "attachment_vm_sn_crossbow_mag_stimbolt", + "attachment_vm_sn_crossbow_mag_skullbolt", "attachment_vm_sn_crossbow_mag_gordonbolt" + --[["attachment_vm_sn_crossbow_mag_knockbolt"]]}, + + {"attachment_vm_sn_crossbow_arms", "attachment_vm_sn_crossbow_arms_tac", + "attachment_vm_sn_crossbow_arms_light", "attachment_vm_sn_crossbow_arms_heavy"}, + + {"attachment_vm_sn_crossbow_wire", "attachment_vm_sn_crossbow_wire_tac", + "attachment_vm_sn_crossbow_wire_light", "attachment_vm_sn_crossbow_wire_heavy"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04", + "att_vm_scope_mike14", "att_vm_scope_vz", "attachment_vm_sn_crossbow_scope"}, + + {"att_laser", "attachment_vm_sn_crossbow_laser01", "attachment_vm_sn_crossbow_laser02", + "attachment_vm_sn_crossbow_laser03"}, + + {"att_grip", "attachment_vm_sn_crossbow_angledgrip01", "attachment_vm_sn_crossbow_stubbygrip01", + "attachment_vm_sn_crossbow_vertgrip01"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- weapon.Animations.Reload = weapon.Animations.Reload_Fast +-- weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast +-- weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast +-- weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +-- weapon.Animations.Reload_Smag = weapon.Animations.Reload_Smag_Fast +-- weapon.Animations.Reload_Empty_Smag = weapon.Animations.Reload_Empty_Smag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sn_crossbow_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_crossbow_barlong", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_crossbow_barhvy", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_crossbow_barshort", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.03, 0) --i know you tell me not to fuck with this but the dot being actually centered on the glass demands it xoxo +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.02, 5, -1.275) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 3, -1.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05,0.05,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.15,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 4, -1.61) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0, 4, -1.71) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0.03,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 4, -1.61) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0015, 4, -1.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 4, -1.12) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.75, 10.5, -0.6) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 4, -1.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_crossbow_scope", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01,0,-0.75) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_crossbow_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01,6,-1.5) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0035,6,-1.43) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 4, -1.255) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,13,-2.45) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 4, -1.52) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0, 0.025, 0) +-- self.HybridAimPos = Vector(-0.015, 15, -1.5) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 4, -1.52) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0, 0.025, 0) +-- self.HybridAimPos = Vector(-0.015, 15, -1.5) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 4, -1.185) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 10, -0.35) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 5, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- AttachmentBodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.5, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- AttachmentBodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.5, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- AttachmentBodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.5, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 6, +-- { +-- Key = "attachment_vm_sn_crossbow_stock", +-- }, +-- { +-- Key = "attachment_vm_sn_crossbow_stockhvy", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_crossbow_stockhvy2", +-- Stats = function(self) +-- self:SetGripPoseParameter2("grip_stockhvy_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_crossbow_stockno", +-- Stats = function(self) +-- self:SetGripPoseParameter2("grip_stockhvy_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sn_crossbow_mag" +-- }, +-- { +-- Key = "attachment_vm_sn_crossbow_smag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_crossbow_xmag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- } +-- } \ No newline at end of file diff --git a/lua/weapons/mg_crossbow/shared.lua b/lua/weapons/mg_crossbow/shared.lua new file mode 100644 index 0000000..364c6e5 --- /dev/null +++ b/lua/weapons/mg_crossbow/shared.lua @@ -0,0 +1,178 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_crossbow", "VGUI/entities/mg_crossbow", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sn_crossbow") +end + +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vertpro_offset"} +-- SWEP.GripPoseParameters2 = {"grip_pistolgrip_offset"} + +SWEP.Base = "mg_base" + +SWEP.PrintName = "Crossbow" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Marksman Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_crossbow.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_crossbow.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.sksierra.fire.first"), + ReleasedSound = Sound("mw19.sksierra.disconnector"), + Time = 0.03 +} + +SWEP.Slot = 3 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("weap_crossbow_fire_plr") +SWEP.Primary.Ammo = "XBowBolt" +SWEP.Primary.ClipSize = 1 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 328 +SWEP.CanChamberRound = false +SWEP.CanDisableAimReload = false +SWEP.ReloadRechambers = true +SWEP.Projectile = { + Class = "mg_arrow", --bullet entity class + Speed = 8500, + Gravity = 1 +} +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_dmr", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound(""), + Reflection = Sound("") + }, + + Inside = { + Layer = Sound(""), + Reflection = Sound("") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Semi-Automatic", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 0.35, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.086, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.025, --multiply the increase value by this amount while aiming + Max = 2.5, --the cone size will not go beyond this size + Decrease = 1, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6985 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0, 0}, --random value between the 2 + Horizontal = {0, 0}, --random value between the 2 + Shake = 3, --camera shake + AdsMultiplier = 0.05, --multiply the values by this amount while aiming + Seed = 3584, --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {150, 90}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 100, --in meters, damage scales within this distance + DropOffStartRange = 10, + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1.25, --damage is multiplied by this amount when pushing objects + Penetration = { + DamageMultiplier = 0.85, --how much damaged is multipled by when leaving a surface. + MaxCount = 12, --how many times the bullet can penetrate. + Thickness = 25, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(15,0,-180), + Pos = Vector(9,-1,-3.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1, + KickMultiplier = 1, + AimKickMultiplier = 1 +} + +local BaseClass = baseclass.Get(SWEP.Base) + +function SWEP:PostAttachment(attachment) + BaseClass.PostAttachment(self, attachment) + + if (!self:HasAttachment("attachment_vm_sn_crossbow_mag_gordonbolt")) then + self.Projectile.Velocity = nil + self.Primary.TrailingSound = nil + end +end diff --git a/lua/weapons/mg_dblmg/animations.lua b/lua/weapons/mg_dblmg/animations.lua new file mode 100644 index 0000000..7e1f00f --- /dev/null +++ b/lua/weapons/mg_dblmg/animations.lua @@ -0,0 +1,200 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30 + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 1.2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dblmg.inspect.1")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.8, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dblmg.inspect.3")) end} + } + }, + + ["Reload"] = { + Sequences = {"reload_fast"}, + Length = 4, + Fps = 30, + MagLength = 3, + NextSequence = "Idle", + Events = { + {Time = 0.13, Callback = function(self) self:DoSound(Sound("mw19.dblmg.reload.start")) end}, + {Time = 0.85, Callback = function(self) self:DoSound(Sound("mw19.dblmg.belt.out")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("mw19.dblmg.belt.in")) end}, + {Time = 3, Callback = function(self) self:DoSound(Sound("mw19.dblmg.reload.end")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload"}, + Length = 5.5, + Fps = 30, + MagLength = 4, + NextSequence = "Idle", + Events = { + {Time = 0.13, Callback = function(self) self:DoSound(Sound("mw19.dblmg.reload.start")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("mw19.dblmg.belt.out")) end}, + {Time = 3.5, Callback = function(self) self:DoSound(Sound("mw19.dblmg.belt.in")) end}, + {Time = 4.5, Callback = function(self) self:DoSound(Sound("mw19.dblmg.reload.end")) end}, + } + }, + + ["spin_up"] = { + Sequences = {"spin_loop"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dblmg.inspect.3")) end} + } + }, + + ["spin_loop"] = { + Sequences = {"spin_loop"}, + Length = 1, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dblmg.inspect.3")) end} + } + }, + + ["spin_end"] = { + Sequences = {"spin_end"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dblmg.inspect.3")) end} + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0.01, Callback = function(self) self:DoSound(Sound("mw19.dblmg.spin.loop")) end} + } + }, + + ["fire_charge"] = { + Sequences = {"fire_charge"}, + Fps = 60, + NextSequence = "Idle", + Events = { + } + }, + + ["Ads_In"] = { + Sequences = {"idle"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_L86.ADS_Up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"idle"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_L86.ADS_Down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 10, + NextSequence = "Sprint_Loop", + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 10, + NextSequence = "Idle", + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.32, Callback = function(self) self:DoSound(Sound("mw19.dblmg.inspect.1")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("mw19.dblmg.inspect.2")) end}, + {Time = 3, Callback = function(self) self:DoSound(Sound("mw19.dblmg.inspect.3")) end} + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle" + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Melee"] = { + Sequences = {"melee_hit_01"}, + Length = 1, --if melee misses + + Size = 15, + Range = 75, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Large")) end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01"}, + Length = 1, --if melee hits + + Damage = 75, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Large")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_dblmg/shared.lua b/lua/weapons/mg_dblmg/shared.lua new file mode 100644 index 0000000..9f780c9 --- /dev/null +++ b/lua/weapons/mg_dblmg/shared.lua @@ -0,0 +1,152 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") + +if CLIENT then + killicon.Add( "mg_dblmg", "VGUI/entities/mg_dblmg", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_lm_dblmg") +end + +SWEP.Base = "mg_base" + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "AC_muzzle_rifle", + ["MuzzleFlash_Suppressed"] = "AC_muzzle_pistol_suppressed", + ["Ejection"] = "AC_muzzle_pistol_ejection", +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 15, + TemperatureThreshold = 150, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.PrintName = "Minigun" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Specials" +SWEP.Spawnable = true +SWEP.AdminOnly = true +SWEP.VModel = Model("models/viper/mw/weapons/v_dblmg.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_dblmg.mdl") + +SWEP.Slot = 3 +SWEP.HoldType = "Shotgun" + +SWEP.Primary.Sound = Sound("mw19.dblmg.fire") +SWEP.Primary.TrailingSound = Sound("mw19.dblmg.spin.loop") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 200 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 1750 +SWEP.CanDisableAimReload = true + +SWEP.Trigger = { + PressedSound = Sound("mw19.dblmg.spin.up"), + ReleasedSound = Sound("mw19.dblmg.spin.down"), + PlayReleasedSoundRegardless = true, + PressedAnimation = "spin_up", + Time = 0.45 +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_LMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Customization = {} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, +} +SWEP.Cone = { + Hip = 0.5, --accuracy while hip + Ads = 0, --accuracy while aiming + Increase = 0.015, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.25, --multiply the increase value by this amount while aiming + Max = 3.15, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 32452 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.1, 0.35}, --random value between the 2 + Horizontal = {-0.7, 1.5}, --random value between the 2 + Shake = 1.25, --camera shake + AdsMultiplier = 0.5, --multiply the values by this amount while aiming + Seed = 65473 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {50, 25}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 30, --in meters, damage scales within this distance + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 2, --the amount of bullets to fire + PhysicsMultiplier = 0.75 --damage is multiplied by this amount when pushing objects +} + +SWEP.Zoom = { + FovMultiplier = 0.7, + ViewModelFovMultiplier = 1.1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "j_dblmg_offset", + Angles = Angle(0, 90, -90), + Pos = Vector(15,-1,-11) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(-2, 0, 1) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + + RecoilMultiplier = 1.2, + KickMultiplier = 3, + AimKickMultiplier = 3 +} + +SWEP.Shell = "mwb_shelleject_762" + +local base = weapons.Get("mg_base") + +function SWEP:HasAttachment(att) + if (att == "att_ammo_he") then + return true + end + + return base.HasAttachment(self, att) +end \ No newline at end of file diff --git a/lua/weapons/mg_deagle/animations.lua b/lua/weapons/mg_deagle/animations.lua new file mode 100644 index 0000000..88c0157 --- /dev/null +++ b/lua/weapons/mg_deagle/animations.lua @@ -0,0 +1,365 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30 + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.3, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Drop")) end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Raise_First_Up")) end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Raise_Safety")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Raise_First_End")) end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 1.8, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start")) end}, + {Time = 0.56, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End")) end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.6, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start_Fast")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout_Fast")) end}, + {Time = 0.35, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, -10)) end}, + {Time = 0.53, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End_Fast")) end} + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_xmaglrg"}, + Length = 1.8, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start_Xmag")) end}, + {Time = 0.56, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout_Xmag")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert_Xmag")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin_Xmag")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End")) end} + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 1.8, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start_Xmag")) end}, + {Time = 0.56, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout_Xmag")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert_Xmag")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin_Xmag")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End")) end} + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_xmaglrg_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.7, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start_Xmag_Fast")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout_Xmag_Fast")) end}, + {Time = 0.35, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, -10)) end}, + {Time = 0.53, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert_Xmag_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin_Xmag_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End_Fast")) end} + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.7, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start_Xmag_Fast")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout_Xmag_Fast")) end}, + {Time = 0.35, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, -10)) end}, + {Time = 0.53, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert_Xmag_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin_Xmag_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End_Fast")) end} + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 1.8, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start_Empty")) end}, + {Time = 0.16, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout_Empty")) end}, + {Time = 0.65, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(20, 0, 0)) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert_Empty")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin_Empty")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Charge")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End_Empty")) end} + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.25, + Fps = 30, + MagLength = 0.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start_Empty_Fast")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout_Empty_Fast")) end}, + {Time = 0.35, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert_Empty_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin_Empty_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Charge_Fast")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End_Empty_Fast")) end} + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_xmaglrg"}, + Length = 1.8, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start_Empty_Xmag")) end}, + {Time = 0.16, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout_Empty_Xmag")) end}, + {Time = 0.65, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(20, 0, 0)) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert_Empty_Xmag")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin_Empty_Xmag")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Charge_Xmag")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End_Empty_Xmag")) end} + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_xmaglrg_fast"}, + Length = 1.25, + Fps = 30, + MagLength = 0.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start_Empty_Fast")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout_Empty_Fast")) end}, + {Time = 0.35, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert_Empty_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin_Empty_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Charge_Fast")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End_Empty_Fast")) end} + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 1.8, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start_Empty_Xmag")) end}, + {Time = 0.16, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout_Empty_Xmag")) end}, + {Time = 0.65, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(20, 0, 0)) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert_Empty_Xmag")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin_Empty_Xmag")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Charge_Xmag")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End_Empty_Xmag")) end} + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 1.25, + Fps = 30, + MagLength = 0.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_Start_Empty_Fast")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magout_Empty_Fast")) end}, + {Time = 0.35, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Maginsert_Empty_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Magin_Empty_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Charge_Fast")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Reload_End_Empty_Fast")) end} + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + } + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Lastshot")) end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.ADS_Up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.ADS_Down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24 + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop" --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.35, + Fps = 24, + NextSequence = "Idle", + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Inspect01")) end}, + {Time = 2.06, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Inspect02")) end}, + {Time = 3.76, Callback = function(self) self:DoSound(Sound("MW19_DEAGLE.Inspect03")) end} + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle" + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_deagle/customization.lua b/lua/weapons/mg_deagle/customization.lua new file mode 100644 index 0000000..78366ad --- /dev/null +++ b/lua/weapons/mg_deagle/customization.lua @@ -0,0 +1,408 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_decho_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol_Mag_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + + {"att_perk", "att_vm_pi_decho_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_fastswap"}, + + {"attachment_vm_pi_decho_mag", "attachment_vm_pi_decho_xmags", "attachment_vm_pi_decho_xmags2"}, + + {"attachment_vm_pi_decho_grip", "attachment_vm_pi_decho_cust_grip"}, + + {"att_receiver"}, + + {"att_muzzle", "att_vm_flashhider01_pstl", "att_vm_compensator01_pstl", "att_vm_muzzlebrake01_pstl", "attachment_vm_pi_decho_muzzlebrake", + "att_vm_silencer01_pstl", "att_vm_silencer02_pstl", "att_vm_silencer04_pstl", "att_vm_oil_filter_suppressor"}, + + {"att_sight", "att_vm_minireddot01", "att_vm_minireddot02", "att_vm_minireddot03", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_4x_east01_tall", "att_vm_4x_west01_tall"}, + + {"attachment_vm_pi_decho_slide", "attachment_vm_pi_decho_slide_extended", "attachment_vm_pi_decho_slide_extended02"}, + + {"att_laser", "att_vm_pi_decho_laser01", "att_vm_pi_decho_laser02", "att_vm_pi_decho_laser03"} +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider_psl01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 4, 0), Angle()}, +-- [3] = {Vector(0, 0.7, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, + +-- { +-- Key = "attachment_vm_pi_decho_muzzlebrake", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 4, 0), Angle()}, +-- [3] = {Vector(0, 0.7, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_oil_filter_suppressor", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 4, 0), Angle()}, +-- [3] = {Vector(0, 0.7, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_pstl_02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 4, 0), Angle()}, +-- [3] = {Vector(0, 0.7, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencerpstl03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 4, 0), Angle()}, +-- [3] = {Vector(0, 0.7, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencerpstl", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 4, 0), Angle()}, +-- [3] = {Vector(0, 0.7, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, + + +-- }, + +-- ["Laser"] = { +-- Slot = 7, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_pstl", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_pstl03", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_pstl04", +-- Stats = function(self) +-- end +-- } +-- }, + + +-- ["Pistol Grip"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_pi_decho_grip", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_decho_cust_grip", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_pi_decho_slide", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_decho_slide_extended", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_decho_slide_extended02", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_optic", +-- }, +-- { +-- Key = "attachment_vm_minireddot01", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.365) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.4) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.4) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west02_lod0", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.6) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.1) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.85) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_lod0", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.8) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.13, 0, -0.75) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.015, 0, -0.85) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.75) +-- end +-- } +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Magazine"] = { +-- Slot = 6, +-- { +-- Key = "attachment_vm_pi_decho_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_decho_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_decho_xmags2", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 8, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_deagle/shared.lua b/lua/weapons/mg_deagle/shared.lua new file mode 100644 index 0000000..6c3f96f --- /dev/null +++ b/lua/weapons/mg_deagle/shared.lua @@ -0,0 +1,152 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_desert") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_deagle", "VGUI/entities/mg_deagle", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_pi_decho") +end + +SWEP.Base = "mg_base" + +SWEP.PrintName = ".50 GS" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Pistols" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_deagle.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_deagle.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_decho_fire_first"), + ReleasedSound = Sound("weap_mike1911_fire_disconnector"), + Time = 0.05 +} +SWEP.Slot = 1 +SWEP.HoldType = "Pistol" + +SWEP.Primary.Sound = Sound("weap_decho_fire_plr") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 7 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 200 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol_deagle", + ["MuzzleFlash_Suppressed"] = "AC_muzzle_pistol_suppressed", + ["Ejection"] = "AC_muzzle_pistol_ejection", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol_Mag.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Semi Auto", + OnSet = function() + return nil + end + } +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 100, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.3, --accuracy while hip + Ads = 0.12, --accuracy while aiming + Increase = 0.3, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.23, --the cone size will not go beyond this size + Decrease = 0.6, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 54892 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {3, 7}, --random value between the 2 + Horizontal = {-1, 2}, --random value between the 2 + Shake = 3.5, --camera shake + AdsMultiplier = 0.75, --multiply the values by this amount while aiming + Seed = 4445523 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {59, 28}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 30, --in meters, damage scales within this distance + DropOffStartRange = 10, --in meters, damage scales within this distance + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1.5, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.875, --how much damaged is multipled by when leaving a surface. + MaxCount = 6, --how many times the bullet can penetrate. + Thickness = 16, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 15 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_pistol_offset", + Angles = Angle(0, 90, -90), + Pos = Vector(3, -3, -1.75) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0.15, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_pistol_offset", + X = { + [0] = {Pos = Vector(0, 2, -2), Angles = Angle(30, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(0, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(2, 0, 0), Angles = Angle(-30, -30, 0)}, + [1] = {Pos = Vector(-4, 0, 0), Angles = Angle(0, 30, 0)} + } + }, + RecoilMultiplier = 5, + KickMultiplier = 1.5 +} + +SWEP.Shell = "mwb_shelleject_45" \ No newline at end of file diff --git a/lua/weapons/mg_delta/animations.lua b/lua/weapons/mg_delta/animations.lua new file mode 100644 index 0000000..6da39af --- /dev/null +++ b/lua/weapons/mg_delta/animations.lua @@ -0,0 +1,381 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.7, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_raise_01")) end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.8, + Fps = 30, + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_drop_01")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.467, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_raise_first_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_raise_first_01")) end}, + {Time = 0.9, Callback = function(self) self:EnableGrip() end}, + {Time = 1.033, Callback = function(self) self:EnableGrip() end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_raise_first_03")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 3.25, + MagLength = 2.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_xmag_02")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_xmag_03")) end}, + {Time = 0.233, Callback = function(self) self:DisableGrip() end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_xmag_01")) end}, + {Time = 2.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_xmag_06")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_xmag_04")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_xmag_05")) end}, + {Time = 2.367, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.633, Callback = function(self) self:EnableGrip() end}, + {Time = 2.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_xmag_055")) end}, + + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 2.1, + MagLength = 1.56, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_fast_xmag_045")) end}, + {Time = 1.767, Callback = function(self) self:EnableGrip() end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_fast_xmag_05")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_xmag_04")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_xmag_01")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_xmag_02")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_xmag_03")) end}, + {Time = 1.733, Callback = function(self) self:EnableGrip() end}, + + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 3.25, + MagLength = 2.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.233, Callback = function(self) self:DisableGrip() end}, + {Time = 2.367, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_05")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_04")) end}, + {Time = 2.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_06")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_01")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_03")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_02")) end}, + {Time = 2.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_055")) end}, + {Time = 2.633, Callback = function(self) self:EnableGrip() end}, + + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2.1, + MagLength = 1.56, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_fast_05")) end}, + {Time = 1.733, Callback = function(self) self:EnableGrip() end}, + {Time = 1.767, Callback = function(self) self:EnableGrip() end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_04")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_03")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_02")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_01")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_fast_045")) end}, + + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 4.3, + MagLength = 2.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.333, Callback = function(self) self:DisableGrip() end}, + {Time = 2.267, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_xmag_045")) end}, + {Time = 2.833, Callback = function(self) self:DisableGrip() end}, + {Time = 3.467, Callback = function(self) self:EnableGrip() end}, + {Time = 3.5, Callback = function(self) self:EnableGrip() end}, + {Time = 3.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_xmag_06")) end}, + {Time = 3.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_xmag_07")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_xmag_04")) end}, + {Time = 2.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_xmag_05")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_xmag_02")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_xmag_03")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_xmag_01")) end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 2.7, + MagLength = 1.6, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_xmag_04")) end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_xmag_06")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_xmag_02")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_xmag_01")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_xmag_045")) end}, + {Time = 2.367, Callback = function(self) self:EnableGrip() end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_xmag_05")) end}, + {Time = 0.167, Callback = function(self) self:DisableGrip() end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_xmag_03")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 4.3, + MagLength = 2.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 2.267, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_045")) end}, + {Time = 0.333, Callback = function(self) self:DisableGrip() end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_01")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_03")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_02")) end}, + {Time = 2.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_05")) end}, + {Time = 3.5, Callback = function(self) self:EnableGrip() end}, + {Time = 3.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_06")) end}, + {Time = 2.833, Callback = function(self) self:DisableGrip() end}, + {Time = 3.467, Callback = function(self) self:EnableGrip() end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_04")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.7, + MagLength = 1.6, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.167, Callback = function(self) end}, + {Time = 0.167, Callback = function(self) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_01")) end}, + {Time = 0.167, Callback = function(self) self:DisableGrip() end}, + {Time = 2.367, Callback = function(self) self:EnableGrip() end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_06")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_05")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_03")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_02")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_04")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_reload_empty_fast_045")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 25, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_sn_delta_ads_up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 25, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_sn_delta_ads_down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_inspect_03")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_inspect_01")) end}, + {Time = 1.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_delta_inspect_02")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_delta/customization.lua b/lua/weapons/mg_delta/customization.lua new file mode 100644 index 0000000..1424aae --- /dev/null +++ b/lua/weapons/mg_delta/customization.lua @@ -0,0 +1,57 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_delta_fire_plr_sup") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper_Sup.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_DMR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sn_delta_perk_soh", "att_perk_steadywalk", "attachment_vm_ar_delta_perk_fullauto", "att_perk_scopesway"}, + + {"attachment_vm_sn_delta_receiver"}, + + {"attachment_vm_sn_delta_stock", "attachment_vm_sn_delta_stock_short", + "attachment_vm_sn_delta_stock_light", "att_vm_stock_heavy01", + "att_vm_stock_heavy02", "att_vm_stock_light01", "att_vm_stock_medium01", "att_vm_stock_no"}, + + {"attachment_vm_sn_delta_mag", "attachment_vm_sn_delta_xmags", "attachment_vm_sn_delta_xmags2"}, + + {"attachment_vm_sn_delta_barrel", "attachment_vm_sn_delta_barlong", + "attachment_vm_sn_delta_barshort"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"attachment_vm_sn_delta_irons", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "attachment_vm_sn_delta_scope", "attachment_vm_thermalsnpr_west01_delta_v3", + "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04"}, + + {"att_laser", "attachment_vm_sn_delta_laser01", "attachment_vm_sn_delta_laser02", + "attachment_vm_sn_delta_laser03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) \ No newline at end of file diff --git a/lua/weapons/mg_delta/shared.lua b/lua/weapons/mg_delta/shared.lua new file mode 100644 index 0000000..d025cd0 --- /dev/null +++ b/lua/weapons/mg_delta/shared.lua @@ -0,0 +1,169 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_delta", "VGUI/entities/mg_delta", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sn_delta") +end + +-- SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} +-- SWEP.GripPoseParameters2 = {"grip_pistolgrip_offset"} + +SWEP.Base = "mg_base" + +SWEP.PrintName = "Dragunov" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Sniper Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/vm_sn_delta.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_delta.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_delta_fire_first"), + ReleasedSound = Sound("weap_delta_fire_disconnector"), + Time = 0.03 +} + +SWEP.Slot = 3 +SWEP.HoldType = "BigGun" + +SWEP.Primary.Sound = Sound("weap_delta_fire_plr") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 10 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 297 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false + + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_dmr", + ["MuzzleFlash_DB"] = "mw_fas2_muzzleflash_slug", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", + ["Overheating"] = "AC_muzzle_pistol_smoke_barrel", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper2.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Semi-Automatic", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 1.5, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 3, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.025, --multiply the increase value by this amount while aiming + Max = 3, --the cone size will not go beyond this size + Decrease = 3, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6985 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {6, 8}, --random value between the 2 + Horizontal = {-3, 3}, --random value between the 2 + Shake = 3, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 3584, --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {101, 65}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 200, --in meters, damage scales within this distance + DropOffStartRange = 30, + Range = 350, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1.25, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 2, + Penetration = { + DamageMultiplier = 1, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 32, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + MovementMultiplier = 1, + BreathingMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(10,5,180), + Pos = Vector(10,-2, -4) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, -0.09) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1.75, + KickMultiplier = 3.3, + AimKickMultiplier = 0.45 +} + +SWEP.Shell = "mwb_shelleject_7625x" \ No newline at end of file diff --git a/lua/weapons/mg_dpapa12/animations.lua b/lua/weapons/mg_dpapa12/animations.lua new file mode 100644 index 0000000..605c056 --- /dev/null +++ b/lua/weapons/mg_dpapa12/animations.lua @@ -0,0 +1,289 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.65, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dpapa12.raise")) end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.6, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dpapa12.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_dpapa12_raise_first_01")) end}, + {Time = 0.53, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_empty_end_02")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_dpapa12_raise_first_02")) end}, + } + }, + + ["Reload_Start"] = { + Sequences = {"reload_start"}, + Length = 1.3, + Fps = 30, + MagLength = 0.8, + MagLength2 = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_start_01")) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_start_02")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_start_03")) end}, + + } + }, + + ["Reload_Start_Onebullet"] = { + Sequences = {"reload_start_onebullet"}, + Length = 1.3, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_start_01")) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_start_02")) end}, + --{Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_start_03")) end}, + + } + }, + + ["Reload_Loop"] = { + Sequences = {"reload_loop"}, + Length = 0.83, + Fps = 30, + MagLength = 0.4, + MagLength2 = 0.83, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_loop_01")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_loop_01")) end}, + + } + }, + + ["Reload_End"] = { + Sequences = {"reload_end"}, + Length = 0.63, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_end_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_end_02")) end} + } + }, + + ["Reload_End_Empty"] = { + Sequences = {"reload_end_empty"}, + Length = 0.86, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_empty_end_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_reload_empty_end_02")) end} + } + }, + + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Rechamber"] = { + Sequences = {"rechamber"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.1, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_rechamber_02")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_sh_dpapa12_rechamber_025")) end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dpapa12.ads.up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dpapa12.ads.down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.36, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_dpapa12_inspect_04")) end}, + {Time = 4.23, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_dpapa12_inspect_05")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_dpapa12_inspect_02")) end}, + {Time = 2.43, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_dpapa12_inspect_03")) end}, + {Time = 0.167, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_dpapa12_inspect_01")) end}, + {Time = 4.433, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_dpapa12/customization.lua b/lua/weapons/mg_dpapa12/customization.lua new file mode 100644 index 0000000..5848d97 --- /dev/null +++ b/lua/weapons/mg_dpapa12/customization.lua @@ -0,0 +1,740 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_dpapa12_sup_plr_lfe") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Shotgun2.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Reflection_ARSUP.Inside"), + Reflection = Sound("Reflection_ShotgunSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +end + +function SWEP:doDBStats() + self.Primary.TrailingSound = Sound("wpn_shotgun_fire_lyr") + self.ParticleEffects.MuzzleFlash = "AC_muzzle_shotgun_db" +end + +-- local function doCalConversionStats(self) +-- local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") +-- local bSup2 = self:HasAttachment("attachment_vm_silencer02") +-- local bSup3 = self:HasAttachment("attachment_vm_silencer03") +-- local bSup4 = self:HasAttachment("attachment_vm_silencer04") +-- local bSup5 = self:HasAttachment("attachment_vm_ar_mike4_barsil") +-- local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_mag_v5") + +-- if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then +-- self.Primary.Sound = Sound("mw19_mcharlie.fire.cal") +-- self.Reverb = { +-- RoomScale = 50000, +-- Sounds = { +-- Outside = { +-- Layer = Sound("Atmo_SMG.Outside"), +-- Reflection = Sound("Reflection_AR.Outside") +-- }, + +-- Inside = { +-- Layer = Sound("Atmo_SMG.Inside"), +-- Reflection = Sound("Reflection_AR.Inside") +-- } +-- } +-- } +-- end + +-- self.Primary.Ammo = "SMG1" +-- self.Shell.Model = Model("models/viper/mw/shells/fx_pistol_shell_lod0.mdl") +-- self.Shell.Scale = 0.5 +-- self.Shell.Sound = Sound("MW_Casings.9mm") +-- end + + +-- local function doSocomConversionStats(self) +-- local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") +-- local bSup2 = self:HasAttachment("attachment_vm_silencer02") +-- local bSup3 = self:HasAttachment("attachment_vm_silencer03") +-- local bSup4 = self:HasAttachment("attachment_vm_silencer04") +-- local bSup5 = self:HasAttachment("attachment_vm_ar_mike4_barsil") +-- local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_mag_v5") + +-- if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then +-- self.Reverb = { +-- RoomScale = 50000, +-- Sounds = { +-- Outside = { +-- Layer = Sound("Atmo_LMG.Outside"), +-- Reflection = Sound("Reflection_AR.Outside") +-- }, + +-- Inside = { +-- Layer = Sound("Atmo_LMG.Inside"), +-- Reflection = Sound("Reflection_AR.Inside") +-- } +-- } +-- } +-- end + +-- self.Shell.Model = Model("models/viper/mw/shells/vfx_9x39_shell.mdl") +-- self.Shell.Scale = 0.35 +-- end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sh_dpapa12_perk_soh", "att_perk_hip"}, + + {"attachment_vm_sh_dpapa12_barrel", "attachment_vm_sh_dpapa12_barlong", "attachment_vm_sh_dpapa12_barmid", + "attachment_vm_sh_dpapa12_barshort"}, + + {"attachment_vm_sh_dpapa12_pump", "attachment_vm_sh_dpapa12_pump_tactical", "attachment_vm_sh_dpapa12_pump_stable", + "attachment_vm_sh_dpapa12_pump_light"}, + + {"att_ammo_default", "att_ammo_db", "att_ammo_flechette", + "att_ammo_he", "att_ammo_slugs"}, + + {"att_muzzle", "attachment_vm_sh_dpapa12_choke", + "attachment_vm_sh_dpapa12_flashhider", "attachment_vm_sh_dpapa12_muzzlebrake", + "attachment_vm_sh_dpapa12_muzzlemelee", "attachment_vm_sh_dpapa12_silencer01", + "attachment_vm_sh_dpapa12_silencer02", "attachment_vm_sh_dpapa12_silencer03"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_reflex_west04", + "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_sh_dpapa12_laser01", "attachment_vm_sh_dpapa12_laser02", "attachment_vm_sh_dpapa12_laser03"}, + + {"attachment_vm_sh_dpapa12_grip"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload_Start.Fps = self.Animations.Reload_Start.Fps * 1.25 +-- self.Animations.Reload_Start_Onebullet.Fps = self.Animations.Reload_Start_Onebullet.Fps * 1.25 +-- self.Animations.Reload_Loop.Fps = self.Animations.Reload_Loop.Fps * 1.25 +-- self.Animations.Reload_End.Fps = self.Animations.Reload_End.Fps * 1.25 +-- self.Animations.Reload_End_Empty.Fps = self.Animations.Reload_End_Empty.Fps * 1.25 +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- --[[{ +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- }]] +-- }, + +-- ["Ammo"] = { +-- Slot = 2, +-- { +-- Key = "no_perk", +-- PostProcess = function(self) +-- self.Projectile = nil +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- { +-- Key = "sh_slugs", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- { +-- Key = "sh_db", +-- Stats = function(self) +-- doDBStats(self) +-- end +-- }, +-- { +-- Key = "sh_flechette", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- { +-- Key = "sh_he", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- }, + +-- ["Barrel"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_sh_dpapa12_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_barmid", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_barlong", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_barshort", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Muzzle"] = { +-- Slot = 4, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_choke", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, 1, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_comp", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, 1, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_muzzlebrake", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, 1, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_muzzlemelee", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, 1, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_flashhider", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, 1, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_silencer01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, 1, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, 1, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, 1, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 5, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) --i know you tell me not to fuck with this but the dot being actually centered on the glass demands it xoxo +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.1, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.167, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 0, -0.07) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.185) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.08) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.01) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.41) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.75, 2.5, 0.9) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.43) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.275) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,1.5,-0.9) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, 0.355) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, -0.012, 0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2.5, 1.17) +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Pump"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sh_dpapa12_pump", +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_pump_light", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_pump_stable", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_dpapa12_pump_tactical", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Grip"] = { +-- Slot = 8, +-- { +-- Key = "attachment_vm_sh_dpapa12_grip", +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02_dpapa12", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04_dpapa12", +-- Stats = function(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_dpapa12/shared.lua b/lua/weapons/mg_dpapa12/shared.lua new file mode 100644 index 0000000..69c3307 --- /dev/null +++ b/lua/weapons/mg_dpapa12/shared.lua @@ -0,0 +1,307 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_dpapa12", "VGUI/entities/mg_dpapa12", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sh_dpapa12") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "R9-0" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Shotguns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_dpapa12.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_dpapa12.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.aalpha12.fire.first"), + ReleasedSound = Sound("mw19.aalpha12.disconnector"), + Time = 0.025 +} + +SWEP.Slot = 3 +SWEP.HoldType = "RifleWithVerticalGrip" + +SWEP.Primary.Sound = Sound("weap_dpapa12_fire_plr_lfe") +SWEP.Primary.Ammo = "Buckshot" +SWEP.Primary.ClipSize = 14 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 600 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_shotgun", + ["MuzzleFlash_DB"] = "mw_fas2_muzzleflash_slug", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", + ["Overheating"] = "AC_muzzle_pistol_smoke_barrel", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper.Outside"), + Reflection = Sound("Reflection_Shotgun.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Sniper.Inside") + } + } +} +SWEP.Firemodes = { + + [1] = { + Name = "Pump-Action", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 65, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 1, --accuracy while hip + Ads = 1, --accuracy while aiming + Increase = 0.085, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 2.5, --the cone size will not go beyond this size + Decrease = 0.24, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6974 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {4, 6.5}, --random value between the 2 + Horizontal = {-1.75, 2.75}, --random value between the 2 + Shake = 3, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 1159, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 0.56 +} +SWEP.Bullet = { + Damage = {95, 35}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 15, --in meters, damage scales within this distance + DropOffStartRange = 12, + Range = 40, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 6, --the amount of bullets to fire + PhysicsMultiplier = 1.7, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.9, --how much damaged is multipled by when leaving a surface. + MaxCount = 12, --how many times the bullet can penetrate. + Thickness = 16, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(5,97,-90), + Pos = Vector(8,-5.35,-1.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 2.75, + KickMultiplier = 1.3, + AimKickMultiplier = 0.45 +} + +SWEP.Shell = "mwb_shelleject_12g" + +function SWEP:PrimaryAttack() + local clip = self:Clip1() + weapons.Get(self.Base).PrimaryAttack(self) + + if (clip != self:Clip1()) then + self:SetBarrel(self:GetBarrel() + 1) + + if (self:GetBarrel() >= 2 && self:Clip1() > 0) then + self:AddFlag("Rechambered") + self:SetBarrel(0) + else + self:RemoveFlag("Rechambered") + end + end +end + +function SWEP:EndReload() + if (self:Clip1() <= 0) then --dont want to cancel reload if im out of ammo + return + end + + if (self:Clip1() == 1) then + self:SetBarrel(0) + end + + weapons.Get(self.Base).EndReload(self) +end + +function SWEP:ChooseReloadAnim() + local maxClip = self.Primary.ClipSize + + if (self:HasFlag("Rechambered")) then + maxClip = self:GetMaxClip1WithChamber() + end + + if (self:Clip1() == maxClip - 2 || self:Ammo1() == 2) then + return "Reload_Start" + end + + if (self:Clip1() % 2 != 0 || self:Ammo1() == 1 || self:Clip1() == maxClip - 1) then + return "Reload_Start_Onebullet" + end + + return "Reload_Start" +end + +function SWEP:Initialize() + weapons.Get(self.Base).Initialize(self) + self:SetBarrel(2) +end + +function SWEP:GetMaxClip1WithChamber() + local extra = 2 + + if (self:GetBarrel() == 0) then + extra = 1 + end + + if (!self.CanChamberRound) then + extra = 0 + end + + return self:GetMaxClip1() + extra +end + +function SWEP:Reload(fromFallback) + local bWasReloading = self:HasFlag("Reloading") + weapons.Get(self.Base).Reload(self, fromFallback) + + if (self:HasFlag("Reloading") && !bWasReloading) then + local anim = self:ChooseReloadAnim() + self:SetNextMagTime(CurTime() + self:GetAnimLength(anim, self.Animations[anim].MagLength)) + self:RemoveFlag("MagInserted") + + if (self.Animations[anim].MagLength2 != nil) then + self:SetNextMagTime2(CurTime() + self:GetAnimLength(anim, self.Animations[anim].MagLength2)) + self:SetHasFilledMag2(false) + else + self:SetHasFilledMag2(true) + end + end +end + +function SWEP:SetupDataTables() + weapons.Get(self.Base).SetupDataTables(self) + + self:CustomNetworkVar("Float", "NextMagTime2") + self:CustomNetworkVar("Bool", "HasFilledMag2") + self:CustomNetworkVar("Int", "Barrel") +end + +function SWEP:OnRestore() + weapons.Get(self.Base).OnRestore(self) + + self:SetNextMagTime2(0) + self:SetHasFilledMag2(true) +end + +function SWEP:ReloadBehaviourModule() + if (self:HasFlag("Reloading")) then + local maxClip = self.Primary.ClipSize + + if (self:HasFlag("Rechambered") && self.CanChamberRound) then + maxClip = self:GetMaxClip1WithChamber() + end + + if (CurTime() > self:GetNextMagTime() && !self:HasFlag("MagInserted")) then + self:SetClip1(self:Clip1() + 1) + self:GetOwner():SetAmmo(self:Ammo1() - 1, self:GetPrimaryAmmoType()) + + self:AddFlag("MagInserted") + + if ((self:Clip1() >= maxClip || self:GetOwner():GetAmmoCount(self:GetPrimaryAmmoType()) <= 0) && !self:GetHasFilledMag2()) then + self:EndReload() + return + end + end + + if (CurTime() > self:GetNextMagTime2() && !self:GetHasFilledMag2()) then + self:SetClip1(self:Clip1() + 1) + self:GetOwner():SetAmmo(self:Ammo1() - 1, self:GetPrimaryAmmoType()) + + self:SetHasFilledMag2(true) + end + + if (CurTime() > self:GetNextReloadTime()) then + if (self:Clip1() >= maxClip || self:GetOwner():GetAmmoCount(self:GetPrimaryAmmoType()) <= 0) then + self:EndReload() + return + end + + self:PlayViewModelAnimation("Reload_Loop") + + self:SetNextReloadTime(CurTime() + self:GetAnimLength("Reload_Loop")) + self:SetNextMagTime(CurTime() + self:GetAnimLength("Reload_Loop", self.Animations["Reload_Loop"].MagLength)) + self:SetNextMagTime2(CurTime() + self:GetAnimLength("Reload_Loop", self.Animations["Reload_Loop"].MagLength2)) + self:RemoveFlag("MagInserted") + self:SetHasFilledMag2(false) + + self:PlayerGesture(GESTURE_SLOT_ATTACK_AND_RELOAD, self.HoldTypes[self.HoldType].Reload) + end + end +end \ No newline at end of file diff --git a/lua/weapons/mg_falima/animations.lua b/lua/weapons/mg_falima/animations.lua new file mode 100644 index 0000000..17fb091 --- /dev/null +++ b/lua/weapons/mg_falima/animations.lua @@ -0,0 +1,447 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.7, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falima.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.75, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falima.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.56, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.1")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.2")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.3")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.4")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.5")) end}, + {Time = 1.2, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.6, + Fps = 30, + MagLength = 1.8, + NextSequence = "Idle", + Events = { + {Time = 0.16, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_01")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_02")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_03")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_04")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_05")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_055")) end}, + {Time = 2.06, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_06")) end}, + {Time = 2.4, Callback = function(self) self:EnableGrip() end}, + {Time = 2.4, Callback = function(self) end} + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_mmag"}, + Length = 2.6, + Fps = 30, + MagLength = 1.8, + NextSequence = "Idle", + Events = { + {Time = 0.16, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_01")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_02")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_03")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_04")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_05")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_055")) end}, + {Time = 2.06, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_06")) end}, + {Time = 2.4, Callback = function(self) self:EnableGrip() end}, + {Time = 2.4, Callback = function(self) end} + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_xmag"}, + Length = 2.6, + Fps = 30, + MagLength = 1.8, + NextSequence = "Idle", + Events = { + {Time = 0.16, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_01")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_02")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_03")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_04")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_05")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_055")) end}, + {Time = 2.06, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_06")) end}, + {Time = 2.4, Callback = function(self) self:EnableGrip() end}, + {Time = 2.4, Callback = function(self) end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_02")) end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_03")) end}, + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_04")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_045")) end}, + {Time = 1.56, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_05")) end}, + {Time = 1.63, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_mmag_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_02")) end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_03")) end}, + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_04")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_045")) end}, + {Time = 1.56, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_05")) end}, + {Time = 1.63, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_02")) end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_03")) end}, + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_04")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_045")) end}, + {Time = 1.56, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_fast_05")) end}, + {Time = 1.63, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.45, + Fps = 30, + MagLength = 2.15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_01")) end}, + {Time = 0.5, Callback = function(self) self:DisableGrip() end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_02")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_03")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_04")) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-20, 10, 40)) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_05")) end}, + {Time = 1.83, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_06")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_07")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_08")) end}, + {Time = 2.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_09")) end}, + {Time = 2.83, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_10")) end}, + {Time = 2.96, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_11")) end}, + {Time = 3.23, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_xmag"}, + Length = 3.45, + Fps = 30, + MagLength = 2.15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_01")) end}, + {Time = 0.5, Callback = function(self) self:DisableGrip() end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_02")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_03")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_04")) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-20, 10, 40)) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_05")) end}, + {Time = 1.83, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_06")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_07")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_08")) end}, + {Time = 2.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_09")) end}, + {Time = 2.83, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_10")) end}, + {Time = 2.96, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_11")) end}, + {Time = 3.23, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.6, + Fps = 30, + MagLength = 1.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_01")) end}, + {Time = 0.47, Callback = function(self) self:DisableGrip() end}, + {Time = 0.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_03")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_04")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_05")) end}, + {Time = 1.35, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-15, 10, 40)) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_06")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_07")) end}, + {Time = 1.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_08")) end}, + {Time = 2.16, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_09")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_10")) end}, + {Time = 2.46, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 2.6, + Fps = 30, + MagLength = 1.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_01")) end}, + {Time = 0.47, Callback = function(self) self:DisableGrip() end}, + {Time = 0.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_03")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_04")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_05")) end}, + {Time = 1.35, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-15, 10, 40)) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_06")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_07")) end}, + {Time = 1.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_08")) end}, + {Time = 2.16, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_09")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falima_reload_empty_fast_10")) end}, + {Time = 2.46, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falima.fire.last")) end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.225, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.asierra12.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.225, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.asierra12.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.asierra12.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.asierra12.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falima.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.falima.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.falima.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.falima.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.falima.inspect.05")) end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_falima/customization.lua b/lua/weapons/mg_falima/customization.lua new file mode 100644 index 0000000..ea20160 --- /dev/null +++ b/lua/weapons/mg_falima/customization.lua @@ -0,0 +1,925 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.falima.fire.suppressed") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_falima_perk_soh", "attachment_vm_ar_falima_perk_fullauto", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_ar_falima_barrel", "attachment_vm_ar_falima_barlong", "attachment_vm_ar_falima_barsmg"}, + + {"attachment_vm_ar_falima_stock", "attachment_vm_ar_falima_stockl", "att_vm_stock_heavy01", + "att_vm_stock_heavy02", "att_vm_stock_light01", "att_vm_stock_medium01", "att_vm_stock_no"}, + + {"attachment_vm_ar_falima_mag", "attachment_vm_ar_falima_mmags", "attachment_vm_ar_falima_xmags"}, + + {"attachment_vm_ar_falima_forend"}, + + {"attachment_vm_ar_falima_receiver"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_ar_falima_laser01", "attachment_vm_ar_falima_laser02", "attachment_vm_ar_falima_laser03"}, + + {"att_grip", "attachment_vm_ar_falima_angledgrip01", "attachment_vm_ar_falima_angledgrip02", "attachment_vm_ar_falima_stubbygrip01", + "attachment_vm_ar_falima_stubbygrip02", "attachment_vm_ar_falima_vertgrip01", "attachment_vm_ar_falima_vertgrip02", + "attachment_vm_ar_falima_vertgrip03", "attachment_vm_ar_falima_bipodgrip"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_falima_barrel", +-- }, +-- { +-- Key = "attachment_vm_ar_falima_barlong", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falima_barsmg", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser_mount"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0,0,0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2.5, 0, -0.5) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser_mount"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0,0,0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2.5, 0, -0.5) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser_mount"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0,0,0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2.5, 0, -0.5) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.78) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.72) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.72) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.046, 0.014, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.99) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.03, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 1, -0.89) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.74) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.012, 0.016, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.126, 0, -1.07) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 0, -1.174) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 0, -1.065) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.015, 0, -1.0015) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0145, 0, -0.575) +-- self.HybridAimAngles = Angle(-0.05, 0.04, -45) +-- self.HybridAimPos = Vector(-1.77, 0, -0.1) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.012, 0, -0.557) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.007, 3, -0.947) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 3, -0.88) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 0, -0.712) +-- self.HybridAimAngles = Angle(-0.02, 0.025, 0) +-- self.HybridAimPos = Vector(0,0,-1.95) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 0, -0.643) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(-0.02, 0.03, -45) +-- self.HybridAimPos = Vector(-1.58, 0, 0.15) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_ar_falima_barrel_muzzle", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, -4.5, 0), Angle()}, +-- [2] = {Vector(0, -3, 0), Angle()}, +-- [3] = {Vector(0, -7, 0), Angle()} +-- } +-- } +-- }, +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1, 0), Angle()}, +-- [3] = {Vector(0, -2.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_ar_falima_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falima_stockl", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["tag_stock"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_heavy", +-- Bodygroups = { +-- ["tag_stock"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falima_nostock", +-- Bodygroups = { +-- ["tag_stock"] = 1, +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_falima_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falima_mmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falima_xmags", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_falima/shared.lua b/lua/weapons/mg_falima/shared.lua new file mode 100644 index 0000000..b0382c9 --- /dev/null +++ b/lua/weapons/mg_falima/shared.lua @@ -0,0 +1,168 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("mw_fas2_muzzleflash_suppressed") +PrecacheParticleSystem("mw_ins2_shell_eject") +PrecacheParticleSystem("mw_fas2_muzzleflash_ar_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_falima", "VGUI/entities/mg_falima", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_falima") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "FAL" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_falima.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_falima.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("mw19.falima.fire.first"), + ReleasedSound = Sound("mw19.falima.fire.disconnector"), + Time = 0.025 +} + +SWEP.Primary.Sound = Sound("mw19.falima.fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 20 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 650 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_br1.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Semi Auto", + OnSet = function(self) + return "Firemode_Semi" + end + }, + + [2] = { + Name = "3rnd Burst", + OnSet = function(self) + self.Primary.BurstRounds = 3 + self.Primary.BurstDelay = 0.2 + + return "Firemode_Auto" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "mw_fas2_muzzleflash_ar_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.57, --accuracy while hip + Ads = 0.03, --accuracy while aiming + Increase = 0.12, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.075, --multiply the increase value by this amount while aiming + Max = 2.2, --the cone size will not go beyond this size + Decrease = 0.8, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 95235 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 3.5}, --random value between the 2 + Horizontal = {-2, 2}, --random value between the 2 + Shake = 1, --camera shake + AdsMultiplier = 0.25, --multiply the values by this amount while aiming + Seed = 67498 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {50, 20}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 20, --in meters, damage will start dropping off after this range + EffectiveRange = 65, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.95, --how much damaged is multipled by when leaving a surface. + MaxCount = 6, --how many times the bullet can penetrate. + Thickness = 30, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 95, -90), + Pos = Vector(3,-5,-3) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 0, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(3, 0, 0), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1.15, + KickMultiplier = 2, + AimKickMultiplier = 0.15 +} + +SWEP.Shell = "mwb_shelleject_7625x" + diff --git a/lua/weapons/mg_falpha/animations.lua b/lua/weapons/mg_falpha/animations.lua new file mode 100644 index 0000000..48f872d --- /dev/null +++ b/lua/weapons/mg_falpha/animations.lua @@ -0,0 +1,500 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falima.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.75, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falima.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Holster_Railcrust"] = { + Sequences = {"holster_railcrust"}, + Length = 0.75, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falima.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.35, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.1")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.2")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.3")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.4")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.5")) end}, + {Time = 1.1, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Equip_Railcrust"] = { + Sequences = {"draw_first_railcrust"}, + Length = 1.35, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.1")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.2")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.3")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.4")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("mw19.falima.equip.5")) end}, + {Time = 1.1, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.3, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_01")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_02")) end}, + {Time = 1.16, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_03")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_04")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_05")) end}, + {Time = 2.16, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.7, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + --{Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, Always make sure to have same amount of events as previous sequence! + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_fast_02")) end}, + {Time = 0.56, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_fast_03")) end}, + {Time = 0.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_fast_04")) end}, + {Time = 1.56, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_fast_05")) end}, + {Time = 1.6, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Railcrust"] = { + Sequences = {"Reload_Railcrust"}, + Length = 2.3, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_01")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_02")) end}, + {Time = 1.16, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_03")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_04")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_05")) end}, + {Time = 2.16, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Fast_Railcrust"] = { + Sequences = {"Reload_Fast_Railcrust"}, + Length = 1.7, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + --{Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, Always make sure to have same amount of events as previous sequence! + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_fast_02")) end}, + {Time = 0.56, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_fast_03")) end}, + {Time = 0.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_fast_04")) end}, + {Time = 1.56, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_fast_05")) end}, + {Time = 1.6, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.8, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_02")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 10, 40)) end}, + {Time = 1.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_03")) end}, + {Time = 2.06, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_04")) end}, + {Time = 2.63, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_Railcrust"] = { + Sequences = {"reload_empty_railcrust"}, + Length = 2.8, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_02")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 10, 40)) end}, + {Time = 1.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_03")) end}, + {Time = 2.06, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_04")) end}, + {Time = 2.63, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_xmag2"}, + Length = 2.8, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_02")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 10, 40)) end}, + {Time = 1.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_03")) end}, + {Time = 2.06, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_04")) end}, + {Time = 2.63, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag2"}, + Length = 2.8, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_02")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 10, 40)) end}, + {Time = 1.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_03")) end}, + {Time = 2.06, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_04")) end}, + {Time = 2.63, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.05, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-15, 10, 40)) end}, + {Time = 0.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_03")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_04")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_05")) end}, + {Time = 1.96, Callback = function(self) self:EnableGrip() end}, + {Time = 2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_06")) end}, + } + }, + + ["Reload_Empty_Fast_Railcrust"] = { + Sequences = {"Reload_Empty_Fast_Railcrust"}, + Length = 2.05, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-15, 10, 40)) end}, + {Time = 0.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_03")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_04")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_05")) end}, + {Time = 1.96, Callback = function(self) self:EnableGrip() end}, + {Time = 2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_06")) end}, + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_xmag2_fast"}, + Length = 2.05, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-15, 10, 40)) end}, + {Time = 0.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_03")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_04")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_05")) end}, + {Time = 1.96, Callback = function(self) self:EnableGrip() end}, + {Time = 2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_06")) end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 2.05, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-15, 10, 40)) end}, + {Time = 0.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_03")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_04")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_05")) end}, + {Time = 1.96, Callback = function(self) self:EnableGrip() end}, + {Time = 2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_falpha_reload_empty_fast_06")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.225, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falpha.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.225, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falpha.ads.down")) end} + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end} + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.767, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_on"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falpha.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_off"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falpha.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.falpha.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.falpha.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.falpha.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.falpha.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.falpha.inspect.05")) end}, + {Time = 4.2, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_falpha/customization.lua b/lua/weapons/mg_falpha/customization.lua new file mode 100644 index 0000000..526b080 --- /dev/null +++ b/lua/weapons/mg_falpha/customization.lua @@ -0,0 +1,927 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.falpha.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_receiver", "attachment_vm_ar_falpha_railcust"}, + + {"att_perk", "attachment_vm_ar_falpha_perk_soh", "attachment_vm_ar_falpha_perk_burst", + "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_ar_falpha_barrel", "attachment_vm_ar_falpha_barlong2", "attachment_vm_ar_falpha_barrellong_alt", "attachment_vm_ar_falpha_barshort"}, + + {"attachment_vm_ar_falpha_stock", "attachment_vm_ar_falpha_stock_light", "attachment_vm_ar_falpha_stock_stable", "attachment_vm_ar_falpha_stock_tactical_v1"}, + + {"attachment_vm_ar_falpha_mag", "attachment_vm_ar_falpha_xmags", "attachment_vm_ar_falpha_xmags2"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west02", "att_vm_hybrid_west02_thermal", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + + {"att_laser", "attachment_vm_ar_falpha_laser01", "attachment_vm_ar_falpha_laser02", "attachment_vm_ar_falpha_laser03"}, + + {"att_grip", "attachment_vm_ar_falpha_angledgrip01", "attachment_vm_ar_falpha_angledgrip02", "attachment_vm_ar_falpha_stubbygrip01", + "attachment_vm_ar_falpha_stubbygrip02", "attachment_vm_ar_falpha_vertgrip01", "attachment_vm_ar_falpha_vertgrip02", + "attachment_vm_ar_falpha_vertgrip03", "attachment_vm_ar_falpha_bipodgrip"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_falpha_barrel", +-- }, +-- { +-- Key = "attachment_vm_ar_falpha_barlong2", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falpha_barshort", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falpha_barrellong_alt", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser_mount"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0,0,0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-3.5, 0, 1.5) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser_mount"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0,0,0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.2, 0.07, -45) +-- self.LaserAimPos = Vector(-3.5, 0, 1.5) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser_mount"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0,0,0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.03, -45) +-- self.LaserAimPos = Vector(-3.5, 0, 1.5) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -0.145) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -0.105) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -0.105) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 1, -0.275) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.04, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -0.45) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -0.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 0, -0.31) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.04, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.015, 1, -0.455) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.09, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.129) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.02, 1, -0.27) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.012, 0.03, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.126, 2.5, -0.4575) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 1, -0.561) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 2, -0.453) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0158, 2, -0.391) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.015, 2, 0.0381) +-- self.HybridAimAngles = Angle(-0.05, 0.02, -45) +-- self.HybridAimPos = Vector(-1.78, 0, 0.5) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.012, 2, 0.0535) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 3, -0.326) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.012, 3, -0.26) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 1.5, -0.1) +-- self.HybridAimAngles = Angle(-0.02, 0.025, 0) +-- self.HybridAimPos = Vector(0,0,-1.3) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0, -0.368) +-- self.HybridAimAngles = Angle(-0.02, 0.03, 0) +-- self.HybridAimPos = Vector(0, 0, -0.36) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0, -0.368) +-- self.HybridAimAngles = Angle(-0.02, 0.03, 0) +-- self.HybridAimPos = Vector(0, 0, -0.36) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0114, 2.5, -0.031) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(-0.02, 0.03, -45) +-- self.HybridAimPos = Vector(-1.58, 0, 0.75) +-- end +-- }, +-- }, +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_ar_falpha_barrel_muzzle", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, -10.5, 0), Angle()}, +-- [2] = {Vector(0, -10.5, 0), Angle()}, +-- [3] = {Vector(0, -11.5, 0), Angle()}, +-- [4] = {Vector(0, -6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, -2.25, 0), Angle()}, +-- [4] = {Vector(0, 3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 7, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_falpha_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falpha_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falpha_xmags2", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 8, +-- { +-- Key = "attachment_vm_ar_falpha_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falpha_stock_light", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falpha_stock_stable", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_falpha_stock_tactical_v1", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_falpha/shared.lua b/lua/weapons/mg_falpha/shared.lua new file mode 100644 index 0000000..5603379 --- /dev/null +++ b/lua/weapons/mg_falpha/shared.lua @@ -0,0 +1,171 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("mw_fas2_muzzleflash_suppressed") +PrecacheParticleSystem("mw_ins2_shell_eject") +PrecacheParticleSystem("mw_fas2_muzzleflash_ar_smoke_barrel") +include("animations.lua") +include("customization.lua") + + +if CLIENT then + killicon.Add( "mg_falpha", "VGUI/entities/mg_falpha", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_falpha") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vert_good_offset"} + +SWEP.PrintName = "FR 5.56" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_falpha.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_falpha.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("mw19.falpha.fire.first"), + ReleasedSound = Sound("mw19.falpha.fire.disconnector"), + Time = 0.025 +} + +SWEP.Primary.Sound = Sound("mw19.falpha.fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 1100 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Automatic", + OnSet = function(self) + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + self.Primary.BurstRounds = 1 + -- self.Primary.BurstDelay = 0.15 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "mw_fas2_muzzleflash_ar_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 45, + TemperatureThreshold = 125, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.31, --accuracy while hip + Ads = 0.09, --accuracy while aiming + Increase = 0.055, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.21, --multiply the increase value by this amount while aiming + Max = 1.15, --the cone size will not go beyond this size + Decrease = 0.7, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 48765 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.4, 0.85}, --random value between the 2 + Horizontal = {-0.8, 1.3}, --random value between the 2 + Shake = 1.75, --camera shake + AdsMultiplier = 0.25, --multiply the values by this amount while aiming + Seed = 489765, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1 +} + +SWEP.Bullet = { + Damage = {21, 12}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 15, --in meters, damage will start dropping off after this range + EffectiveRange = 35, --in meters, damage scales within this distance + Range = 180, + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.7, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 14, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 95, -90), + Pos = Vector(-1.5,-7,-1) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 2, 2), Angles = Angle(30, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(3, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.1, + KickMultiplier = 0.2, + AimKickMultiplier = 0.3 +} + +SWEP.Shell = "mwb_shelleject_556" + diff --git a/lua/weapons/mg_g3a3/animations.lua b/lua/weapons/mg_g3a3/animations.lua new file mode 100644 index 0000000..d41c79e --- /dev/null +++ b/lua/weapons/mg_g3a3/animations.lua @@ -0,0 +1,360 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_raise")) end}, + {Time = 0.25, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.75, + Fps = 30, + Events = { + {Time = 0.5, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_down")) end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 2.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.start")) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("mw19.g3a3.bolt.charge")) end}, + {Time = 1.15, Callback = function(self) self:DoSound(Sound("mw19.g3a3.bolt.back")) end}, + {Time = 1.65, Callback = function(self) self:DoSound(Sound("mw19.g3a3.bolt.forward")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.end")) end}, + {Time = 1.9, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.3, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.start")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magout")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.1")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.2")) end}, + {Time = 1.93, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.end")) end}, + {Time = 2.12, Callback = function(self) self:EnableGrip() end}, + {Time = 1.95, Callback = function(self) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.7, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.startF")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magoutF")) end}, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.1F")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.2F")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.endF")) end}, + {Time = 1.33, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.3, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.start")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magout")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.1")) end}, + {Time = 1.56, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.2")) end}, + {Time = 1.93, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.end")) end}, + {Time = 1.95, Callback = function(self) self:EnableGrip() end}, + {Time = 1.95, Callback = function(self) end}, + } + }, + + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.startF")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magoutF")) end}, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.1F")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.2F")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.endF")) end}, + {Time = 1.33, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.3, + Fps = 30, + MagLength = 2.1, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.start.empty")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.bolt.charge")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magout.empty")) end}, + {Time = 1.34, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-40, 0, 40)) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.1.empty")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.2.empty")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.bolt.slap")) end}, + {Time = 2.95, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.end.empty")) end}, + {Time = 3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Carbine"] = { + Sequences = {"reload_empty_carbine"}, + Length = 3.3, + Fps = 30, + MagLength = 2.1, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.start.empty")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.bolt.charge")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magout.empty")) end}, + {Time = 1.34, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-40, 0, 40)) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.1.empty")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.2.empty")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.bolt.slap")) end}, + {Time = 2.95, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.end.empty")) end}, + {Time = 2.9, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.5, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.start.emptyF")) end}, + {Time = 0.16, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.bolt.charge")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magout.emptyF")) end}, + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.1.emptyF")) end}, + {Time = 1.45, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.magin.2.emptyF")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.bolt.slapF")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("mw19.g3a3.reload.end.emptyF")) end}, + {Time = 2.33, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.g3a3.ads.up")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.g3a3.ads.down")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop" --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.g3a3.semi.off")) end}, + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.g3a3.semi.on")) end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DoSound(Sound("mw19.g3a3.inspect.1")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.36, Callback = function(self) self:DoSound(Sound("mw19.g3a3.inspect.2")) end}, + {Time = 2.25, Callback = function(self) self:DoSound(Sound("mw19.g3a3.inspect.3")) end}, + {Time = 4.1, Callback = function(self) self:DoSound(Sound("mw19.g3a3.inspect.4")) end}, + {Time = 4.1, Callback = function(self) self:DoSound(Sound("mw19.g3a3.inspect.5")) end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.75, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.75, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_g3a3/customization.lua b/lua/weapons/mg_g3a3/customization.lua new file mode 100644 index 0000000..28b8c7a --- /dev/null +++ b/lua/weapons/mg_g3a3/customization.lua @@ -0,0 +1,846 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.g3a3.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_g3a3_perk_soh", "att_perk_fmj"}, + + {"attachment_vm_ar_g3a3_magazine_default"}, + + {"attachment_vm_ar_g3a3_barrel_default", "attachment_vm_ar_g3a3_barrel_sniper", "attachment_vm_ar_g3a3_barrel_carbine", + "attachment_vm_ar_g3a3_barrel_cqc"}, + + {"attachment_vm_ar_g3a3_pgrip_default", "attachment_vm_ar_g3a3_pgrip_sniper"}, + + {"attachment_vm_ar_g3a3_stock_default", "attachment_vm_ar_g3a3_stock_fixed", "attachment_vm_ar_g3a3_stock_foldable", + "attachment_vm_ar_g3a3_stock_no", "attachment_vm_ar_g3a3_stock_retractable", "attachment_vm_ar_g3a3_stock_sniper"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", 'att_vm_silencer06'}, + + {"attachment_vm_ar_g3a3_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_ar_g3a3_laser01_cylinder", "attachment_vm_ar_g3a3_laser02_cylinder", + "attachment_vm_ar_g3a3_laser03_cylinder"}, + + {"att_grip", "attachment_vm_ar_g3a3_angledgrip01", "attachment_vm_ar_g3a3_angledgrip02", "attachment_vm_ar_g3a3_stubbygrip01", + "attachment_vm_ar_g3a3_stubbygrip02", "attachment_vm_ar_g3a3_vertgrip01", "attachment_vm_ar_g3a3_vertgrip02", + "attachment_vm_ar_g3a3_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { + +-- ["Laser"] = { +-- Slot = 4, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- Bodygroups = { +-- ["laserrail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.5, 0.3, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- Bodygroups = { +-- ["laserrail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.5, 0.3, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- Bodygroups = { +-- ["laserrail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.5, 0.3, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 2, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.8) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.75) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.75) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.1) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.05) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.1, 0, -1.14) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -1.25) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -1.125) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -1.065) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0, -0.64) + +-- self.HybridAimAngles = Angle(-0.05, 0.1, -45) +-- self.HybridAimPos = Vector(-1.785, 0, -0.145) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -0.63) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -1.01) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -0.94) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0, 0, -0.78) + +-- self.HybridAimPos = Vector(-0, 0, -2) +-- self.HybridAimAngles = Angle(-0, 0, -0) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -0.715) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(-0.1, 0.1, -45) +-- self.HybridAimPos = Vector(-1.55, 0, 0.125) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["muzzle"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 5, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["foregrip_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, -5, -0.3), +-- Angles = Angle(0, 0, -180), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["foregrip_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, -5, -0.3), +-- Angles = Angle(0, 0, -180), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["foregrip_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, -5, -0.3), +-- Angles = Angle(0, 0, -180), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["foregrip_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, -5, -0.3), +-- Angles = Angle(0, 0, -180), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["foregrip_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, -5, -0.3), +-- Angles = Angle(0, 0, -180), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 6, +-- { +-- Key = "attachment_vm_magazine_g3_custom", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_magazine_ext_g3_custom", +-- Stats = function(self) +-- end +-- }, +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_g3a3/shared.lua b/lua/weapons/mg_g3a3/shared.lua new file mode 100644 index 0000000..693aeff --- /dev/null +++ b/lua/weapons/mg_g3a3/shared.lua @@ -0,0 +1,166 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_g3a3", "VGUI/entities/mg_g3a3", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_g3a3") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_vert_offset", "grip_vert_pro_offset", "grip_cqc", "grip_sniper"} +SWEP.PrintName = "G3A3" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_gamma3.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_gamma3.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("mw19.g3a3.fire") +-- SWEP.Trigger = { +-- PressedSound = Sound("mw19.scharlie.fire.first"), +-- ReleasedSound = Sound("mw19.scharlie.disconnector"), +-- Time = 0.1 +-- } +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 20 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 600 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "AC_muzzle_rifle", + ["MuzzleFlash_Suppressed"] = "AC_muzzle_pistol_suppressed", + ["Ejection"] = "AC_muzzle_pistol_ejection", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_LMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.46, --accuracy while hip + Ads = 0.06, --accuracy while aiming + Increase = 0.13, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.64, --the cone size will not go beyond this size + Decrease = 0.8, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6215654 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1.25, 2.7}, --random value between the 2 + Horizontal = {0.57, 1.36}, --random value between the 2 + Shake = 1.3, --camera shake + AdsMultiplier = 0.3, --multiply the values by this amount while aiming + Seed = 213654 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {47, 33}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 650, --in meters, damage scales within this distance + DropOffStartRange = 20, + Range = 1500, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + Penetration = { + DamageMultiplier = 0.8, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 17, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(180,180,0), + Pos = Vector(7,-2,-1.6) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -3, -3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 2, + KickMultiplier = 0.5, + AimKickMultiplier = 0.3 +} + +SWEP.Shell = "mwb_shelleject_7625x" + diff --git a/lua/weapons/mg_galima/animations.lua b/lua/weapons/mg_galima/animations.lua new file mode 100644 index 0000000..9a2f1a2 --- /dev/null +++ b/lua/weapons/mg_galima/animations.lua @@ -0,0 +1,497 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.galima.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.5, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.galima.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_raise_first_04")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.75, Callback = function(self) self:EnableGrip() end}, + {Time = 1.033, Callback = function(self) self:EnableGrip() end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_raise_first_03")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_raise_first_02")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_raise_first_01")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.65, + Fps = 30, + MagLength = 2, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.3, Callback = function(self) self:EnableGrip() end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_06")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_05")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_04")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_03")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_02")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_01")) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.65, + Fps = 30, + MagLength = 1.12, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_fast_01")) end}, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0.05, Callback = function(self) self:DisableGrip() end}, + {Time = 1.267, Callback = function(self) self:EnableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_fast_04")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_fast_03")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_fast_02")) end}, + } + }, + + ["reload_smag"] = { + Sequences = {"reload_smag"}, + Length = 2, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_05")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_04")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_03")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_01")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_02")) end}, + } + }, + + ["reload_smag_fast"] = { + Sequences = {"reload_smag_fast"}, + Length = 1.4, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.233, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_fast_01")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_fast_03")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_fast_05")) end}, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_fast_04")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_fast_06")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_fast_02")) end}, + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.8, + Fps = 30, + MagLength = 2.15, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_06")) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_07")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_04")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_05")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_02")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_03")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_01")) end}, + {Time = 2.5, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.45, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_fast_02")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_fast_03")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_fast_01")) end}, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_fast_06")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_fast_04")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_fast_05")) end}, + {Time = 1.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.15, + Fps = 30, + MagLength = 1.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.9, Callback = function(self) self:EnableGrip() end}, + {Time = 2.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_07")) end}, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_06")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_05")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_03")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_02")) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_04")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.15, + Fps = 30, + MagLength = 1.12, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.055, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_fast_01")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_fast_03")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_fast_02")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_fast_05")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_empty_fast_04")) end}, + } + }, + + ["reload_empty_smag"] = { + Sequences = {"reload_empty_smag"}, + Length = 2.7, + Fps = 30, + MagLength = 1.45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_empty_03")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_empty_02")) end}, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_empty_01")) end}, + {Time = 2.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_empty_06")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_empty_05")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_empty_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.5, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_empty_smag_fast"] = { + Sequences = {"reload_empty_smag_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_empty_fast_01")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_empty_fast_03")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_empty_fast_02")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_empty_fast_05")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_smags_empty_fast_04")) end}, + {Time = 1.85, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 3.55, + Fps = 30, + MagLength = 2.25, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_055")) end}, + {Time = 3.25, Callback = function(self) self:EnableGrip() end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_02")) end}, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_01")) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_06")) end}, + {Time = 3.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_07")) end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_04")) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_05")) end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_fast_06")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_fast_04")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_fast_05")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_fast_02")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_fast_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_reload_xmags_empty_fast_01")) end}, + {Time = 1.85, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike4.fire.last")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.galima.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.galima.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.galima.fire.switch.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.galima.fire.switch.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 4.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_inspect_05")) end}, + {Time = 3.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_inspect_04")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_inspect_01")) end}, + {Time = 2.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_inspect_03")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_galima_inspect_02")) end}, + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end} + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.7, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_galima/customization.lua b/lua/weapons/mg_galima/customization.lua new file mode 100644 index 0000000..b82ef92 --- /dev/null +++ b/lua/weapons/mg_galima/customization.lua @@ -0,0 +1,1056 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.mike4.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_galima_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_ar_galima_barrel", "attachment_vm_ar_galima_barshort","attachment_vm_ar_galima_barlight", + "attachment_vm_ar_galima_barlong"}, + + {"attachment_vm_ar_galima_stock", "attachment_vm_ar_galima_stockh", + "attachment_vm_ar_galima_stockno", "attachment_vm_ar_galima_stocks", "attachment_vm_ar_galima_stockskel", "attachment_vm_ar_galima_stocksn"}, + + {"attachment_vm_ar_galima_mag", "attachment_vm_ar_galima_smag", "attachment_vm_ar_galima_xmag"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06",}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_ar_galima_laser01", "attachment_vm_ar_galima_laser02", + "attachment_vm_ar_galima_laser03"}, + + {"att_grip", "attachment_vm_ar_galima_bipodgrip", "attachment_vm_ar_galima_angledgrip01", "attachment_vm_ar_galima_angledgrip02", "attachment_vm_ar_galima_stubbygrip01", + "attachment_vm_ar_galima_stubbygrip02", "attachment_vm_ar_galima_vertgrip01", "attachment_vm_ar_galima_vertgrip02", + "attachment_vm_ar_galima_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_galima_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_galima_barlight", +-- Bodygroups = { +-- ["tag_tip"] = 2, +-- ["tag_guard"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_galima_barlong", +-- Bodygroups = { +-- ["tag_tip"] = 4, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_galima_barshort", +-- Bodygroups = { +-- ["tag_tip"] = 6, +-- ["tag_guard"] = 3 +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.75) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.85) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.03, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.735) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.07, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.035, 0.025, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.85) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.15, 0.025, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.115, 0, -1.07) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.17) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.065) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.57) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- self.HybridAimAngles = Angle(-0.04, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 0, -0.075) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.555) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -0.95) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.03, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -0.88) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.715) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-1.9) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.975) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.1, 0) +-- self.HybridAimAngles = Angle(-0.015, 0.05, 0) +-- self.HybridAimPos = Vector(0, 0, -0.975) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.975) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.1, 0) +-- self.HybridAimAngles = Angle(-0.015, 0.05, 0) +-- self.HybridAimPos = Vector(0, 0, -0.975) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.64) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(-0.04, 0.02, -45) +-- self.HybridAimPos = Vector(-1.55, 0, 0.15) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 5.75, 0), Angle()}, +-- [4] = {Vector(0, -4.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- self.Animations.reload_smag = self.Animations.reload_smag_fast +-- self.Animations.reload_empty_smag = self.Animations.reload_empty_smag_fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_ar_galima_stock", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_galima_stockl", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_galima_stockh", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_galima_stocks", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_galima_stockskel", +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_galima_stocksn", +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_galima_stockno", +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, -1.5, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, -1.5, 0), Angle()}, +-- [4] = {Vector(0, -1.5, -0.175), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()}, +-- [6] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_galima_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_galima_smag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_galima_xmag", +-- Stats = function(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_galima/shared.lua b/lua/weapons/mg_galima/shared.lua new file mode 100644 index 0000000..b64e8ad --- /dev/null +++ b/lua/weapons/mg_galima/shared.lua @@ -0,0 +1,170 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_galima", "VGUI/entities/mg_galima", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_galima") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vert_pro_offset"} + +SWEP.PrintName = "CR-56 AMAX" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_galima.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_galima.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.galima.fire.first"), + ReleasedSound = Sound("mw19.galima.fire.disconnector"), + Time = 0.025 +} + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("mw19.galima.fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 680 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR4.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.53, --accuracy while hip + Ads = 0.035, --accuracy while aiming + Increase = 0.085, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.7, --the cone size will not go beyond this size + Decrease = 0.24, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 56487 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 1.5}, --random value between the 2 + Horizontal = {-1.75, 1.75}, --random value between the 2 + Shake = 1.15, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 8778456, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1 +} +SWEP.Bullet = { + Damage = {33, 14}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 16, --in meters, damage will start dropping off after this range + EffectiveRange = 40, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.74, --how much damaged is multipled by when leaving a surface. + MaxCount = 4, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 6.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 95, -90), + Pos = Vector(4,-4,-2) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.5, + KickMultiplier = 0.35, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_545" + +DEFINE_BASECLASS("mg_base") \ No newline at end of file diff --git a/lua/weapons/mg_glock/animations.lua b/lua/weapons/mg_glock/animations.lua new file mode 100644 index 0000000..184e522 --- /dev/null +++ b/lua/weapons/mg_glock/animations.lua @@ -0,0 +1,376 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30 + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.3, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Drop")) end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Raise_First_Up")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Raise_First_Slide")) end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 1.45, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.25, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert")) end}, + {Time = 0.95, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End")) end} + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_xmaglrg"}, + Length = 1.45, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.25, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert")) end}, + {Time = 0.95, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End")) end} + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 1.45, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.25, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert")) end}, + {Time = 0.95, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End")) end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.13, + Fps = 30, + MagLength = 0.73, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.56, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin_Fast")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End_Fast")) end} + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_xmaglrg_fast"}, + Length = 1.13, + Fps = 30, + MagLength = 0.73, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.56, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin_Fast")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End_Fast")) end} + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.13, + Fps = 30, + MagLength = 0.73, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.56, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin_Fast")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End_Fast")) end} + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 1.5, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_Start_Empty")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout_Empty")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert_Empty")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin_Empty")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Charge")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End_Empty")) end} + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 1.85, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_Start_Empty")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout_Empty")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert_Empty")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin_Empty")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Charge")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End_Empty")) end} + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_xmaglrg"}, + Length = 1.85, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_Start_Empty")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout_Empty")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert_Empty")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin_Empty")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Charge")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End_Empty")) end} + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.1, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0.26, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout_Empty_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert_Empty_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin_Empty_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Charge_Fast")) end}, + {Time = 1.06, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End_Empty_Fast")) end} + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 1.1, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0.26, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout_Empty_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert_Empty_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin_Empty_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Charge_Fast")) end}, + {Time = 1.06, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End_Empty_Fast")) end} + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_xmaglrg_fast"}, + Length = 1.1, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0.26, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magout_Empty_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Maginsert_Empty_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Magin_Empty_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Charge_Fast")) end}, + {Time = 1.06, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Reload_End_Empty_Fast")) end} + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + } + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Lastshot")) end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.ADS_Up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.ADS_Down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 30 + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 26, + NextSequence = "Sprint_Loop" --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Inspect01")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Inspect02")) end}, + {Time = 2, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Inspect03")) end}, + {Time = 3.65, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Inspect04")) end} + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Selectfire")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_GLOCK.Selectfire")) end} + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle" + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Small")) end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.4, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Small")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_glock/customization.lua b/lua/weapons/mg_glock/customization.lua new file mode 100644 index 0000000..e8a65e7 --- /dev/null +++ b/lua/weapons/mg_glock/customization.lua @@ -0,0 +1,317 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_golf21_sup_plr") + self.Reverb.Sounds.Outside.Layer = Sound("Atmo_Pistol_Mag_Sup.Outside") + self.Reverb.Sounds.Outside.Reflection = Sound("Reflection_ARSUP.Outside") + self.Reverb.Sounds.Inside.Layer = Sound("Atmo_Pistol_Sup.Inside") + self.Reverb.Sounds.Inside.Reflection = Sound("Reflection_ARSUP.Inside") + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "att_vm_pi_golf21_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_fastswap"}, + + {"att_stock", "att_vm_pi_golf21_stock"}, + + {"att_receiver"}, + + {"att_vm_pi_golf21_slide", "att_vm_pi_golf21_slide_black", "att_vm_pi_golf21_slide_long", "att_vm_pi_golf21_slide_auto"}, + + {"att_muzzle", "att_vm_flashhider01_pstl", "att_vm_compensator01_pstl", "att_vm_muzzlebrake01_pstl", "attachment_vm_pi_mike1911_muzzlebrake", + "att_vm_silencer01_pstl", "att_vm_silencer02_pstl", "att_vm_silencer04_pstl", "att_vm_oil_filter_suppressor"}, + + {"att_sight", "att_vm_minireddot01", "att_vm_minireddot02", "att_vm_minireddot03"}, + + {"att_vm_pi_golf21_mag", "att_vm_pi_golf21_mag_xmags", "att_vm_pi_golf21_mag_xxmags"}, + + {"att_laser", "att_vm_laser01_pstl", "att_vm_laser02_pstl", "att_vm_laser03_pstl"} +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +--[[SWEP.Customization = { + ["Slide"] = { + Slot = 3, + { + Key = "attachment_vm_pi_golf21_slide", + }, + { + Key = "attachment_vm_pi_golf21_slide_black", + Stats = function(self) + end + }, + { + Key = "attachment_vm_pi_golf21_slide_long", + Stats = function(self) + end + }, + { + Key = "attachment_vm_pi_golf21_slide_auto", + Stats = function(self) + end + } + }, + + ["Stock"] = { + Slot = 2, + { + Key = "no_stock", + }, + { + Key = "attachment_vm_pi_golf21_stock", + Stats = function(self) + end + }, + }, + + ["Optic"] = { + Slot = 5, + { + Key = "no_sight", + }, + { + Key = "attachment_vm_minireddot01", + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.45) + end + }, + { + Key = "attachment_vm_minireddot02", + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.45) + end + }, + { + Key = "attachment_vm_minireddot03", + Stats = function(self) + self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.45) + end + }, + }, + + ["Laser"] = { + Slot = 7, + { + Key = "no_laser", + }, + { + Key = "attachment_vm_laser_pstl", + Stats = function(self) + end + }, + { + Key = "attachment_vm_laser_pstl03", + Stats = function(self) + end + }, + { + Key = "attachment_vm_laser_pstl04", + Stats = function(self) + end + } + }, + +["Muzzle"] = { + Slot = 4, + { + Key = "no_muzzle" + }, + { + Key = "attachment_vm_flashhider_psl01", + VElement = { + Bone = "tag_silencer", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Slide"] = { + [2] = {Vector(0, 0, 0), Angle()}, + [3] = {Vector(0, 1, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Stats = function(self) + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" + end + }, + { + Key = "attachment_vm_muzzlebrake_pstl01", + VElement = { + Bone = "tag_silencer", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Slide"] = { + [2] = {Vector(0, 0, 0), Angle()}, + [3] = {Vector(0, 1, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Stats = function(self) + end + }, + { + Key = "attachment_vm_compensator_pstl01", + VElement = { + Bone = "tag_silencer", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Slide"] = { + [2] = {Vector(0, 0, 0), Angle()}, + [3] = {Vector(0, 1, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Stats = function(self) + end + }, + { + Key = "attachment_vm_oil_filter_suppressor", + VElement = { + Bone = "tag_silencer", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Slide"] = { + [2] = {Vector(0, 0, 0), Angle()}, + [3] = {Vector(0, 1, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Stats = function(self) + doSuppressorStats(self) + end + }, + { + Key = "attachment_vm_silencer_pstl_02", + VElement = { + Bone = "tag_silencer", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Slide"] = { + [2] = {Vector(0, 0, 0), Angle()}, + [3] = {Vector(0, 1, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Stats = function(self) + doSuppressorStats(self) + end + }, + { + Key = "attachment_vm_silencerpstl03", + VElement = { + Bone = "tag_silencer", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Slide"] = { + [2] = {Vector(0, 0, 0), Angle()}, + [3] = {Vector(0, 1, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Stats = function(self) + doSuppressorStats(self) + end + }, + { + Key = "attachment_vm_silencerpstl", + VElement = { + Bone = "tag_silencer", + Position = Vector(0, 0, 0), + Angles = Angle(), + Offsets = { + ["Slide"] = { + [2] = {Vector(0, 0, 0), Angle()}, + [3] = {Vector(0, 1, 0), Angle()}, + [4] = {Vector(0, 0, 0), Angle()} + } + } + }, + Stats = function(self) + doSuppressorStats(self) + end + }, +}, + + ["Perk"] = { + Slot = 1, + { + Key = "no_perk", + }, + { + Key = "perk_soh", + Stats = function(self) + self.Animations.Reload = self.Animations.Reload_Fast + self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast + self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast + self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast + self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast + self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast + end + }, + { + Key = "perk_fastmelee", + Stats = function(self) + end + }, + { + Key = "perk_heavymelee", + Stats = function(self) + end + }, + { + Key = "perk_fmj", + Stats = function(self) + end + } + }, + + ["Magazine"] = { + Slot = 6, + { + Key = "attachment_vm_pi_golf21_mag", + Stats = function(self) + end + }, + { + Key = "attachment_vm_pi_golf21_mag_xmags", + Stats = function(self) + end + }, + { + Key = "attachment_vm_pi_golf21_mag_xmags2", + Stats = function(self) + end + } + }, + + -- ["Camo"] = { + -- Slot = 8, + -- { + -- Key = "no_camo", + -- }, + -- { + -- Key = "camo_jermasus", + -- Stats = function(self) + -- end + -- }, + -- { + -- Key = "camo_digital", + -- Stats = function(self) + -- end + -- } + -- }, +} +]] \ No newline at end of file diff --git a/lua/weapons/mg_glock/shared.lua b/lua/weapons/mg_glock/shared.lua new file mode 100644 index 0000000..e41231e --- /dev/null +++ b/lua/weapons/mg_glock/shared.lua @@ -0,0 +1,153 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_pistol") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_glock", "VGUI/entities/mg_glock", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_pi_golf21") +end + +SWEP.Base = "mg_base" + +SWEP.PrintName = "X16" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Pistols" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_glock.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_glock.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_golf21_fire_first"), + ReleasedSound = Sound("weap_golf21_fire_disconnector"), + Time = 0.025 +} +SWEP.Slot = 1 +SWEP.HoldType = "Pistol" + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Primary.Sound = Sound("weap_golf21_fire_plr") +SWEP.Primary.Ammo = "Pistol" +SWEP.Primary.ClipSize = 13 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 600 +SWEP.CanChamberRound = true + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Semi Auto", + OnSet = function() + return nil + end + } +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 20, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 40 --degrees per second +} + +SWEP.Cone = { + Hip = 0.1,--accuracy while hip + Ads = 0.045, --accuracy while aiming + Increase = 0.06, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.13, --multiply the increase value by this amount while aiming + Max = 0.8, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 3475 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.2, 0.7}, --random value between the 2 + Horizontal = {-0.1, 0.2}, --random value between the 2 + Shake = 2, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 610312 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {31, 14}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 22, --in meters, damage scales within this distance + DropOffStartRange = 7, + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.6, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 6, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 15 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_pistol_offset", + Angles = Angle(0, 0, 180), + Pos = Vector(12, -1.5, -3) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0.15, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_pistol_offset", + X = { + [0] = {Pos = Vector(0, 2, -2), Angles = Angle(30, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(0, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(2, -3, 0), Angles = Angle(-30, -60, 0)}, + [1] = {Pos = Vector(-4, 0, 0), Angles = Angle(0, 30, 0)} + } + }, + RecoilMultiplier = 1, + KickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_45" \ No newline at end of file diff --git a/lua/weapons/mg_hdromeo/animations.lua b/lua/weapons/mg_hdromeo/animations.lua new file mode 100644 index 0000000..4e67a88 --- /dev/null +++ b/lua/weapons/mg_hdromeo/animations.lua @@ -0,0 +1,410 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.85, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_raise_01")) end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 1, + Fps = 30, + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_drop_01")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_raise_first_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_raise_first_02")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_raise_first_03")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_raise_first_04")) end}, + } + }, + + ["reload_xmag"] = { + Sequences = {"reload_xmag"}, + Length = 3.33, + MagLength = 2.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.033, Callback = function(self) end}, + {Time = 3.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_06")) end}, + {Time = 2.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_05")) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_04")) end}, + {Time = 2.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_055")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_03")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_01")) end}, + } + }, + + ["reload_xmag_fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 2.56, + MagLength = 1.9, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_055")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_05")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_04")) end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_07")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_01")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_03")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_02")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 3.33, + MagLength = 2.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.033, Callback = function(self) end}, + {Time = 3.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_06")) end}, + {Time = 2.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_05")) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_04")) end}, + {Time = 2.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_055")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_03")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_01")) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2.56, + MagLength = 1.9, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_055")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_05")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_04")) end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_07")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_01")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_03")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_fast_02")) end}, + + } + }, + + ["reload_empty_xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 4.5, + MagLength = 3.2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.033, Callback = function(self) end}, + {Time = 3.033, Callback = function(self) end}, + { + Time = 0.5, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 3.267, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_075")) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_06")) end}, + {Time = 3.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_09")) end}, + {Time = 3.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_08")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_03")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_02")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_rechamber_01")) end}, + {Time = 2.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_07")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_05")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_04")) end}, + } + }, + + ["reload_empty_xmag_fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 3.5, + MagLength = 2.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.033, Callback = function(self) end}, + {Time = 3.033, Callback = function(self) end}, + {Time = 3.033, Callback = function(self) end}, + {Time = 3.033, Callback = function(self) end}, + { + Time = 0.25, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 2.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_06")) end}, + {Time = 2.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_07")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_05")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_02")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_055")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_rechamber_01")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_03")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_04")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 4.5, + MagLength = 3.2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.033, Callback = function(self) end}, + {Time = 3.033, Callback = function(self) end}, + { + Time = 0.5, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 3.267, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_075")) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_06")) end}, + {Time = 3.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_09")) end}, + {Time = 3.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_08")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_03")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_02")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_rechamber_01")) end}, + {Time = 2.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_07")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_05")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_04")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 3.5, + MagLength = 2.5, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.25, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 3.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_09")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_08")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_rechamber_01")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_03")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_02")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_05")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_04")) end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_07")) end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_06")) end}, + {Time = 3.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_10")) end}, + {Time = 3.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_11")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_reload_empty_fast_075")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Rechamber"] = { + Sequences = {"rechamber"}, + Fps = 30, + Length = 1.3, + NextSequence = "Idle", + Events = { + { + Time = 0.5, + Callback = function(self) + self:DoEjection("shell_eject") + end + }, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_rechamber_01")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_rechamber_02")) end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_sn_hdromeo_ads_up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_sn_hdromeo_ads_down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_inspect_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_inspect_01")) end}, + {Time = 3.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_hdromeo_inspect_03")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_hdromeo/customization.lua b/lua/weapons/mg_hdromeo/customization.lua new file mode 100644 index 0000000..b6ee639 --- /dev/null +++ b/lua/weapons/mg_hdromeo/customization.lua @@ -0,0 +1,53 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_hdromeo_fire_plr_sup") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper_Sup.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_DMR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sn_hdromeo_perk_soh", + "att_perk_steadywalk", "att_perk_nodrop", "att_perk_scopesway"}, + + {"attachment_weapon_vm_sn_hdromeo_stock", "attachment_vm_sn_hdromeo_stockl", + "attachment_vm_sn_hdromeo_stockh"}, + + {"attachment_weapon_vm_sn_hdromeo_mag", "attachment_vm_sn_hdromeo_xmag", "attachment_vm_sn_hdromeo_xmag2"}, + + {"attachment_weapon_vm_sn_hdromeo_receiver"}, + + {"attachment_weapon_vm_sn_hdromeo_barrel", "attachment_vm_sn_hdromeo_barrel_short", + "attachment_vm_sn_hdromeo_barrel_mid", "attachment_vm_sn_hdromeo_barrel_long"}, + + {"att_muzzle", "att_vm_hdromeo_compensator01", "att_vm_hdromeo_flashhider01", "att_vm_hdromeo_muzzlebrake01", + "att_vm_hdromeo_muzzlebrake02", "att_vm_hdromeo_silencer01", "att_vm_hdromeo_silencer02", "att_vm_hdromeo_silencer03"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "attachment_vm_sn_hdromeo_snprscope", + "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04", + "att_vm_scope_hdromeo", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_sn_hdromeo_laser01", "attachment_vm_sn_hdromeo_laser02", + "attachment_vm_sn_hdromeo_laser03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) \ No newline at end of file diff --git a/lua/weapons/mg_hdromeo/shared.lua b/lua/weapons/mg_hdromeo/shared.lua new file mode 100644 index 0000000..8d6009e --- /dev/null +++ b/lua/weapons/mg_hdromeo/shared.lua @@ -0,0 +1,184 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_hdromeo", "VGUI/entities/mg_hdromeo", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sn_hdromeo") +end + +-- SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} +-- SWEP.GripPoseParameters2 = {"grip_pistolgrip_offset"} + +SWEP.Base = "mg_base" + +SWEP.PrintName = "HDR" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Sniper Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/vm_sn_hdromeo.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_hdromeo.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_delta_fire_first"), + ReleasedSound = Sound("weap_delta_fire_disconnector"), + Time = 0.03 +} + +SWEP.Slot = 3 +SWEP.HoldType = "BoltAction" + +SWEP.Primary.Sound = Sound("weap_hdromeo_fire_plr") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 5 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 297 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false +SWEP.ReloadRechambers = true +SWEP.Projectile = { + Class = "mg_sniper_bullet", --bullet entity class + Speed = 60000, + Gravity = 3, + Penetrate = true +} + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_dmr", + ["MuzzleFlash_DB"] = "mw_fas2_muzzleflash_slug", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", + ["Overheating"] = "AC_muzzle_pistol_smoke_barrel", +} +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Bolt-Action", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 3, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 3, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.025, --multiply the increase value by this amount while aiming + Max = 5, --the cone size will not go beyond this size + Decrease = 2, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 3456 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.4, 1}, --random value between the 2 + Horizontal = {-3, 3}, --random value between the 2 + Shake = 5, --camera shake + AdsMultiplier = 1, --multiply the values by this amount while aiming + Seed = 345353453, --give this a random number until you like the current recoil pattern + Punch = 1, --recoil will offset the view by this amount (takes vertical, horizontal and adsmul into account) + AdsShakeMultiplier = 2 +} + +SWEP.Bullet = { + Damage = {240, 210}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 300, --in meters, damage scales within this distance + DropOffStartRange = 50, + Range = 350, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1.25, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 2, + Penetration = { + DamageMultiplier = 1, --how much damaged is multipled by when leaving a surface. + MaxCount = 6, --how many times the bullet can penetrate. + Thickness = 32, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + BreathingMultiplier = 1, + MovementMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(10,5,180), + Pos = Vector(5,-2, -1.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0.02, 0, -0.055) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1.75, + KickMultiplier = 3.3, + AimKickMultiplier = 0.45 +} + +SWEP.Shell = "mwb_shelleject_50bmg" + +function SWEP:PrimaryAttack() + local clip = self:Clip1() + weapons.Get(self.Base).PrimaryAttack(self) + if (clip != self:Clip1()) then + self:MakeEnvironmentDust(250) + end +end \ No newline at end of file diff --git a/lua/weapons/mg_kilo121/animations.lua b/lua/weapons/mg_kilo121/animations.lua new file mode 100644 index 0000000..38b81c8 --- /dev/null +++ b/lua/weapons/mg_kilo121/animations.lua @@ -0,0 +1,299 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 1.3, --! + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.85, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.35, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise.first")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"Reload"}, + Length = 6.9, + Fps = 30, + MagLength = 5.1, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_fast"] = { + Sequences = {"Reload_fast"}, + Length = 4.2, + Fps = 25, + MagLength = 3, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Empty"] = { + Sequences = {"Reload_empty"}, + Length = 7.8, + Fps = 30, + MagLength = 6, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_fast"] = { + Sequences = {"Reload_empty_fast"}, + Length = 5, + Fps = 30, + MagLength = 3.7, + NextSequence = "Idle", + Events = { + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.5, --if melee hits + + Damage = 100, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Bayonet"] = { + Sequences = {"melee_miss_01_bayonet", "melee_miss_02_bayonet", "melee_miss_03_bayonet"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Knife")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit_Bayonet"] = { + Sequences = {"melee_hit_01_bayonet", "melee_hit_02_bayonet", "melee_hit_03_bayonet"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.World_Knife")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_kilo121/customization.lua b/lua/weapons/mg_kilo121/customization.lua new file mode 100644 index 0000000..b45f6cb --- /dev/null +++ b/lua/weapons/mg_kilo121/customization.lua @@ -0,0 +1,1162 @@ +AddCSLuaFile() +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_kilo121_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doSmgStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4) then + self.Primary.Sound = Sound("mw19.akilo47.smgcal.fire") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Shell = "mwb_shelleject_545" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_lm_kilo121_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_lm_kilo121_stock", "att_vm_stock_heavy01", + "att_vm_stock_heavy02", "att_vm_stock_light01", "att_vm_stock_medium01", "att_vm_stock_no"}, + + {"attachment_vm_lm_kilo121_mag", "attachment_vm_lm_kilo121_mag_ext"}, + + {"attachment_vm_lm_kilo121_barrel", "attachment_vm_lm_kilo121_barrel_short", + "attachment_vm_lm_kilo121_barrel_mid", "attachment_vm_lm_kilo121_barrel_long"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", 'att_vm_silencer06'}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_lm_kilo121_laser01_cylinder", "attachment_vm_lm_kilo121_laser02_cylinder", + "attachment_vm_lm_kilo121_laser03_cylinder"}, + + {"att_grip", "attachment_vm_lm_kilo121_angledgrip01", "attachment_vm_lm_kilo121_angledgrip02", "attachment_vm_lm_kilo121_stubbygrip01", + "attachment_vm_lm_kilo121_stubbygrip02", "attachment_vm_lm_kilo121_vertgrip01", "attachment_vm_lm_kilo121_vertgrip02", + "attachment_vm_lm_kilo121_vertgrip03", "attachment_vm_lm_kilo121_bipod"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_lm_kilo121_barrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- }, +-- { +-- Key = "attachment_vm_lm_kilo121_custombarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_kilo121_lmgbarrel_grip", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_kilo121_lmgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_kilo121_smgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 2, +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_smg_pose_offset") +-- end, +-- UsingSmgBarrel = true +-- }, +-- { +-- Key = "attachment_vm_lm_kilo121_smgbarcust", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.2, 0.07, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.03, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.08) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.3) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.22) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.29) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.082) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 3, -1.23) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.126, 2, -1.411) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -1.514) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0084, 2, -1.407) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0155, 2, -1.345) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.016, 2, -0.917) + -- self.HybridAimAngles = Angle(-0.05, 0, -45) + -- self.HybridAimPos = Vector(-1.8, 2, -0.45) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 2, -0.902) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 4, -1.287) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 4, -1.222) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 3, -1.055) + -- self.HybridAimAngles = Angle(0, 0.03, 0) + -- self.HybridAimPos = Vector(0,0,-2.25) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -0.985) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2, -0.15) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_lm_kilo121_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_kilo121_lmgstock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_kilo121_smgstock_unfolded", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_kilo121_smgstock", +-- ExcludedAttachments = { +-- ["Magazine"] = {4} +-- }, +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- VElement = { +-- Bone = "tag_stock_attach", +-- Position = Vector(2.5, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- --self:RemoveValue("LaserAimAngles") +-- --self:RemoveValue("LaserAimPos") +-- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 +-- end +-- }, + -- { + -- Key = "attachment_vm_lm_kilo121_stockno", + -- Bodygroups = { + -- ["stock_adapter"] = 1 + -- }, + -- Stats = function(self) + -- --self:RemoveValue("LaserAimAngles") + -- --self:RemoveValue("LaserAimPos") + -- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 + -- end + -- } + -- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_lm_kilo121_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_kilo121_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_kilo121_smgmag", +-- Stats = function(self) +-- doSmgStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_kilo121_drum_mag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_kilo121/shared.lua b/lua/weapons/mg_kilo121/shared.lua new file mode 100644 index 0000000..f344400 --- /dev/null +++ b/lua/weapons/mg_kilo121/shared.lua @@ -0,0 +1,176 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_kilo121", "VGUI/entities/mg_kilo121", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_lm_kilo121") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "M91" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Lightmachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_kilo121.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_kilo121.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("weap_pkilo_prefire_plr"), + ReleasedSound = Sound(""), + Time = 0.15 +} + +SWEP.Primary.Sound = Sound("weap_kilo121_fire_plr") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 100 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 666 +SWEP.CanChamberRound = false +SWEP.CanDisableAimReload = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_lmg", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_LMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.6, --accuracy while hip + Ads = 0.13, --accuracy while aiming + Increase = 0.093, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.24, --multiply the increase value by this amount while aiming + Max = 1.75, --the cone size will not go beyond this size + Decrease = 0.6, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 56676, --just give this a random number + DecreaseEveryShot = 0.075, + MinDecreaseEveryShot = 0.25 +} + +SWEP.Recoil = { + Vertical = {2, 2.5}, --random value between the 2 + Horizontal = {-1, 1}, --random value between the 2 + Shake = 1.25, --camera shake + AdsMultiplier = 0.8, --multiply the values by this amount while aiming + Seed = 2433426, --give this a random number until you like the current recoil pattern + DecreaseEveryShot = 0.05, + MinDecreaseEveryShot = 0.25 +} + +SWEP.Bullet = { + Damage = {35, 25}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 25, --in meters, damage will start dropping off after this range + EffectiveRange = 50, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.8, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 8 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(-90, 0, -90), + Pos = Vector(9.5,4.5,-4) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 1, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -4, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(3, 0, -2), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.45, + KickMultiplier = 2, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_556" + +DEFINE_BASECLASS(SWEP.Base) + +function SWEP:PreAttachments() + BaseClass.PreAttachments(self) + + if (!self:HasAttachment("att_sight")) then + self.Animations.Reload.Sequences = {"Reload_scope"} + self.Animations.Reload_Empty.Sequences = {"Reload_empty_scope"} + self.Animations.Reload_fast.Sequences = {"Reload_fast_scope"} + self.Animations.Reload_empty_fast.Sequences = {"Reload_empty_fast_scope"} + end +end \ No newline at end of file diff --git a/lua/weapons/mg_kilo433/animations.lua b/lua/weapons/mg_kilo433/animations.lua new file mode 100644 index 0000000..842fd94 --- /dev/null +++ b/lua/weapons/mg_kilo433/animations.lua @@ -0,0 +1,432 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.55, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.75, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("mw19_kilo433.raise.first.start")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("mw19_kilo433.raise.first.open")) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("mw19_kilo433.raise.first.close")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("mw19_kilo433.raise.first.end")) end}, + {Time = 0.95, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.4, + Fps = 30, + MagLength = 1.45, + NextSequence = "Idle", + Events = { + {Time = 0.16, Callback = function(self) self:DisableGrip() end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_02")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_03")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_04")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_05")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_055")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_06")) end}, + {Time = 2.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_07")) end}, + {Time = 2.25, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.45, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_fast_01")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_fast_02")) end}, + {Time = 0.65, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_fast_03")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_fast_04")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_fast_05")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_fast_06")) end}, + {Time = 1.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_drum"}, + Length = 2.8, + Fps = 30, + MagLength = 1.75, + NextSequence = "Idle", + Events = { + {Time = 0.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_01")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_02")) end}, + {Time = 1.05, Callback = function(self) self:DisableGrip() end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_03")) end}, + {Time = 1.15, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(0, 0, 40)) end}, + {Time = 1.53, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_04")) end}, + {Time = 2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_045")) end}, + {Time = 2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_05")) end}, + {Time = 2.3, Callback = function(self) self:EnableGrip() end}, + {Time = 2.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_06")) end} + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_drum_fast"}, + Length = 2.3, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_01")) end}, + {Time = 0.56, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_02")) end}, + {Time = 0.89, Callback = function(self) self:DisableGrip() end}, + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(0, 0, 40)) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_03")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_04")) end}, + {Time = 1.83, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_05")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1.8, Callback = function(self) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.6, + Fps = 30, + MagLength = 1.45, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_01")) end}, + {Time = 0.2, Callback = function(self) self:DisableGrip() end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_02")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_03")) end}, + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_04")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_045")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_05")) end}, + {Time = 1.93, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_06")) end}, + {Time = 2.36, Callback = function(self) self:EnableGrip() end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_07")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_fast_02")) end}, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) end}, + {Time = 0.53, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_fast_03")) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_fast_04")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_fast_045")) end}, + {Time = 1.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_fast_05")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_fast_06")) end}, + {Time = 1.53, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_empty_fast_07")) end}, + {Time = 1.63, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_drum"}, + Length = 3.3, + Fps = 30, + MagLength = 1.75, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_empty_01")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_empty_02")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_empty_03")) end}, + {Time = 1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.25, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(0, 0, 40)) end}, + {Time = 1.53, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_empty_04")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_empty_045")) end}, + {Time = 2.06, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_empty_05")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_045")) end}, + {Time = 2.53, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_empty_06")) end}, + {Time = 2.93, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_empty_07")) end}, + {Time = 2.95, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_drum_fast"}, + Length = 2.5, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_empty_01")) end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_empty_02")) end}, + {Time = 0.56, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_empty_03")) end}, + {Time = 0.89, Callback = function(self) self:DisableGrip() end}, + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(0, 0, 40)) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_empty_04")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_empty_05")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_empty_055")) end}, + {Time = 1.86, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_empty_06")) end}, + {Time = 2.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_kilo433_reload_drum_fast_empty_07")) end}, + {Time = 2.06, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.fire.last")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.semi.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.semi.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.inspect.1")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19_kilo433.inspect.2")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19_kilo433.inspect.3")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19_kilo433.inspect.4")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19_kilo433.inspect.5")) end}, + {Time = 4.35, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect_Drum"] = { + Sequences = {"inspect_drum"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.inspect.1")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19_kilo433.inspect.2")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19_kilo433.inspect.3")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19_kilo433.inspect.4")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19_kilo433.inspect.5")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end} + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.767, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_kilo433/customization.lua b/lua/weapons/mg_kilo433/customization.lua new file mode 100644 index 0000000..9b4f814 --- /dev/null +++ b/lua/weapons/mg_kilo433/customization.lua @@ -0,0 +1,872 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19_kilo433.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_kilo433_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_ar_kilo433_barrel", "attachment_vm_ar_kilo433_barshort", "attachment_vm_ar_kilo433_barsil", "attachment_vm_ar_kilo433_long_barrel"}, + + {"attachment_vm_ar_kilo433_stock", "attachment_vm_ar_kilo433_stock_v2", "attachment_vm_ar_kilo433_stock_heavy", "att_vm_stock_heavy01", + "att_vm_stock_heavy02", "att_vm_stock_light01", "att_vm_stock_medium01", "att_vm_stock_no"}, + + {"attachment_vm_ar_kilo433_mag", "attachment_vm_ar_kilo433_xmags", "attachment_vm_ar_kilo433_xmags2", "attachment_vm_ar_kilo433_drum_mag"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west02", "att_vm_hybrid_west02_thermal", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + + {"att_laser", "attachment_vm_ar_kilo433_laser01", "attachment_vm_ar_kilo433_laser02", "attachment_vm_ar_kilo433_laser03"}, + + {"att_grip", "attachment_vm_ar_kilo433_angledgrip01", "attachment_vm_ar_kilo433_angledgrip02", "attachment_vm_ar_kilo433_stubbygrip01", + "attachment_vm_ar_kilo433_stubbygrip02", "attachment_vm_ar_kilo433_vertgrip01", "attachment_vm_ar_kilo433_vertgrip02", + "attachment_vm_ar_kilo433_vertgrip03", "attachment_vm_ar_kilo433_bipodgrip"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_kilo433_barrel", +-- }, +-- { +-- Key = "attachment_vm_ar_kilo433_barshort", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_kilo433_long_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_kilo433_barsil", +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17} +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- Bodygroups = { +-- ["rails"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- Bodygroups = { +-- ["rails"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- Bodygroups = { +-- ["rails"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, -0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, -0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, -0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, -0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, -3.5, 0.12) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, -0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, -0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.125) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, -0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, -0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, -0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, -0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.1, 0, -0.2) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.3) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.2) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.015, 0, -0.14) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.015, 0, 0.29) +-- self.HybridAimAngles = Angle(-0.1, 0, -45) +-- self.HybridAimPos = Vector(-1.75, 0, 0.8) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.015, 0, 0.3) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.09) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 0, -0.015) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.02, 0, 0.15) +-- self.HybridAimAngles = Angle(0, 0, 0) +-- self.HybridAimPos = Vector(0,0,-1) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, -1.5, -0.12) +-- self.HybridAimAngles = Angle(0, 0, 0) +-- self.HybridAimPos = Vector(0, 0, -0.1) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, -1.5, -0.12) +-- self.HybridAimAngles = Angle(0, 0, 0) +-- self.HybridAimPos = Vector(0, 0, -0.1) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.015, 0, 0.22) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, -0.025, -45) +-- self.HybridAimPos = Vector(-1.5, 0, 1.1) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_ar_kilo433_barrel_tip", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, -10.4, 0), Angle()}, +-- [2] = {Vector(0, -8.7, 0), Angle()}, +-- [3] = {Vector(0, -6.8, 0), Angle()}, +-- [4] = {Vector(0, -11.65, 0), Angle()} +-- } +-- } +-- }, +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 1.5, 0), Angle()}, +-- [3] = {Vector(0, 3.4, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_ar_kilo433_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_kilo433_stock_heavy", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_kilo433_stockno", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- --self:RemoveValue("LaserAimAngles") +-- --self:RemoveValue("LaserAimPos") +-- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_large_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_kilo433_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_kilo433_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_kilo433_drum_mag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_kilo433/shared.lua b/lua/weapons/mg_kilo433/shared.lua new file mode 100644 index 0000000..61c514c --- /dev/null +++ b/lua/weapons/mg_kilo433/shared.lua @@ -0,0 +1,172 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("mw_fas2_muzzleflash_suppressed") +PrecacheParticleSystem("mw_ins2_shell_eject") +PrecacheParticleSystem("mw_fas2_muzzleflash_ar_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_kilo433", "VGUI/entities/mg_kilo433", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_kilo433") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vert_pro_offset", "grip_vert_large_offset"} + +SWEP.PrintName = "Kilo 141" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_kilo433.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_kilo433.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("MW19_KILO433.Fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 750 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Trigger = { + PressedSound = Sound("mw19.kilo433.fire.first"), + ReleasedSound = Sound("mw19.kilo433.fire.disconnector"), + Time = 0.025 +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "3rnd Burst", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + self.Primary.BurstRounds = 3 + self.Primary.BurstDelay = 0.2 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "mw_fas2_muzzleflash_ar_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.36, --accuracy while hip + Ads = 0.06, --accuracy while aiming + Increase = 0.075, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.1, --the cone size will not go beyond this size + Decrease = 0.5, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 76676 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 1.5}, --random value between the 2 + Horizontal = {-1.75, 1.75}, --random value between the 2 + Shake = 1, --camera shake + AdsMultiplier = 0.25, --multiply the values by this amount while aiming + Seed = 24366, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1 +} + +SWEP.Bullet = { + Damage = {27, 13}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 23, --in meters, damage will start dropping off after this range + EffectiveRange = 45, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.65, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 9 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 95, -90), + Pos = Vector(2,-5,-1.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, -0.1, 0), + Pos = Vector(0, -2, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 0, 2), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(3, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.5, + KickMultiplier = 0.4, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_556" + diff --git a/lua/weapons/mg_kilo98/animations.lua b/lua/weapons/mg_kilo98/animations.lua new file mode 100644 index 0000000..6625d57 --- /dev/null +++ b/lua/weapons/mg_kilo98/animations.lua @@ -0,0 +1,456 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.85, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:LeaveSling() end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_raise_01")) end}, + {Time = 0.6, Callback = function(self) self:TouchSling() end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.8, + Fps = 30, + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_drop_01")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_drop_02")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_raise_first_03")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_raise_first_02")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_raise_first_01")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 3.5, + MagLength = 2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + {Time = 0.8, Callback = function(self) self:LeaveSling() end}, + {Time = 2.7, Callback = function(self) self:TouchSling() end}, + {Time = 2.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_06")) end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_05")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_01")) end}, + {Time = 3.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_07")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_04")) end}, + {Time = 1.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_045")) end}, + {Time = 3.4, Callback = function(self) self:LeaveSling() end}, + {Time = 3.5, Callback = function(self) self:TouchSling() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.75, + MagLength = 2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + { + Time = 0.35, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 0.8, Callback = function(self) self:LeaveSling() end}, + {Time = 2.7, Callback = function(self) self:TouchSling() end}, + {Time = 2.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_06")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_04")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_045")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_01")) end}, + {Time = 3.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_07")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_05")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_03")) end}, + {Time = 3.4, Callback = function(self) self:LeaveSling() end}, + {Time = 3.5, Callback = function(self) self:TouchSling() end}, + } + }, + + ["reload_fast"] = { + Sequences = {"reload_fast"}, + Length = 2.5, + MagLength = 1.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_fast_02")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_fast_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_fast_01")) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_fast_06")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_fast_04")) end}, + {Time = 2.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_fast_05")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_fast_035")) end}, + {Time = 2.3, Callback = function(self) self:LeaveSling() end}, + {Time = 2.35, Callback = function(self) self:TouchSling() end}, + } + }, + + ["reload_empty_fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.7, + MagLength = 1.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + {Time = 0, Callback = function(self) end}, + { + Time = 0.35, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 0.8, Callback = function(self) self:LeaveSling() end}, + {Time = 2.7, Callback = function(self) self:TouchSling() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_fast_02")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_fast_035")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_fast_01")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_fast_03")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_fast_04")) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_empty_fast_05")) end}, + {Time = 2.3, Callback = function(self) self:LeaveSling() end}, + {Time = 2.35, Callback = function(self) self:TouchSling() end}, + } + }, + + ["reload_start_scope"] = { + Sequences = {"reload_start"}, + Length = 1.56, + Fps = 30, + MagLength = 1.56, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_start_02")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_start_03")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_start_01")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_start_04")) end}, + } + }, + + ["reload_loop_scope"] = { + Sequences = {"reload_loop"}, + Length = 0.55, + Fps = 30, + MagLength = 0.33, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:LeaveSling() end}, + {Time = 0.04, Callback = function(self) self:TouchSling() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_loop_01")) end}, + } + }, + + ["reload_end_scope"] = { + Sequences = {"reload_end"}, + Length = 1.13, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + {Time = 0.75, Callback = function(self) self:LeaveSling() end}, + {Time = 0.9, Callback = function(self) self:TouchSling() end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_end_01")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_end_03")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_end_02")) end}, + } + }, + + ["reload_start_fast_scope"] = { + Sequences = {"reload_start_fast"}, + Length = 1.2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_start_02")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_start_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_start_01")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_start_04")) end}, + } + }, + + ["reload_loop_fast_scope"] = { + Sequences = {"reload_loop_fast"}, + Length = 0.45, + Fps = 30, + MagLength = 0.25, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_loop_fast_01")) end}, + } + }, + + ["reload_end_fast_scope"] = { + Sequences = {"reload_end_fast"}, + Length = 0.86, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + {Time = 0.45, Callback = function(self) self:LeaveSling() end}, + {Time = 0.5, Callback = function(self) self:TouchSling() end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_end_01")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_end_03")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_reload_scope_end_02")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() self:TouchSling() end}, + } + }, + + ["Rechamber"] = { + Sequences = {"rechamber"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + { + Time = 0.25, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 1, Callback = function(self) self:LeaveSling() end}, + {Time = 1.1, Callback = function(self) self:TouchSling() end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_rechamber_04")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_rechamber_01")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_rechamber_03")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_rechamber_02")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_rechamber_scope_05")) end}, + } + }, + + ["rechamber_scope"] = { + Sequences = {"rechamber_scope"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:TouchSling() end}, + { + Time = 0.25, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 1, Callback = function(self) self:LeaveSling() end}, + {Time = 1.1, Callback = function(self) self:TouchSling() end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_rechamber_04")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_rechamber_01")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_rechamber_03")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_rechamber_02")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_kilo98_rechamber_scope_05")) end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() self:TouchSling() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:TouchSling() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sbeta.ads.up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:TouchSling() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sbeta.ads.down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:TouchSling() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:TouchSling() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:TouchSling() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:LeaveSling() end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_inspect_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_inspect_01")) end}, + {Time = 4.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_inspect_04")) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_inspect_03")) end}, + {Time = 4, Callback = function(self) self:TouchSling() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end} + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_kilo98/customization.lua b/lua/weapons/mg_kilo98/customization.lua new file mode 100644 index 0000000..acb288d --- /dev/null +++ b/lua/weapons/mg_kilo98/customization.lua @@ -0,0 +1,878 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.kilo98.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper_Sup.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_DMR_Sup.Inside"), + Reflection = Sound("Reflection_Sniper.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +local function disableShotgunReload(self) + if (self:HasAttachment("attachment_vm_sn_kilo98_nostrippers")) then + return + end + + self.Animations.Reload_Start = nil + self.Animations.Reload_Loop = nil + self.Animations.Reload_End = nil +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sn_kilo98_perk_soh", "att_perk_fmj", "attachment_vm_sn_kilo98_perk_bolt", "att_perk_ricochet"}, + + {"att_accessory", "attachment_vm_sn_kilo98_sling"}, + + {"att_miscellaneous", "attachment_vm_sn_kilo98_nostrip"}, + + {"att_stock", "attachment_vm_sn_kilo98_stocks", + "attachment_vm_sn_kilo98_stockl", "attachment_vm_sn_kilo98_stock_tactical"}, + + {"attachment_vm_sn_kilo98_barrel", "attachment_vm_sn_kilo98_barshort", + "attachment_vm_sn_kilo98_barmid", "attachment_vm_sn_kilo98_barlong"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", + "att_vm_hybrid_west01", "att_vm_hybrid_west02_thermal", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04", + "att_vm_scope_kilo98", "att_vm_scope_vz_kilo98", "weapon_vm_scope_kilo98", "att_vm_hybrid_west02"}, + + {"att_laser", "attachment_vm_sn_kilo98_laser01", "attachment_vm_sn_kilo98_laser02", + "attachment_vm_sn_kilo98_laser03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + + +-- SWEP.Customization = { +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) + -- self.Animations.Reload = self.Animations.reload_fast + -- self.Animations.Reload_Empty = self.Animations.reload_empty_fast + -- self.Animations.reload_start_scope = self.Animations.reload_start_fast_scope + -- self.Animations.reload_loop_scope = self.Animations.reload_loop_fast_scope + -- self.Animations.reload_end_scope = self.Animations.reload_end_fast_scope +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sn_kilo98_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_kilo98_barlong", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_kilo98_barmid", +-- Bodygroups = { +-- ["tag_sight"] = 4, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_kilo98_barshort", +-- Bodygroups = { +-- ["tag_sight"] = 6, +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 1.65, 0), Angle()}, +-- [3] = {Vector(0, 0.65, 0), Angle()}, +-- [4] = {Vector(0, -2.9, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) --i know you tell me not to fuck with this but the dot being actually centered on the glass demands it xoxo +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.02, 0, -1.44) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.7 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -1.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.65) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.15,0,0) +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 0, -1.77) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.7 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0, 0, -1.88) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.7 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -1.77) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.7 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0015, 0, -1.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.7 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.28) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.75, 10.5, -0.8) +-- self.Zoom.FovMultiplier = 0.75 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0, -1.26) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.75 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "weapon_vm_scope_kilo98_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- ExcludedAttachments = { +-- ["Accessory"] = {2} +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01,-3,-1.65) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Animations.Reload_Start = self.Animations.reload_start_scope +-- self.Animations.Reload_Loop = self.Animations.reload_loop_scope +-- self.Animations.Reload_End = self.Animations.reload_end_scope +-- end, +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- ExcludedAttachments = { +-- ["Accessory"] = {2} +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0035,-3,-1.58) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Animations.Reload_Start = self.Animations.reload_start_scope +-- self.Animations.Reload_Loop = self.Animations.reload_loop_scope +-- self.Animations.Reload_End = self.Animations.reload_end_scope +-- end, +-- }, +-- { +-- Key = "weapon_vm_scope_kilo98", +-- Bodygroups = { +-- ["tag_sight"] = 0, +-- ["tag_sight_back"] = 1, +-- }, +-- ExcludedAttachments = { +-- ["Accessory"] = {2} +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0035,0,-1.1) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Animations.Reload_Start = self.Animations.reload_start_scope +-- self.Animations.Reload_Loop = self.Animations.reload_loop_scope +-- self.Animations.Reload_End = self.Animations.reload_end_scope +-- end, +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0, -1.42) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,3.5,-2.6) +-- self.Zoom.FovMultiplier = 0.75 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 0, -1.68) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(0, 0, 0) +-- self.HybridAimPos = Vector(-0.015, 0, -1.65) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Zoom.FovMultiplier = 0.75 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 0, -1.68) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(0, 0, 0) +-- self.HybridAimPos = Vector(-0.015, 0, -1.65) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Zoom.FovMultiplier = 0.75 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2.5, -0.5) +-- self.Zoom.FovMultiplier = 0.75 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end, +-- PostProcess = disableShotgunReload +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 5, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 6, +-- { +-- Key = "no_attachment", +-- }, +-- { +-- Key = "attachment_vm_sn_kilo98_stock_tactical", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_kilo98_stocks", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_kilo98_stockl", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_kilo98_sling", +-- Bodygroups = { +-- ["sling"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_kilo98/shared.lua b/lua/weapons/mg_kilo98/shared.lua new file mode 100644 index 0000000..0e30e6b --- /dev/null +++ b/lua/weapons/mg_kilo98/shared.lua @@ -0,0 +1,183 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_kilo98", "VGUI/entities/mg_kilo98", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sn_kilo98") +end + +SWEP.Base = "mg_base" + +SWEP.PrintName = "Kar98k" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Marksman Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_kilo98.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_kilo98.mdl") + +SWEP.Slot = 3 +SWEP.HoldType = "BoltAction" + +SWEP.Primary.Sound = Sound("mw19.kilo98.fire") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 5 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 200 +SWEP.CanChamberRound = false +SWEP.CanDisableAimReload = false +SWEP.ReloadRechambers = true +SWEP.Projectile = { + Class = "mg_sniper_bullet", --bullet entity class + Speed = 27000, + Gravity = 8, + Penetrate = true +} + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_dmr", + ["MuzzleFlash_DB"] = "AC_muzzle_shotgun_db", + ["MuzzleFlash_Suppressed"] = "AC_muzzle_pistol_suppressed", + ["Ejection"] = "AC_muzzle_pistol_ejection", + ["Overheating"] = "AC_muzzle_pistol_smoke_barrel", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_DMR.Outside"), + Reflection = Sound("Reflection_Shotgun.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Bolt Action", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 1, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.086, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.025, --multiply the increase value by this amount while aiming + Max = 2.5, --the cone size will not go beyond this size + Decrease = 1, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6985 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {7, 10}, --random value between the 2 + Horizontal = {-4.75, 4.75}, --random value between the 2 + Shake = 3, --camera shake + AdsMultiplier = 0.05, --multiply the values by this amount while aiming + Seed = 4253452354, --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {120, 60}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 200, --in meters, damage scales within this distance + DropOffStartRange = 30, + Range = 300, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1.25, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 2, + Penetration = { + DamageMultiplier = 0.85, --how much damaged is multipled by when leaving a surface. + MaxCount = 6, --how many times the bullet can penetrate. + Thickness = 25, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,100,-90), + Pos = Vector(-1,-1,4) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1.75, + KickMultiplier = 1.3, + AimKickMultiplier = 0 +} + +SWEP.Shell = "mwb_shelleject_308" + +DEFINE_BASECLASS(SWEP.Base) + +local excludedAtts = {"weapon_vm_scope_kilo98", "att_vm_scope_vz_kilo98", "att_vm_scope_kilo98"} + +function SWEP:PostAttachment(att) + BaseClass.PostAttachment(self, att) + + if (!self:HasAttachment("attachment_vm_sn_kilo98_nostrip")) then + if (att.Category == "Sights") then + if (!table.HasValue(excludedAtts, att.ClassName)) then + self.Animations.Reload_Loop = nil + self.Animations.Reload_End = nil + self.Animations.Reload_Start = nil + end + end + end +end \ No newline at end of file diff --git a/lua/weapons/mg_lima86/animations.lua b/lua/weapons/mg_lima86/animations.lua new file mode 100644 index 0000000..2dc01c3 --- /dev/null +++ b/lua/weapons/mg_lima86/animations.lua @@ -0,0 +1,306 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.85, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.4, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.35, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise.first")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"Reload"}, + Length = 3.2, + Fps = 30, + MagLength = 2.3, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"Reload_xmag"}, + Length = 3.2, + Fps = 30, + MagLength = 2.3, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Fast"] = { + Sequences = {"Reload_fast"}, + Length = 2.15, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"Reload_fast_xmag"}, + Length = 2.15, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Empty"] = { + Sequences = {"Reload_empty"}, + Length = 3.8, + Fps = 30, + MagLength = 2.4, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"Reload_empty_xmag"}, + Length = 3.8, + Fps = 30, + MagLength = 2.4, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"Reload_empty_fast"}, + Length = 2.5, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"Reload_empty_fast_xmag"}, + Length = 2.5, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + } +} \ No newline at end of file diff --git a/lua/weapons/mg_lima86/customization.lua b/lua/weapons/mg_lima86/customization.lua new file mode 100644 index 0000000..6c653d6 --- /dev/null +++ b/lua/weapons/mg_lima86/customization.lua @@ -0,0 +1,1163 @@ +AddCSLuaFile() +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_lima86_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doSmgStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4) then + self.Primary.Sound = Sound("mw19.akilo47.smgcal.fire") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Shell = "mwb_shelleject_545" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_lm_lima86_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"att_receiver"}, + + {"att_stock", "attachment_vm_lm_lima86_stocks", + "attachment_vm_lm_lima86_stockl", "attachment_vm_lm_lima86_stock_tactical"}, + + {"attachment_vm_lm_lima86_mag", "attachment_vm_lm_lima86_xmags", "attachment_vm_lm_lima86_xmags2"}, + + {"attachment_vm_lm_lima86_barrel", "attachment_vm_lm_lima86_barrel_short", "attachment_vm_lm_lima86_barrel_long", "attachment_vm_lm_lima86_barrel_mid"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", 'att_vm_silencer06'}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_lm_lima86_laser01_cylinder", "attachment_vm_lm_lima86_laser02_cylinder", + "attachment_vm_lm_lima86_laser03_cylinder"}, + + {"att_grip", "attachment_vm_lm_lima86_angledgrip01", "attachment_vm_lm_lima86_angledgrip02", "attachment_vm_lm_lima86_stubbygrip01", + "attachment_vm_lm_lima86_stubbygrip02", "attachment_vm_lm_lima86_vertgrip01", "attachment_vm_lm_lima86_vertgrip02", + "attachment_vm_lm_lima86_vertgrip03", "attachment_vm_lm_lima86_bipod"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_lm_lima86_barrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- }, +-- { +-- Key = "attachment_vm_lm_lima86_custombarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_lima86_lmgbarrel_grip", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_lima86_lmgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_lima86_smgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 2, +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_smg_pose_offset") +-- end, +-- UsingSmgBarrel = true +-- }, +-- { +-- Key = "attachment_vm_lm_lima86_smgbarcust", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.2, 0.07, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.03, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.08) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.3) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.22) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.29) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.082) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 3, -1.23) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.126, 2, -1.411) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -1.514) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0084, 2, -1.407) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0155, 2, -1.345) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.016, 2, -0.917) + -- self.HybridAimAngles = Angle(-0.05, 0, -45) + -- self.HybridAimPos = Vector(-1.8, 2, -0.45) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 2, -0.902) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 4, -1.287) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 4, -1.222) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 3, -1.055) + -- self.HybridAimAngles = Angle(0, 0.03, 0) + -- self.HybridAimPos = Vector(0,0,-2.25) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -0.985) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2, -0.15) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_lm_lima86_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_lima86_lmgstock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_lima86_smgstock_unfolded", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_lima86_smgstock", +-- ExcludedAttachments = { +-- ["Magazine"] = {4} +-- }, +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- VElement = { +-- Bone = "tag_stock_attach", +-- Position = Vector(2.5, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- --self:RemoveValue("LaserAimAngles") +-- --self:RemoveValue("LaserAimPos") +-- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 +-- end +-- }, + -- { + -- Key = "attachment_vm_lm_lima86_stockno", + -- Bodygroups = { + -- ["stock_adapter"] = 1 + -- }, + -- Stats = function(self) + -- --self:RemoveValue("LaserAimAngles") + -- --self:RemoveValue("LaserAimPos") + -- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 + -- end + -- } + -- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_lm_lima86_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_lima86_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_lima86_smgmag", +-- Stats = function(self) +-- doSmgStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_lima86_drum_mag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_lima86/shared.lua b/lua/weapons/mg_lima86/shared.lua new file mode 100644 index 0000000..8d1fb5c --- /dev/null +++ b/lua/weapons/mg_lima86/shared.lua @@ -0,0 +1,172 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_lima86", "VGUI/entities/mg_lima86", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_lm_lima86") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "SA87" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Lightmachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_lima86.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_lima86.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("weap_lima86_fire_first"), + ReleasedSound = Sound("weap_lima86_fire_disconnector"), + Time = 0.15 +} + +SWEP.Primary.Sound = Sound("weap_lima86_fire_plr") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 600 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_lmg", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_LMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Automatic", + OnSet = function(self) + self.Primary.Automatic = false + self.Primary.RPM = 500 + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.45, --accuracy while hip + Ads = 0.13, --accuracy while aiming + Increase = 0.093, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.24, --multiply the increase value by this amount while aiming + Max = 1.75, --the cone size will not go beyond this size + Decrease = 0.6, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 657345, --just give this a random number + DecreaseEveryShot = 0.1, + MinDecreaseEveryShot = 0.4 +} + +SWEP.Recoil = { + Vertical = {2, 1.5}, --random value between the 2 + Horizontal = {-0.6, 0.6}, --random value between the 2 + Shake = 1.5, --camera shake + AdsMultiplier = 0.5, --multiply the values by this amount while aiming + Seed = 2, --give this a random number until you like the current recoil pattern + DecreaseEveryShot = 0.1, + MinDecreaseEveryShot = 0.4 +} + +SWEP.Bullet = { + Damage = {29, 15}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 20, --in meters, damage will start dropping off after this range + EffectiveRange = 45, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.8, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 8 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(8, 0, -180), + Pos = Vector(8.5,-1,-4) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 1, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -4, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(3, 0, -2), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.45, + KickMultiplier = 2, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_556" \ No newline at end of file diff --git a/lua/weapons/mg_m1911/animations.lua b/lua/weapons/mg_m1911/animations.lua new file mode 100644 index 0000000..7ea098d --- /dev/null +++ b/lua/weapons/mg_m1911/animations.lua @@ -0,0 +1,360 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30 + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.3, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Drop")) end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DoSound(Sound("MW19_M1911.Raise_First_Up")) end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("MW19_M1911.Raise_First_SlidePull")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_M1911.Raise_First_SlideRelease")) end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 1.35, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.05, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("MW19_M1911.Maginsert")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End")) end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start_Fast")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.26, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout_Fast")) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End_Fast")) end} + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_xmag"}, + Length = 1.35, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.05, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("MW19_M1911.Maginsert")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End")) end} + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_mmag"}, + Length = 1.35, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.05, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("MW19_M1911.Maginsert")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End")) end} + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start_Fast")) end}, + {Time = 0.26, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout_Fast")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End_Fast")) end} + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start_Fast")) end}, + {Time = 0.26, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout_Fast")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End_Fast")) end} + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 1.5, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start_Empty")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout_Empty")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_M1911.Maginsert_Empty")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin_Empty")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("MW19_M1911.Charge")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End_Empty")) end} + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start_Empty_Fast")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout_Empty_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin_Empty_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_M1911.Charge_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End_Empty_Fast")) end} + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_xmag"}, + Length = 1.5, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start_Empty")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout_Empty")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_M1911.Maginsert_Empty")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin_Empty")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("MW19_M1911.Charge")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End_Empty")) end} + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start_Empty_Fast")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout_Empty_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin_Empty_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_M1911.Charge_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End_Empty_Fast")) end} + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_mmag"}, + Length = 1.5, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start_Empty")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout_Empty")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_M1911.Maginsert_Empty")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin_Empty")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("MW19_M1911.Charge")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End_Empty")) end} + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_mmag_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_Start_Empty_Fast")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magout_Empty_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_M1911.Magin_Empty_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_M1911.Charge_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_M1911.Reload_End_Empty_Fast")) end} + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + } + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Lastshot")) end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.ADS_Up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.ADS_Down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24 + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop" --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.Inspect01")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_M1911.Inspect02")) end}, + {Time = 2, Callback = function(self) self:DoSound(Sound("MW19_M1911.Inspect03")) end}, + {Time = 3.65, Callback = function(self) self:DoSound(Sound("MW19_M1911.Inspect04")) end} + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle" + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Small")) end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Small")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_m1911/customization.lua b/lua/weapons/mg_m1911/customization.lua new file mode 100644 index 0000000..241fc41 --- /dev/null +++ b/lua/weapons/mg_m1911/customization.lua @@ -0,0 +1,336 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_mike1911_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol_Mag_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + + {"att_perk", "att_vm_pi_mike1911_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_fastswap"}, + + {"att_receiver"}, + + {"attachment_vm_pi_mike1911_v1_mag", "attachment_vm_pi_mike1911_mmags", "attachment_vm_pi_mike1911_xmags"}, + + {"att_muzzle", "att_vm_flashhider01_pstl", "att_vm_compensator01_pstl", "att_vm_muzzlebrake01_pstl", "attachment_vm_pi_mike1911_muzzlebrake", + "att_vm_silencer01_pstl", "att_vm_silencer02_pstl", "att_vm_silencer04_pstl", "att_vm_oil_filter_suppressor"}, + + {"att_sight", "att_vm_minireddot01", "att_vm_minireddot02", "att_vm_minireddot03"}, + + {"attachment_vm_pi_mike1911_v1_slide", + "attachment_vm_pi_mike1911_barshort", "attachment_vm_pi_mike1911_barlong", + "attachment_vm_pi_mike1911_v2_slide",}, + + {"att_laser", "att_vm_pi_mike1911_laser01", "att_vm_pi_mike1911_laser02", "att_vm_pi_mike1911_laser03"} +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Slide"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_pi_mike1911_v1_slide", +-- Bodygroups = { +-- ["sights"] = 0 +-- }, +-- }, +-- { +-- Key = "attachment_vm_pi_mike1911_barlong", +-- Bodygroups = { +-- ["sights"] = 2 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike1911_barshort", +-- Bodygroups = { +-- ["sights"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike1911_v2_slide", +-- Bodygroups = { +-- ["sights"] = 6 +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_pstl", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_pstl03", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_pstl04", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot01", +-- Bodygroups = { +-- ["sights"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.35) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02", +-- Bodygroups = { +-- ["sights"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.3) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03", +-- Bodygroups = { +-- ["sights"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.3) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider_psl01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0.2, 0), Angle()}, +-- [3] = {Vector(0, -0.5, 0), Angle()}, +-- [4] = {Vector(-0.02, 0, -0.1), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike1911_muzzlebrake", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0.2, 0), Angle()}, +-- [3] = {Vector(0, -0.5, 0), Angle()}, +-- [4] = {Vector(-0.02, 0, -0.1), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator_pstl01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0.2, 0), Angle()}, +-- [3] = {Vector(0, -0.5, 0), Angle()}, +-- [4] = {Vector(-0.02, 0, -0.1), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_oil_filter_suppressor", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0.2, 0), Angle()}, +-- [3] = {Vector(0, -0.5, 0), Angle()}, +-- [4] = {Vector(-0.02, 0, -0.1), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, + +-- { +-- Key = "attachment_vm_silencer_pstl_02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0.2, 0), Angle()}, +-- [3] = {Vector(0, -0.5, 0), Angle()}, +-- [4] = {Vector(-0.02, 0, -0.1), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencerpstl03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0.2, 0), Angle()}, +-- [3] = {Vector(0, -0.5, 0), Angle()}, +-- [4] = {Vector(-0.02, 0, -0.1), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencerpstl", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0.2, 0), Angle()}, +-- [3] = {Vector(0, -0.5, 0), Angle()}, +-- [4] = {Vector(-0.02, 0, -0.1), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_pi_mike1911_v1_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike1911_mmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike1911_xmags", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 7, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_m1911/shared.lua b/lua/weapons/mg_m1911/shared.lua new file mode 100644 index 0000000..2bbcc48 --- /dev/null +++ b/lua/weapons/mg_m1911/shared.lua @@ -0,0 +1,153 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_pistol") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_m1911", "VGUI/entities/mg_m1911", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_pi_mike_1911") +end + +SWEP.Base = "mg_base" + +SWEP.PrintName = "M1911" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Pistols" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_m1911.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_m1911.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_mike1911_fire_first"), + ReleasedSound = Sound("weap_mike1911_fire_disconnector"), + Time = 0.025 +} +SWEP.Slot = 1 +SWEP.HoldType = "Pistol" + +SWEP.Primary.Sound = Sound("weap_mike1911_fire_plr") +SWEP.Primary.Ammo = "Pistol" +SWEP.Primary.ClipSize = 7 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 450 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "AC_muzzle_pistol_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + Inside = { + Layer = Sound("Atmo_Pistol.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Semi Auto", + OnSet = function() + return nil + end + } +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.25, --accuracy while hip + Ads = 0.12, --accuracy while aiming + Increase = 0.2, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.1, --the cone size will not go beyond this size + Decrease = 0.5, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 76676 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 3}, --random value between the 2 + Horizontal = {-0.16, 0.23}, --random value between the 2 + Shake = 2.7, --camera shake + AdsMultiplier = 0.45, --multiply the values by this amount while aiming + Seed = 123456 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {51, 22}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 23, --in meters, damage scales within this distance + DropOffStartRange = 7, + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.9, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 15 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_pistol_offset", + Angles = Angle(0, 90, -90), + Pos = Vector(3.5, -3, -2) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0.13, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_pistol_offset", + X = { + [0] = {Pos = Vector(0, 2, -2), Angles = Angle(30, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(0, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(-3, 0, 0), Angles = Angle(-10, -30, 0)}, + [1] = {Pos = Vector(-4, 0, 0), Angles = Angle(0, 30, 0)} + } + }, + + RecoilMultiplier = 1, + KickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_45" + diff --git a/lua/weapons/mg_m9/animations.lua b/lua/weapons/mg_m9/animations.lua new file mode 100644 index 0000000..838d952 --- /dev/null +++ b/lua/weapons/mg_m9/animations.lua @@ -0,0 +1,414 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.35, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Drop")) end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 0.8, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Raise_First.Up")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("MW19_M9.Raise_First.Hammer")) end}, + {Time = 0.53, Callback = function(self) self:DoSound(Sound("MW19_M9.Raise_First.End")) end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 1.5, + Fps = 30, + MagLength = 1.06, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.066, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start")) end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout")) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("MW19_M9.Maginsert")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End")) end}, + {Time = 1.53, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_xmaglrg"}, + Length = 1.5, + Fps = 30, + MagLength = 1.06, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.066, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start_XmagLrg")) end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout_XmagLrg")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin_XmagLrg")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End_XmagLrg")) end}, + {Time = 1.53, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 1.5, + Fps = 30, + MagLength = 1.06, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.066, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start_Xmag")) end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout_Xmag")) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin_Xmag")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End_Xmag")) end}, + {Time = 1.53, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.1, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.26, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout_Fast")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("MW19_M9.Maginsert_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin_Fast")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End_Fast")) end}, + {Time = 1, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_xmaglrg_fast"}, + Length = 1.1, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start_XmagLrg_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.26, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout_XmagLrg_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin_XmagLrg_Fast")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End_XmagLrg_Fast")) end}, + {Time = 1, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.1, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start_Xmag_Fast")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.26, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout_Xmag_Fast")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("MW19_M9.Maginsert_Xmag_Fast")) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin_Xmag_Fast")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End_Xmag_Fast")) end}, + {Time = 1, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 1.8, + Fps = 30, + MagLength = 0.75, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start_Empty")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout_Empty")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin_Empty")) end}, + {Time = 1.26, Callback = function(self) self:DoSound(Sound("MW19_M9.Charge")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End_Empty")) end}, + {Time = 1.63, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 1.8, + Fps = 30, + MagLength = 0.75, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start_Empty_Xmag")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout_Empty_Xmag")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin_Empty_Xmag")) end}, + {Time = 1.26, Callback = function(self) self:DoSound(Sound("MW19_M9.Charge_Xmag")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End_Empty")) end}, + {Time = 1.63, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_xmaglrg"}, + Length = 1.8, + Fps = 30, + MagLength = 0.75, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start_Empty_Xmag")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout_Empty_XmagLrg")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin_Empty_XmagLrg")) end}, + {Time = 1.26, Callback = function(self) self:DoSound(Sound("MW19_M9.Charge_XmagLrg")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End_Empty")) end}, + {Time = 1.63, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.1, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start_Empty_Fast")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout_Empty_Fast")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin_Empty_Fast")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_M9.Charge_Fast")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End_Empty_Fast")) end}, + {Time = 1, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 1.1, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start_Empty_Xmag_Fast")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout_Empty_Xmag_Fast")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin_Empty_Xmag_Fast")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_M9.Charge_Fast")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End_Empty_Xmag_Fast")) end}, + {Time = 1, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_xmaglrg_fast"}, + Length = 1.1, + Fps = 30, + MagLength = 0.8, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_Start_Empty_XmagLrg_Fast")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_M9.Magout_Empty_XmagLrg_Fast")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("MW19_M9.Magin_Empty_XmagLrg_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_M9.Charge_Empty_XmagLrg_Fast")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("MW19_M9.Reload_End_Empty_XmagLrg_Fast")) end}, + {Time = 1, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + self:EnableGrip() + end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Lastshot")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.ADS_Up")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.ADS_Down")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 30, + --NextSequence = "Sprint_Loop", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 26, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M9.Inspect01")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_M9.Inspect02")) end}, + {Time = 2, Callback = function(self) self:DoSound(Sound("MW19_M9.Inspect03")) end}, + {Time = 3.65, Callback = function(self) self:DoSound(Sound("MW19_M9.Inspect04")) end}, + {Time = 3.9, Callback = function(self) self:EnableGrip() end} + } + }, + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Small")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Small")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_m9/customization.lua b/lua/weapons/mg_m9/customization.lua new file mode 100644 index 0000000..a81bd78 --- /dev/null +++ b/lua/weapons/mg_m9/customization.lua @@ -0,0 +1,514 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_mike9a3_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol_Mag_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + + {"att_perk", "att_vm_pi_mike9_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_fastswap"}, + + {"att_receiver"}, + + {"attachment_vm_pi_mike9_mag", "attachment_vm_pi_mike9_xmags", "attachment_vm_pi_mike9_xmagslrg"}, + + {"attachment_vm_pi_mike9_pgrip", + "attachment_vm_pi_mike9_pstlgrpcust", "attachment_vm_pi_mike9_pstlgrplght"}, + + {"att_grip", "attachment_vm_pi_mike9_gripvert"}, + + {"att_stock", "attachment_vm_pi_mike9_stock"}, + + {"att_muzzle", "att_vm_flashhider01_pstl", "att_vm_compensator01_pstl", "att_vm_muzzlebrake01_pstl", "attachment_vm_pi_mike9_compensator", + "att_vm_silencer01_pstl", "att_vm_silencer02_pstl", "att_vm_silencer04_pstl", "att_vm_oil_filter_suppressor"}, + + {"att_sight", "att_vm_minireddot01", "att_vm_minireddot02", "att_vm_minireddot03", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_4x_east01_tall", "att_vm_4x_west01_tall", "attachment_vm_pi_mike9_scope"}, + + {"attachment_vm_pi_mike9_barrel", "attachment_vm_pi_mike9_barrel_black", + "attachment_vm_pi_mike9_barlong" , "attachment_vm_pi_mike9_barlight", + "attachment_vm_pi_mike9_barauto"}, + + {"att_laser", "att_vm_pi_mike9_laser01", "att_vm_pi_mike9_laser02", "att_vm_pi_mike9_laser03"} +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Slide"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_pi_mike9_barrel", +-- }, +-- { +-- Key = "attachment_vm_pi_mike9_barauto", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike9_barlight", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike9_barlong", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike9_barrel_black", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 1, +-- { +-- Key = "no_stock", +-- }, +-- { +-- Key = "attachment_vm_pi_mike9_stock", +-- Model = Model("models/viper/mw/attachments/attachment_vm_pi_mike9_stock.mdl"), +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = Vector(0.15, 0, 0) +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 9, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_pstl", +-- ExcludedAttachments = { +-- ["Foregrip"] = {2} +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_pstl03", +-- ExcludedAttachments = { +-- ["Foregrip"] = {2} +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_pstl04", +-- ExcludedAttachments = { +-- ["Foregrip"] = {2} +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Pistol Grip"] = { +-- Slot = 4, +-- { +-- Key = "no_pistgrip", +-- }, +-- { +-- Key = "attachment_vm_pi_mike9_pstlgrpcust", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike9_pstlgrplght", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Foregrip"] = { +-- Slot = 6, +-- { +-- Key = "no_fgrip", +-- }, +-- { +-- Key = "attachment_vm_pi_mike9_gripvert", +-- Stats = function(self) +-- self.Recoil.Shake = 0.45 + +-- if (!self:HasAttachment("attachment_vm_pi_mike9_stock")) then +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.15, 0, 0) +-- end +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 5, +-- { +-- Key = "no_optic", +-- }, +-- { +-- Key = "attachment_vm_minireddot01", +-- Bodygroups = { +-- ["rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02", +-- Bodygroups = { +-- ["rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.9) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03", +-- Bodygroups = { +-- ["rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west02_lod0", +-- Bodygroups = { +-- ["rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.15) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_scope", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.6) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_scope", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -1.48) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_lod0", +-- Bodygroups = { +-- ["rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.2) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.5) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east", +-- Bodygroups = { +-- ["rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_scope", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 0, -1.38) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west", +-- Bodygroups = { +-- ["rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_scope", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 0, -1.48) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02", +-- Bodygroups = { +-- ["rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_scope", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -1.37) +-- end +-- } +-- }, + +-- ["Muzzle"] = { +-- Slot = 7, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider_psl01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake_pstl01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike9_compensator", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_oil_filter_suppressor", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, + +-- { +-- Key = "attachment_vm_silencer_pstl_02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencerpstl03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencerpstl", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 2, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Magazine"] = { +-- Slot = 8, +-- { +-- Key = "attachment_vm_pi_mike9_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike9_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike9_xmagslrg", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 10, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } + diff --git a/lua/weapons/mg_m9/shared.lua b/lua/weapons/mg_m9/shared.lua new file mode 100644 index 0000000..329611d --- /dev/null +++ b/lua/weapons/mg_m9/shared.lua @@ -0,0 +1,155 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_pistol") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_m9", "VGUI/entities/mg_m9", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_pi_mike9") +end + +SWEP.Base = "mg_base" + +SWEP.PrintName = "Renetti" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Pistols" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_m9.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_m9.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_mike9a3_fire_first"), + ReleasedSound = Sound("weap_mike9a3_fire_disconnector"), + Time = 0.025 +} +SWEP.Slot = 1 +SWEP.HoldType = "Pistol" + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Primary.Sound = Sound("weap_mike9a3_fire_plr") +SWEP.Primary.Ammo = "Pistol" +SWEP.Primary.ClipSize = 15 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 600 +SWEP.CanChamberRound = true + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Semi Auto", + OnSet = function() + return nil + end + }, +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 20, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 40 --degrees per second +} + +SWEP.Cone = { + Hip = 0.2, --accuracy while hip + Ads = 0.15, --accuracy while aiming + Increase = 0.05, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.3, --the cone size will not go beyond this size + Decrease = 0.9, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 61543 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.1, 0.4}, --random value between the 2 + Horizontal = {-0.16, 0.23}, --random value between the 2 + Shake = 2, --camera shake + AdsMultiplier = 0.75, --multiply the values by this amount while aiming + Seed = 610312 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {28, 17}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 25, --in meters, damage scales within this distance + DropOffStartRange = 10, --in meters, damage scales within this distance + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.75, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 7, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 15 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_pistol_offset", + Angles = Angle(0, 0, 180), + Pos = Vector(12.5, -1, -3.3) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0.15, -2, -0.05) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_pistol_offset", + X = { + [0] = {Pos = Vector(0, 2, -2), Angles = Angle(30, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(0, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(2, 0, 0), Angles = Angle(-30, -30, 0)}, + [1] = {Pos = Vector(-4, 0, 0), Angles = Angle(0, 30, 0)} + } + }, + RecoilMultiplier = 1, + KickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_9mm" + +SWEP.GripPoseParameters = {"grip_offset"} \ No newline at end of file diff --git a/lua/weapons/mg_makarov/animations.lua b/lua/weapons/mg_makarov/animations.lua new file mode 100644 index 0000000..b2a5751 --- /dev/null +++ b/lua/weapons/mg_makarov/animations.lua @@ -0,0 +1,409 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30 + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.4, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Drop")) end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.Start")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.Magout")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.Magin")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.End")) end} + } + }, + + ["Equip_Drum"] = { + Sequences = {"draw_first_drum"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.Start")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.Magout")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.Magin")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.End")) end} + } + }, + + ["Equip_Drum"] = { + Sequences = {"draw_first_drum"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.Start")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.Magout")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.Magin")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("MW19_Makarov.First_Raise.End")) end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 1.66, + Fps = 30, + MagLength = 1.16, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin")) end}, + {Time = 1.36, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End")) end} + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_xmaglrg"}, + Length = 2.06, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start_Xmaglrg")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout_Xmaglrg")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Maginsert_Xmaglrg")) end}, + {Time = 1.56, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin_Xmaglrg")) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End_Xmaglrg")) end} + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 1.66, + Fps = 30, + MagLength = 1.16, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin")) end}, + {Time = 1.36, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End")) end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.2, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start_Fast")) end}, + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout_Fast")) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin_Fast")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End_Fast")) end} + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_xmaglrg_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1.26, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start_Fast_XmagLrg")) end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout_Fast_XmagLrg")) end}, + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Maginsert_Fast_XmagLrg")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin_Fast_XmagLrg")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End_Fast_XmagLrg")) end} + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.2, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start_Fast")) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout_Fast")) end}, + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin_Fast")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End_Fast")) end} + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.26, + Fps = 30, + MagLength = 1.13, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start_Empty")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout_Empty")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Maginsert_Empty")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin_Empty")) end}, + {Time = 1.56, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Charge")) end}, + {Time = 1.86, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End_Empty")) end} + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 2.26, + Fps = 30, + MagLength = 1.13, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start_Empty")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout_Empty")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Maginsert_Empty")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin_Empty")) end}, + {Time = 1.56, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Charge")) end}, + {Time = 1.86, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End_Empty")) end} + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_xmaglrg"}, + Length = 2.53, + Fps = 30, + MagLength = 1.63, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start_Empty_XmagLrg")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout_Empty_XmagLrg")) end}, + {Time = 1.23, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Maginsert_Empty_XmagLrg")) end}, + {Time = 1.53, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin_Empty_XmagLrg")) end}, + {Time = 1.73, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Charge_XmagLrg")) end}, + {Time = 2.33, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End_Empty_XmagLrg")) end} + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.36, + Fps = 30, + MagLength = 0.93, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start_Empty_Fast")) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout_Empty_Fast")) end}, + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin_Empty_Fast")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Charge_Fast")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End_Empty_Fast")) end} + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 1.36, + Fps = 30, + MagLength = 0.93, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start_Empty_Fast")) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout_Empty_Fast")) end}, + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin_Empty_Fast")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Charge_Fast")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End_Empty_Fast")) end} + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_xmaglrg_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1.26, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_Start_XmagLrg_Fast")) end}, + {Time = 0.46, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magout_XmagLrg_Fast")) end}, + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(0, 0, 0)) end}, + {Time = 1.06, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Magin_XmagLrg_Fast")) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Charge_XmagLrg_Fast")) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Reload_End_XmagLrg_Fast")) end} + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + } + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Lastshot")) end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.ADS_Up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_M1911.ADS_Down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 30 + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 26, + NextSequence = "Sprint_Loop" --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect01")) end}, + {Time = 1.16, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect02")) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect03")) end}, + {Time = 3.1, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect04")) end} + } + }, + + ["Inspect_Xmag"] = { + Sequences = {"inspect_xmag"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect01")) end}, + {Time = 1.16, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect02")) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect03")) end}, + {Time = 3.1, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect04")) end} + } + }, + + ["Inspect_Drum"] = { + Sequences = {"inspect_drum"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect01_Drum")) end}, + {Time = 1.16, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect02_Drum")) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect03_Drum")) end}, + {Time = 3.1, Callback = function(self) self:DoSound(Sound("MW19_Makarov.Inspect04_Drum")) end} + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle" + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Small")) end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Small")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_makarov/customization.lua b/lua/weapons/mg_makarov/customization.lua new file mode 100644 index 0000000..2dea6f2 --- /dev/null +++ b/lua/weapons/mg_makarov/customization.lua @@ -0,0 +1,363 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_mike_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol_Mag_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + + {"att_perk", "att_vm_pi_mike_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_fastswap"}, + + {"att_stock", "attachment_vm_pi_mike_stockl", "attachment_vm_pi_mike_stockh"}, + + {"attachment_vm_pi_mike_mag", "attachment_vm_pi_mike_xmags", "attachment_vm_pi_mike_drummag"}, + + {"attachment_vm_pi_mike_grip", "attachment_vm_pi_mike_pistolgrip01", + "attachment_vm_pi_mike_pistolgrip02", "attachment_vm_pi_mike_pistolgrip03"}, + + {"att_muzzle", "att_vm_flashhider01_pstl", "att_vm_compensator01_pstl", "att_vm_muzzlebrake01_pstl", + "att_vm_silencer01_pstl", "att_vm_silencer02_pstl", "att_vm_silencer04_pstl", "att_vm_oil_filter_suppressor"}, + + {"att_sight", "att_vm_minireddot01", "att_vm_minireddot02", "att_vm_minireddot03"}, + + {"attachment_vm_pi_mike_barrel", "attachment_vm_pi_mike_barsil", "attachment_vm_pi_mike_barlight", "attachment_vm_pi_mike_barauto"}, + + {"att_laser", "att_vm_pi_mike_laser01", "att_vm_pi_mike_laser02", "att_vm_pi_mike_laser03"} +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Slide"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_pi_mike_barrel", +-- }, +-- { +-- Key = "attachment_vm_pi_mike_barlight", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike_barsil", +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike_barauto", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 8, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_pstl", +-- -- ExcludedAttachments = { +-- -- ["Foregrip"] = {2} +-- -- }, +-- Bodygroups = { +-- ["laserrail"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_pstl03", +-- -- ExcludedAttachments = { +-- -- ["Foregrip"] = {2} +-- -- }, +-- Bodygroups = { +-- ["laserrail"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_pstl04", +-- -- ExcludedAttachments = { +-- -- ["Foregrip"] = {2} +-- -- }, +-- Bodygroups = { +-- ["laserrail"] = 1 +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 7, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot01", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.5) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.5) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.5) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 6, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider_psl01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.55, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake_pstl01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.55, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator_pstl01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.55, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_oil_filter_suppressor", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.55, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, + +-- { +-- Key = "attachment_vm_silencer_pstl_02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.55, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencerpstl03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.55, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencerpstl", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 1.55, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Pistol Grip"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_pi_mike_grip", +-- }, +-- { +-- Key = "attachment_vm_pi_mike_pistolgrip01", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike_pistolgrip02", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike_pistolgrip03", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Magazine"] = { +-- Slot = 4, +-- { +-- Key = "attachment_vm_pi_mike_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike_drummag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 2, +-- { +-- Key = "no_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike_stockl", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_mike_stockh", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- } +-- } \ No newline at end of file diff --git a/lua/weapons/mg_makarov/shared.lua b/lua/weapons/mg_makarov/shared.lua new file mode 100644 index 0000000..116a1fa --- /dev/null +++ b/lua/weapons/mg_makarov/shared.lua @@ -0,0 +1,183 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_pistol") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_makarov", "VGUI/entities/mg_makarov", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_pi_mike") +end + +SWEP.Base = "mg_base" + +SWEP.PrintName = "Sykov" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Pistols" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_makarov.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_makarov.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_mike_fire_first"), + ReleasedSound = Sound("weap_mike_fire_disconnector"), + Time = 0.025 +} +SWEP.Slot = 1 +SWEP.HoldType = "Pistol" + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "AC_muzzle_pistol", + ["MuzzleFlash_Suppressor"] = "AC_muzzle_pistol_suppressed", + ["Ejection"] = "AC_muzzle_pistol_ejection", +} + +SWEP.Primary.Sound = Sound("weap_mike_fire_plr") +SWEP.Primary.Ammo = "Pistol" +SWEP.Primary.ClipSize = 12 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 600 +SWEP.CanChamberRound = true + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Semi Auto", + OnSet = function() + return nil + end + } +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 20, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 40 --degrees per second +} + +SWEP.Cone = { + Hip = 0.25, --accuracy while hip + Ads = 0.075, --accuracy while aiming + Increase = 0.15, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.17, --multiply the increase value by this amount while aiming + Max = 0.85, --the cone size will not go beyond this size + Decrease = 0.43, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 5555 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0, 0.1}, --random value between the 2 + Horizontal = {-1, 2}, --random value between the 2 + Shake = 1.6, --camera shake + AdsMultiplier = 0.75, --multiply the values by this amount while aiming + Seed = 6954 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {25, 15}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 8, + EffectiveRange = 25, --in meters, damage scales within this distance + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.6, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 5, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 13 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_pistol_offset", + Angles = Angle(0, 90, -90), + Pos = Vector(3, -3, -1.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0.15, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_pistol_offset", + X = { + [0] = {Pos = Vector(-2, 2, 0), Angles = Angle(30, 0, -30)}, + [1] = {Pos = Vector(-1, 0, 0), Angles = Angle(0, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, -30, 0)}, + [1] = {Pos = Vector(0, 0, 1), Angles = Angle(0, 30, 0)} + } + }, + + RecoilMultiplier = 1, + KickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_9mm" + +DEFINE_BASECLASS("mg_base") + +-- function SWEP:PostDrawViewModel(vm, weapon, ply) +-- BaseClass.PostDrawViewModel(self, vm, weapon, ply) + +-- if (!IsValid(self.Customization["Magazine"].m_Model)) then +-- return +-- end + +-- local mag = self.Customization["Magazine"].m_Model +-- local max = 10 +-- local clip = math.min(max, self:Clip1() + self:GetOwner():GetAmmoCount(self:GetPrimaryAmmoType())) +-- mag:SetBodygroup(2, max - clip) + +-- local cycle = 0.7 + +-- if (self:GetMaxClip1() > 20) then +-- cycle = 0.3 +-- end + +-- local bInReloadAnimation = string.find(string.lower(self.m_seqIndex), "reload") || false + +-- if (!bInReloadAnimation || (bInReloadAnimation && self:GetViewModel():GetCycle() > cycle)) then +-- mag:SetBodygroup(1, math.min(max - self:Clip1() + 1, 10)) + +-- if (bInReloadAnimation) then +-- mag:SetBodygroup(1, max - clip) +-- end +-- end +-- end \ No newline at end of file diff --git a/lua/weapons/mg_mcharlie/animations.lua b/lua/weapons/mg_mcharlie/animations.lua new file mode 100644 index 0000000..1375230 --- /dev/null +++ b/lua/weapons/mg_mcharlie/animations.lua @@ -0,0 +1,506 @@ +AddCSLuaFile() + +local function fillMagBeforeMagin(self) + local am = math.min(self:Clip1() + self:GetOwner():GetAmmoCount(self:GetPrimaryAmmoType()), self:GetMaxClip1()) + self:UpdateMagPoseParam(self:GetMaxClip1() - am) +end + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.55, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_mcharlie.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.6, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_mcharlie.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() self:AllowRuntimeMagPoseParam(true) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_raise_first_01")) end}, + {Time = 0.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_raise_first_02")) end}, + {Time = 0.466, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_raise_first_03")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_raise_first_04")) end}, + {Time = 0.9, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.3, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_02")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_03")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_04")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_045")) end}, + {Time = 0.4, Callback = function(self) end}, + {Time = 1.33, Callback = function(self) end}, + {Time = 1.33, Callback = function(self) end}, + {Time = 1.9, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.3, + Fps = 30, + MagLength = 0.96, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.267, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_01")) end}, + {Time = 0.266, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_02")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_03")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_04")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_045")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_05")) end}, + {Time = 1.167, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.3, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_01")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_02")) end}, + {Time = 0.766, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_03")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_04")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_045")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_05")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 1.9, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.3, + Fps = 30, + MagLength = 0.96, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.267, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_fast_01")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_fast_02")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_fast_03")) fillMagBeforeMagin(self) end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_fast_04")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_fast_045")) end}, + {Time = 0.966, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_fast_05")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_fast_06")) end}, + {Time = 1.1, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_xmaglrg"}, + Length = 2.3, + Fps = 30, + MagLength = 1.367, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.15, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_01")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_02")) end}, + {Time = 0.766, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_03")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_04")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_045")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_05")) end}, + {Time = 1.9, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_xmaglrg_fast"}, + Length = 1.3, + Fps = 30, + MagLength = 0.93, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_01")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_02")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_03")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_04")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_045")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_fast_05")) end}, + {Time = 1.1, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.5, + Fps = 30, + MagLength = 1.467, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.53, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_03")) end}, + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 1.366, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_04")) end}, + {Time = 1.366, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_045")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_05")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_06")) end}, + {Time = 2.15, Callback = function(self) self:EnableGrip() end}, + {Time = 2, Callback = function(self) end}, + {Time = 2, Callback = function(self) end}, + {Time = 2, Callback = function(self) end} + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.7, + Fps = 30, + MagLength = 0.933, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_fast_01")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_fast_02")) end}, + {Time = 0.566, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_fast_03")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_fast_035")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_fast_04")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_reload_empty_fast_05")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("")) end}, + {Time = 1.5, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 2.5, + Fps = 30, + MagLength = 1.467, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_01")) end}, + {Time = 0.766, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_02")) end}, + {Time = 1.366, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_03")) end}, + {Time = 1.466, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_035")) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_04")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_05")) end}, + {Time = 2.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_06")) end}, + {Time = 2.15, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 1.7, + Fps = 30, + MagLength = 0.933, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_01")) end}, + {Time = 0.166, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_02")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_03")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_035")) end}, + {Time = 1.266, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_04")) end}, + {Time = 1.366, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_05")) end}, + {Time = 1.566, Callback = function(self) end}, + {Time = 1.4, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_xmaglrg"}, + Length = 2.3, + Fps = 30, + MagLength = 1.467, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 1.25, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_01")) end}, + {Time = 0.766, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_02")) end}, + {Time = 1.366, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_03")) end}, + {Time = 1.466, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_035")) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_04")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_05")) end}, + {Time = 2.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_06")) end}, + {Time = 2.23, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_xmaglrg_fast"}, + Length = 1.7, + Fps = 30, + MagLength = 0.93, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_01")) end}, + {Time = 0.166, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_02")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_03")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_035")) end}, + {Time = 1.266, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_04")) end}, + {Time = 1.366, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mcharlie_xmag_reload_empty_fast_05")) end}, + {Time = 1.4, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_mcharlie.fire.last")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_mcharlie.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_mcharlie.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_ar_mcharlie_selector_off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_ar_mcharlie_selector_on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.13, Callback = function(self) self:DisableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_ar_mcharlie_inspect_01")) end}, + {Time = 1.366, Callback = function(self) self:DoSound(Sound("wfoly_ar_mcharlie_inspect_02")) end}, + {Time = 2.466, Callback = function(self) self:DoSound(Sound("wfoly_ar_mcharlie_inspect_03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("wfoly_ar_mcharlie_inspect_04")) end}, + {Time = 4.233, Callback = function(self) self:DoSound(Sound("wfoly_ar_mcharlie_inspect_05")) end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end} + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0.767, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_mcharlie/customization.lua b/lua/weapons/mg_mcharlie/customization.lua new file mode 100644 index 0000000..464c0fa --- /dev/null +++ b/lua/weapons/mg_mcharlie/customization.lua @@ -0,0 +1,1049 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19_mcharlie.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doCalConversionStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + local bSup4 = self:HasAttachment("attachment_vm_silencer05") + local bSup4 = self:HasAttachment("attachment_vm_silencer06") + local bSup5 = self:HasAttachment("attachment_vm_ar_mcharlie_suppressorbarrel") + local bSup6 = self:HasAttachment("attachment_vm_ar_mcharlie_magsub") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then + self.Primary.Sound = Sound("mw19_mcharlie.fire.cal") + end +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_mcharlie_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_ar_mcharlie_barrel", "attachment_vm_ar_mcharlie_longbarrel", "attachment_vm_ar_mcharlie_shortbarrel", "attachment_vm_ar_mcharlie_suppressorbarrel"}, + + {"attachment_vm_ar_mcharlie_stock", "attachment_vm_ar_mcharlie_stock_v2", "attachment_vm_ar_mcharlie_lightstock", "att_vm_stock_heavy01", + "att_vm_stock_heavy02", "att_vm_stock_light01", "att_vm_stock_medium01", "att_vm_stock_no"}, + + {"attachment_vm_ar_mcharlie_receiver"}, + + {"attachment_vm_ar_mcharlie_mag", "attachment_vm_ar_mcharlie_magsub", "attachment_vm_ar_mcharlie_xmags", "attachment_vm_ar_mcharlie_xmags2"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west02", "att_vm_hybrid_west02_thermal", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + + {"att_laser", "attachment_vm_ar_mcharlie_laser01", "attachment_vm_ar_mcharlie_laser02", "attachment_vm_ar_mcharlie_laser03"}, + + {"att_grip", "attachment_vm_ar_mcharlie_bipodgrip", "attachment_vm_ar_mcharlie_angledgrip01", "attachment_vm_ar_mcharlie_angledgrip02", "attachment_vm_ar_mcharlie_stubbygrip01", + "attachment_vm_ar_mcharlie_stubbygrip02", "attachment_vm_ar_mcharlie_vertgrip01", "attachment_vm_ar_mcharlie_vertgrip02", + "attachment_vm_ar_mcharlie_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_mcharlie_barrel", +-- }, +-- { +-- Key = "attachment_vm_ar_mcharlie_shortbarrel", +-- Bodygroups = { +-- ["tag_sight_barrel"] = 4, +-- ["tag_tip"] = 4 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barshort_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mcharlie_longbarrel", +-- Bodygroups = { +-- ["tag_sight_barrel"] = 2, +-- ["tag_tip"] = 2 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mcharlie_suppressorbarrel", +-- Bodygroups = { +-- ["tag_tip"] = 3 +-- }, +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17} +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.01, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.12) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.035, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.034, 0.018, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, 0.04) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.034, 0.018, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.23) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.17) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.09) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.017, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 0, -0.288) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.007, 0, -0.392) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.006, 0, -0.284) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, -2, -0.222) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.00, 0, 0.207) +-- self.HybridAimAngles = Angle(-0.02, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 0, 0.7) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, -1.5, 0.223) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.008, 3, -0.165) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 3, -0.096) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, -1, 0.07) +-- self.HybridAimAngles = Angle(-0.02, 0.02, 0) +-- self.HybridAimPos = Vector(0,0,-1.14) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.022, -2, -0.1973) +-- self.HybridAimAngles = Angle(-0.02, 0.03, 0) +-- self.HybridAimPos = Vector(0, 0, -0.2) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.022, -2, -0.1973) +-- self.HybridAimAngles = Angle(-0.02, 0.03, 0) +-- self.HybridAimPos = Vector(0, 0, -0.2) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, -1, 0.14) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0.015, -45) +-- self.HybridAimPos = Vector(-1.55, 0, 0.97) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3.8, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_ar_mcharlie_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mcharlie_lightstock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mcharlie_stock_v2", +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_no", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- self.Recoil.AdsMultiplier = 0.5 +-- self.Animations.Ads_In.Fps = self.Animations.Ads_In.Fps * 1.26 +-- self.Animations.Ads_Out.Fps = self.Animations.Ads_Out.Fps * 1.26 +-- self.Animations.Draw.Fps = self.Animations.Draw.Fps * 1.26 +-- self.Animations.Holster.Fps = self.Animations.Holster.Fps * 1.26 +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -2.3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -3, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripvert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripvert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripvert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripvertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripvertpro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_mcharlie_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mcharlie_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mcharlie_magsub", +-- Stats = function(self) +-- doCalConversionStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mcharlie_xmags2", +-- Stats = function(self) +-- end +-- } +-- }, + +-- } \ No newline at end of file diff --git a/lua/weapons/mg_mcharlie/shared.lua b/lua/weapons/mg_mcharlie/shared.lua new file mode 100644 index 0000000..e3d9714 --- /dev/null +++ b/lua/weapons/mg_mcharlie/shared.lua @@ -0,0 +1,207 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("mw_fas2_muzzleflash_suppressed") +PrecacheParticleSystem("mw_ins2_shell_eject") +PrecacheParticleSystem("mw_fas2_muzzleflash_ar_smoke_barrel") +include("animations.lua") +include("customization.lua") + + +if CLIENT then + killicon.Add( "mg_mcharlie", "VGUI/entities/mg_mcharlie", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_mcharlie") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_barshort_offset", "grip_griphip_offset", "grip_gripvert_offset", +"grip_gripang_offset", "grip_gripvertpro_offset", "grip_vert_barshort_offset", "grip_vertpro_barshort_offset", "grip_ang_barshort_offset"} + +SWEP.PrintName = "M13" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_mcharlie.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_mcharlie.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("mw19.mcharlie.fire.first"), + ReleasedSound = Sound("mw19.mike4.fire.disconnector"), + Time = 0.025 +} + +SWEP.Primary.Sound = Sound("mw19_mcharlie.Fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 895.5223880597015 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "mw_fas2_muzzleflash_ar_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.23, --accuracy while hip + Ads = 0.055, --accuracy while aiming + Increase = 0.05, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.3, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 4156 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 1.5}, --random value between the 2 + Horizontal = {-1.8, 1.8}, --random value between the 2 + Shake = 1.4, --camera shake + AdsMultiplier = 0.25, --multiply the values by this amount while aiming + Seed = 6589132, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1 +} + +SWEP.Bullet = { + Damage = {25, 13}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 15, --in meters, damage will start dropping off after this range + EffectiveRange = 40, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.8, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 95, -90), + Pos = Vector(3,-6,-3.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, -1, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 0, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.5, + KickMultiplier = 0.4, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_556" + + +DEFINE_BASECLASS("mg_base") +SWEP.bEnableMagPoseParam = true + +function SWEP:PostDrawViewModel(vm, weapon, ply) + BaseClass.PostDrawViewModel(self, vm, weapon, ply) + + if (self.bEnableMagPoseParam) then + self:UpdateMagPoseParam(self:GetMaxClip1() - self:Clip1()) + end +end + +function SWEP:AllowRuntimeMagPoseParam(allow) + self.bEnableMagPoseParam = allow +end + +local tiny = Vector(0.01, 0.01, 0.01) +local normal = Vector(1, 1, 1) + +function SWEP:UpdateMagPoseParam(val) + --[[self:GetViewModel():SetPoseParameter("bullets_offset", val) + + for b = 1, 30, 1 do + local bone = "j_bullet_"..b + + if (b < 10) then + bone = "j_bullet_0"..b + end + + local bId = self:LookupBoneCached(self:GetViewModel(), bone) + + if (bId != nil) then + self:GetViewModel():ManipulateBoneScale(bId, self:GetMaxClip1() - (val + 1) < b && tiny || normal) + end + end]] +end \ No newline at end of file diff --git a/lua/weapons/mg_mgolf34/animations.lua b/lua/weapons/mg_mgolf34/animations.lua new file mode 100644 index 0000000..9a60d96 --- /dev/null +++ b/lua/weapons/mg_mgolf34/animations.lua @@ -0,0 +1,266 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 1.4, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 2.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.35, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise.first")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"Reload"}, + Length = 8.8, + Fps = 30, + MagLength = 6.6, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_fast"] = { + Sequences = {"Reload_fast"}, + Length = 6.6, + Fps = 30, + MagLength = 5.1, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Empty"] = { + Sequences = {"Reload_empty"}, + Length = 8.8, + Fps = 30, + MagLength = 6.6, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_fast"] = { + Sequences = {"Reload_empty_fast"}, + Length = 6.6, + Fps = 30, + MagLength = 5.1, + NextSequence = "Idle", + Events = { + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.5, --if melee hits + + Damage = 100, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + } +} \ No newline at end of file diff --git a/lua/weapons/mg_mgolf34/customization.lua b/lua/weapons/mg_mgolf34/customization.lua new file mode 100644 index 0000000..4ea6b63 --- /dev/null +++ b/lua/weapons/mg_mgolf34/customization.lua @@ -0,0 +1,1162 @@ +AddCSLuaFile() +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_mgolf34_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doSmgStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4) then + self.Primary.Sound = Sound("mw19.akilo47.smgcal.fire") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Shell = "mwb_shelleject_545" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_lm_mgolf34_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_lm_mgolf34_stock", "att_vm_stock_heavy01", + "att_vm_stock_heavy02", "att_vm_stock_light01", "att_vm_stock_medium01", "att_vm_stock_no"}, + + {"attachment_vm_lm_mgolf34_mag", "attachment_vm_lm_mgolf34_mag_xlrg"}, + + {"attachment_vm_lm_mgolf34_barrel", "attachment_vm_lm_mgolf34_barrel_short", + "attachment_vm_lm_mgolf34_barrel_mid", "attachment_vm_lm_mgolf34_barrel_long"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", 'att_vm_silencer06'}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", + "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall"}, + + {"att_laser", "attachment_vm_lm_mgolf34_laser01_cylinder", "attachment_vm_lm_mgolf34_laser02_cylinder", + "attachment_vm_lm_mgolf34_laser03_cylinder"}, + + {"att_grip", "attachment_vm_lm_mgolf34_angledgrip01", "attachment_vm_lm_mgolf34_angledgrip02", "attachment_vm_lm_mgolf34_stubbygrip01", + "attachment_vm_lm_mgolf34_stubbygrip02", "attachment_vm_lm_mgolf34_vertgrip01", "attachment_vm_lm_mgolf34_vertgrip02", + "attachment_vm_lm_mgolf34_vertgrip03", "attachment_vm_lm_mgolf34_bipod"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_lm_mgolf34_barrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf34_custombarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf34_lmgbarrel_grip", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf34_lmgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf34_smgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 2, +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_smg_pose_offset") +-- end, +-- UsingSmgBarrel = true +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf34_smgbarcust", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.2, 0.07, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.03, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.08) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.3) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.22) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.29) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.082) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 3, -1.23) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.126, 2, -1.411) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -1.514) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0084, 2, -1.407) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0155, 2, -1.345) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.016, 2, -0.917) + -- self.HybridAimAngles = Angle(-0.05, 0, -45) + -- self.HybridAimPos = Vector(-1.8, 2, -0.45) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 2, -0.902) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 4, -1.287) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 4, -1.222) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 3, -1.055) + -- self.HybridAimAngles = Angle(0, 0.03, 0) + -- self.HybridAimPos = Vector(0,0,-2.25) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -0.985) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2, -0.15) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_lm_mgolf34_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf34_lmgstock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf34_smgstock_unfolded", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf34_smgstock", +-- ExcludedAttachments = { +-- ["Magazine"] = {4} +-- }, +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- VElement = { +-- Bone = "tag_stock_attach", +-- Position = Vector(2.5, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- --self:RemoveValue("LaserAimAngles") +-- --self:RemoveValue("LaserAimPos") +-- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 +-- end +-- }, + -- { + -- Key = "attachment_vm_lm_mgolf34_stockno", + -- Bodygroups = { + -- ["stock_adapter"] = 1 + -- }, + -- Stats = function(self) + -- --self:RemoveValue("LaserAimAngles") + -- --self:RemoveValue("LaserAimPos") + -- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 + -- end + -- } + -- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_lm_mgolf34_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf34_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf34_smgmag", +-- Stats = function(self) +-- doSmgStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf34_drum_mag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_mgolf34/shared.lua b/lua/weapons/mg_mgolf34/shared.lua new file mode 100644 index 0000000..20e9ee4 --- /dev/null +++ b/lua/weapons/mg_mgolf34/shared.lua @@ -0,0 +1,176 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_mgolf34", "VGUI/entities/mg_mgolf34", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_lm_mgolf34") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "MG34" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Lightmachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_mgolf34.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_mgolf34.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("weap_mgolf34_fire_prefire"), + ReleasedSound = Sound("weap_mgolf34_fire_disconnector"), + Time = 0.15 +} + +SWEP.Primary.Sound = Sound("weap_mgolf34_fire_plr") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 50 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 878 +SWEP.CanChamberRound = false +SWEP.CanDisableAimReload = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_lmg", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_LMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.7, --accuracy while hip + Ads = 0.13, --accuracy while aiming + Increase = 0.093, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.8, --multiply the increase value by this amount while aiming + Max = 1.75, --the cone size will not go beyond this size + Decrease = 0.6, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 101010101, --just give this a random number + DecreaseEveryShot = 0.1, + MinDecreaseEveryShot = 0.35 +} + +SWEP.Recoil = { + Vertical = {2, 2.5}, --random value between the 2 + Horizontal = {-3, 3}, --random value between the 2 + Shake = 1.5, --camera shake + AdsMultiplier = 0.7, --multiply the values by this amount while aiming + Seed = 1, --give this a random number until you like the current recoil pattern + DecreaseEveryShot = 0.1, + MinDecreaseEveryShot = 0.25 +} + +SWEP.Bullet = { + Damage = {38, 23}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 22.3, --in meters, damage will start dropping off after this range + EffectiveRange = 55, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.8, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 8 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(-90, 0, -90), + Pos = Vector(10,3.5,-4) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -4, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(3, 0, -2), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.45, + KickMultiplier = 2, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_762" + +DEFINE_BASECLASS(SWEP.Base) + +function SWEP:PreAttachments() + BaseClass.PreAttachments(self) + + if (!self:HasAttachment("att_sight")) then + self.Animations.Reload.Sequences = {"Reload_optics"} + self.Animations.Reload_Empty.Sequences = {"Reload_empty_optics"} + self.Animations.Reload_fast.Sequences = {"Reload_fast_optics"} + self.Animations.Reload_empty_fast.Sequences = {"Reload_empty_fast_optics"} + end +end \ No newline at end of file diff --git a/lua/weapons/mg_mgolf36/animations.lua b/lua/weapons/mg_mgolf36/animations.lua new file mode 100644 index 0000000..853f244 --- /dev/null +++ b/lua/weapons/mg_mgolf36/animations.lua @@ -0,0 +1,323 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.75, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.35, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise.first")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"Reload"}, + Length = 3.6, + Fps = 30, + MagLength = 2.5, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_armag"] = { + Sequences = {"reload_armag"}, + Length = 2.45, + Fps = 30, + MagLength = 1.7, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_fast"] = { + Sequences = {"Reload_fast"}, + Length = 2.3, + Fps = 30, + MagLength = 1.7, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_fast_armag"] = { + Sequences = {"reload_fast_armag"}, + Length = 1.8, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + } + }, + + + ["Reload_Empty"] = { + Sequences = {"Reload_empty"}, + Length = 4.2, + Fps = 30, + MagLength = 2.5, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_armag"] = { + Sequences = {"reload_empty_armag"}, + Length = 3.2, + Fps = 30, + MagLength = 1.95, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_fast"] = { + Sequences = {"Reload_empty_fast"}, + Length = 2.9, + Fps = 30, + MagLength = 1.65, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_fast_armag"] = { + Sequences = {"reload_empty_fast_armag"}, + Length = 2.2, + Fps = 30, + MagLength = 1.35, + NextSequence = "Idle", + Events = { + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect_armag"] = { + Sequences = {"inspect_armag"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_mgolf36/customization.lua b/lua/weapons/mg_mgolf36/customization.lua new file mode 100644 index 0000000..89007ed --- /dev/null +++ b/lua/weapons/mg_mgolf36/customization.lua @@ -0,0 +1,1166 @@ +AddCSLuaFile() +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_mgolf36_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doSmgStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4) then + self.Primary.Sound = Sound("mw19.akilo47.smgcal.fire") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Shell = "mwb_shelleject_545" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_lm_mgolf36_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_lm_mgolf36_stock", "attachment_vm_lm_mgolf36_stock_heavy", + "attachment_vm_lm_mgolf36_stock_light", "attachment_vm_lm_mgolf36_stock_tactical", "attachment_vm_lm_mgolf36_stock_no"}, + + {"attachment_vm_lm_mgolf36_drummag", "attachment_vm_lm_mgolf36_mag", "attachment_vm_lm_mgolf36_60mag", + "attachment_vm_lm_mgolf36_50mag"--[[, "attachment_vm_lm_mgolf36_drummag200", "attachment_vm_lm_mgolf36_magblackout"]]}, + + {"attachment_vm_lm_mgolf36_pistolgrip"}, + + {"att_receiver"}, + + {"attachment_vm_lm_mgolf36_barrel", "attachment_vm_lm_mgolf36_barrel_short", + "attachment_vm_lm_mgolf36_barrel_med"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", 'att_vm_silencer06'}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "attachment_vm_lm_mgolf36_reflex", "attachment_vm_lm_mgolf36_4x"}, + + {"att_laser", "attachment_vm_lm_mgolf36_laser01", "attachment_vm_lm_mgolf36_laser02", + "attachment_vm_lm_mgolf36_laser03"}, + + {"att_grip", "attachment_vm_lm_mgolf36_angledgrip01", "attachment_vm_lm_mgolf36_angledgrip02", "attachment_vm_lm_mgolf36_stubbygrip01", + "attachment_vm_lm_mgolf36_stubbygrip02", "attachment_vm_lm_mgolf36_vertgrip01", "attachment_vm_lm_mgolf36_vertgrip02", + "attachment_vm_lm_mgolf36_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_lm_mgolf36_barrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf36_custombarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf36_lmgbarrel_grip", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf36_lmgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf36_smgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 2, +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_smg_pose_offset") +-- end, +-- UsingSmgBarrel = true +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf36_smgbarcust", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.2, 0.07, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.03, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.08) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.3) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.22) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.29) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.082) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 3, -1.23) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.126, 2, -1.411) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -1.514) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0084, 2, -1.407) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0155, 2, -1.345) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.016, 2, -0.917) + -- self.HybridAimAngles = Angle(-0.05, 0, -45) + -- self.HybridAimPos = Vector(-1.8, 2, -0.45) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 2, -0.902) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 4, -1.287) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 4, -1.222) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 3, -1.055) + -- self.HybridAimAngles = Angle(0, 0.03, 0) + -- self.HybridAimPos = Vector(0,0,-2.25) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -0.985) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2, -0.15) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_lm_mgolf36_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf36_lmgstock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf36_smgstock_unfolded", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf36_smgstock", +-- ExcludedAttachments = { +-- ["Magazine"] = {4} +-- }, +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- VElement = { +-- Bone = "tag_stock_attach", +-- Position = Vector(2.5, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- --self:RemoveValue("LaserAimAngles") +-- --self:RemoveValue("LaserAimPos") +-- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 +-- end +-- }, + -- { + -- Key = "attachment_vm_lm_mgolf36_stockno", + -- Bodygroups = { + -- ["stock_adapter"] = 1 + -- }, + -- Stats = function(self) + -- --self:RemoveValue("LaserAimAngles") + -- --self:RemoveValue("LaserAimPos") + -- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 + -- end + -- } + -- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_lm_mgolf36_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf36_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf36_smgmag", +-- Stats = function(self) +-- doSmgStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mgolf36_drum_mag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_mgolf36/shared.lua b/lua/weapons/mg_mgolf36/shared.lua new file mode 100644 index 0000000..221d067 --- /dev/null +++ b/lua/weapons/mg_mgolf36/shared.lua @@ -0,0 +1,167 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_mgolf36", "VGUI/entities/mg_mgolf36", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_lm_mgolf36") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "Holger-26" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Lightmachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_mgolf36.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_mgolf36.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("weap_mgolf36_fire_prefire"), + ReleasedSound = Sound("weap_mgolf36_fire_disconnector"), + Time = 0.015 +} + +SWEP.Primary.Sound = Sound("weap_mgolf36_fire_plr") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 704 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_lmg", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_LMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + [2] = { + Name = "Semi Automatic", + OnSet = function(self) + self.Primary.Automatic = false + self.Primary.RPM = 500 + return "Firemode_Semi" + end + }, +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.3, --accuracy while hip + Ads = 0.06, --accuracy while aiming + Increase = 0.075, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.1, --the cone size will not go beyond this size + Decrease = 0.5, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 76676 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1.3, 1.7}, --random value between the 2 + Horizontal = {-1.25, 1.25}, --random value between the 2 + Shake = 1.1, --camera shake + AdsMultiplier = 0.3, --multiply the values by this amount while aiming + Seed = 142375, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1 +} + +SWEP.Bullet = { + Damage = {28, 12}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 25, --in meters, damage will start dropping off after this range + EffectiveRange = 47, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.65, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 8 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(7, 0, -180), + Pos = Vector(11,-1,-4) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -4, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(3, 0, -2), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.45, + KickMultiplier = 2, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_556" \ No newline at end of file diff --git a/lua/weapons/mg_mike14/animations.lua b/lua/weapons/mg_mike14/animations.lua new file mode 100644 index 0000000..63904fb --- /dev/null +++ b/lua/weapons/mg_mike14/animations.lua @@ -0,0 +1,505 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.85, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_raise")) end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.8, + Fps = 30, + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_drop")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0.933, Callback = function(self) self:EnableGrip2() end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_raise_first_01")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_raise_first_02")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_raise_first_03")) end}, + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload"}, + Length = 2, + MagLength = 1.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_045")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_03")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_02")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_01")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_05")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_04")) end}, + + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.36, + MagLength = 0.83, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_02")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_04")) end}, + {Time = 1.067, Callback = function(self) self:EnableGrip() end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_03")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_035")) end}, + + } + }, + + ["Reload"] = { + Sequences = {"Reload_Xmag"}, + Length = 2, + MagLength = 1.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmag_01")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmag_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmag_03")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmag_04")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmag_05")) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmag_06")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmag_045")) end}, + + } + }, + + ["Reload_Fast"] = { + Sequences = {"Reload_Xmag_Fast"}, + Length = 1.36, + MagLength = 0.83, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmag_05")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmag_045")) end}, + {Time = 1.067, Callback = function(self) self:EnableGrip() end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmag_04")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmag_02")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmag_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmag_01")) end}, + + } + }, + + ["Reload_Xmag2"] = { + Sequences = {"Reload_Xmag2"}, + Length = 2, + MagLength = 1.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmaglrg_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmaglrg_01")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmaglrg_06")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmaglrg_04")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmaglrg_05")) end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmaglrg_045")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_xmaglrg_03")) end}, + + } + }, + + ["Reload_Xmag2_Fast"] = { + Sequences = {"Reload_Xmag2_Fast"}, + Length = 1.36, + MagLength = 0.83, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.067, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmaglrg_01")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmaglrg_05")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmaglrg_04")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmaglrg_045")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmaglrg_02")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_fast_xmaglrg_03")) end}, + + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"Reload_Empty"}, + Length = 2.6, + MagLength = 1.36, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_045")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_05")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.76, Callback = function(self) self:DisableGrip2() end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 2.23, Callback = function(self) self:EnableGrip2() end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_03")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_02")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_01")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_07")) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_06")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_04")) end}, + {Time = 2.267, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"Reload_Empty_Fast"}, + Length = 1.8, + MagLength = 0.86, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_05")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_04")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_01")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_03")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_035")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"Reload_Empty_Xmag"}, + Length = 2.6, + MagLength = 1.36, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.76, Callback = function(self) self:DisableGrip2() end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 2.23, Callback = function(self) self:EnableGrip2() end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmag_035")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmag_01")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmag_02")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmag_03")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmag_04")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmag_05")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"Reload_Empty_Xmag_Fast"}, + Length = 1.8, + MagLength = 0.86, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmag_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmag_01")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmag_06")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmag_04")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmag_035")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmag_03")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmag_05")) end}, + } + }, + + ["Reload_Empty_Xmag2"] = { + Sequences = {"Reload_Empty_Xmag2"}, + Length = 2.6, + MagLength = 1.36, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmaglrg_035")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.76, Callback = function(self) self:DisableGrip2() end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 2.23, Callback = function(self) self:EnableGrip2() end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmaglrg_02")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmaglrg_03")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmaglrg_01")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmaglrg_04")) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_xmaglrg_05")) end}, + } + }, + + ["Reload_Empty_Xmag2_Fast"] = { + Sequences = {"Reload_Empty_Xmag2_Fast"}, + Length = 1.8, + MagLength = 0.86, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_03")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_04")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_05")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_06")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.533, Callback = function(self) self:EnableGrip() end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_reload_empty_fast_xmaglrg_035")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike14.fire.last")) end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike14.ads.up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike14.ads.down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_inspect_01")) end}, + {Time = 2.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_inspect_03")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_inspect_02")) end}, + {Time = 4.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_mike14_inspect_04")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DisableGrip2() end}, + {Time = 0.833, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.767, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_mike14/customization.lua b/lua/weapons/mg_mike14/customization.lua new file mode 100644 index 0000000..2269f9c --- /dev/null +++ b/lua/weapons/mg_mike14/customization.lua @@ -0,0 +1,942 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.mike14.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_DMR_Sup.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_DMR_Sup.Inside"), + Reflection = Sound("Reflection_Sniper.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sn_mike14_perk_soh", "att_perk_fmj", "attachment_vm_sn_mike14_perk_fullauto", "att_perk_ricochet"}, + + {"att_stock", "attachment_vm_sn_mike14_stockcqb_alt", + "attachment_vm_sn_mike14_stock_v2_alt", "attachment_vm_sn_mike14_stock_tactical", + --[["attachment_vm_sn_mike14_stock_heavy", "attachment_vm_sn_mike14_stock_v3",]] "attachment_vm_sn_mike14_stock_heavy01", "attachment_vm_sn_mike14_stock_heavy02", + "attachment_vm_sn_mike14_stock_light01", "attachment_vm_sn_mike14_stock_medium01", "attachment_vm_sn_mike14_stock_no"}, + + {"attachment_vm_sn_mike14_mag", "attachment_vm_sn_mike14_xmags", "attachment_vm_sn_mike14_xmags2"}, + + {"attachment_vm_sn_mike14_barrel", "attachment_vm_sn_mike14_barlong2", + "attachment_vm_sn_mike14_barlong", "attachment_vm_sn_mike14_barlight"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_sn_mike14_laser01", "attachment_vm_sn_mike14_laser02", + "attachment_vm_sn_mike14_laser03"}, + + {"att_grip", "attachment_vm_sn_mike14_bipodgrip", "attachment_vm_sn_mike14_angledgrip01", "attachment_vm_sn_mike14_angledgrip02", "attachment_vm_sn_mike14_stubbygrip01", + "attachment_vm_sn_mike14_stubbygrip02", "attachment_vm_sn_mike14_vertgrip01", "attachment_vm_sn_mike14_vertgrip02", + "attachment_vm_sn_mike14_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + + +-- SWEP.Customization = { +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- self.Animations.Reload_Xmag2 = self.Animations.Reload_Xmag2_Fast +-- self.Animations.Reload_Empty_Xmag2 = self.Animations.Reload_Empty_Xmag2_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sn_mike14_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_mike14_barlight", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_mike14_barlong", +-- Bodygroups = { +-- ["tag_tip"] = 2, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_mike14_barlong2", +-- Bodygroups = { +-- ["tag_tip"] = 4, +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 1.9, 0), Angle()}, +-- [4] = {Vector(0, 3.25, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.05, 0) --i know you tell me not to fuck with this but the dot being actually centered on the glass demands it xoxo +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -0.85) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -0.85) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.02, 5, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05,0.05,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.15,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 4, -1.23) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0, 4, -1.34) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 4, -1.23) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0015, 4, -1.165) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 4, -0.74) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.75, 10.5, -0.25) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 4, -0.725) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01,6,-1.16) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0035,6,-1.095) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 4, -0.88) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,3.5,-2.05) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 4, -1.145) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0, 0.025, 0) +-- self.HybridAimPos = Vector(-0.015, 4, -1.15) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 4, -1.145) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0, 0.025, 0) +-- self.HybridAimPos = Vector(-0.015, 4, -1.15) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 4, -0.81) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 4.5, -0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 5, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 6, +-- { +-- Key = "no_attachment", +-- }, +-- { +-- Key = "attachment_vm_sn_mike14_stock_v2_alt", +-- Bodygroups = { +-- ["tag_stock"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_heavy", +-- Bodygroups = { +-- ["tag_stock"] = 2, +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter2("grip_pistolgrip_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_mike14_stockcqb_alt", +-- Bodygroups = { +-- ["tag_stock"] = 3, +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter2("grip_pistolgrip_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_mike14_stock_tactical", +-- Bodygroups = { +-- ["tag_stock"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sn_mike14_mag" +-- }, +-- { +-- Key = "attachment_vm_sn_mike14_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_mike14_xmags2", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- } +-- } \ No newline at end of file diff --git a/lua/weapons/mg_mike14/shared.lua b/lua/weapons/mg_mike14/shared.lua new file mode 100644 index 0000000..63c0d23 --- /dev/null +++ b/lua/weapons/mg_mike14/shared.lua @@ -0,0 +1,164 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_mike14", "VGUI/entities/mg_mike14", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sn_mike14") +end + +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} +SWEP.GripPoseParameters2 = {"grip_pistolgrip_offset"} + +SWEP.Base = "mg_base" + +SWEP.PrintName = "EBR-14" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Marksman Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_mike14.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_mike14.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.mike14.fire.first"), + ReleasedSound = Sound("mw19.mike14.disconnector"), + Time = 0.03 +} + +SWEP.Slot = 3 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("mw19.mike14.fire") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 15 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 297 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_dmr", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_br1.Outside"), + Reflection = Sound("Reflection_Shotgun.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Semi-Automatic", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 1, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.086, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.025, --multiply the increase value by this amount while aiming + Max = 2.5, --the cone size will not go beyond this size + Decrease = 1, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6985 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {3, 4}, --random value between the 2 + Horizontal = {-1, 1}, --random value between the 2 + Shake = 2, --camera shake + AdsMultiplier = 0.1, --multiply the values by this amount while aiming + Seed = 3584, --give this a random number until you like the current recoil pattern +} +SWEP.Bullet = { + Damage = {50, 23}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 150, --in meters, damage scales within this distance + DropOffStartRange = 30, + Range = 250, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1.25, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 2, + Penetration = { + DamageMultiplier = 0.85, --how much damaged is multipled by when leaving a surface. + MaxCount = 6, --how many times the bullet can penetrate. + Thickness = 25, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,100,-90), + Pos = Vector(2,-2,-3.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 1, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1.75, + KickMultiplier = 3.3, + AimKickMultiplier = 0.45 +} + +SWEP.Shell = "mwb_shelleject_7625x" \ No newline at end of file diff --git a/lua/weapons/mg_mike26/animations.lua b/lua/weapons/mg_mike26/animations.lua new file mode 100644 index 0000000..bdae58d --- /dev/null +++ b/lua/weapons/mg_mike26/animations.lua @@ -0,0 +1,446 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike26.raise")) end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.6, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike26.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_raise_first_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_raise_first_01")) end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_raise_first_03")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.5, + Fps = 30, + MagLength = 1.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_04")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_05")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_02")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_01")) end}, + -- {Time = 1, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.95, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_02")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_01")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_04")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_05")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_smag"] = { + Sequences = {"reload_smag"}, + Length = 2.5, + Fps = 30, + MagLength = 1.9, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_smag_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_smag_02")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_smag_03")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_smag_04")) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_smag_06")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_smag_05")) end}, + -- {Time = 1, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_smag_fast"] = { + Sequences = {"reload_smag_fast"}, + Length = 1.95, + Fps = 30, + MagLength = 1.25, + NextSequence = "Idle", + Events = { + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_smag_045")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_smag_05")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_smag_04")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_smag_01")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_smag_02")) end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_smag_03")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.5, + Fps = 30, + MagLength = 1.9, + NextSequence = "Idle", + Events = { + {Time = 2.167, Callback = function(self) end}, + {Time = 2.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_xmag_05")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_xmag_04")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_xmag_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_xmag_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_xmag_02")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_xmag_045")) end}, + -- {Time = 0.7, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_xmag_fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.95, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0.9, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_xmag_045")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_xmag_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_xmag_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_xmag_01")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_xmag_05")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_fast_xmag_04")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.3, + Fps = 30, + MagLength = 2, + NextSequence = "Idle", + Events = { + { + Time = 0.1, + Callback = function(self) + if (!self.bEjected) then + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + self.bEjected = true + end + end + }, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_06")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_07")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_04")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_05")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_02")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_01")) end}, + {Time = 2.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_08")) end}, + {Time = 3.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_09")) end}, + -- {Time = 1.2, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.3, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + { + Time = 0.1, + Callback = function(self) + if (!self.bEjected) then + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + self.bEjected = true + end + end + }, + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_02")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_01")) end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_06")) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_07")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_04")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_05")) end}, + -- {Time = 1, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_empty_smag"] = { + Sequences = {"reload_empty_smag"}, + Length = 3.3, + Fps = 30, + MagLength = 2, + NextSequence = "Idle", + Events = { + { + Time = 0.1, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 3.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_smag_08")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_smag_04")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_smag_05")) end}, + {Time = 2.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_smag_07")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_smag_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_smag_01")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_smag_03")) end}, + {Time = 2.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_smag_06")) end}, + -- {Time = 1.2, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_smag_empty_fast"] = { + Sequences = {"reload_empty_smag_fast"}, + Length = 2.3, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + { + Time = 0.1, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_smag_01")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_smag_02")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_smag_03")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_smag_04")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_smag_05")) end}, + {Time = 2.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_smag_06")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_reload_empty_fast_smag_045")) end}, + -- {Time = 0.8, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self.bEjected = false + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Rechamber"] = { + Sequences = {"rechamber"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.1, + Callback = function(self) + self.bEjected = false + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike26.rechamber")) end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dpapa12.ads.up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dpapa12.ads.down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_inspect_04")) end}, + {Time = 4.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_inspect_05")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_inspect_02")) end}, + {Time = 2.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_inspect_03")) end}, + {Time = 0.167, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_mike26_inspect_01")) end}, + {Time = 4.433, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_mike26/customization.lua b/lua/weapons/mg_mike26/customization.lua new file mode 100644 index 0000000..9eccced --- /dev/null +++ b/lua/weapons/mg_mike26/customization.lua @@ -0,0 +1,764 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.aalpha12.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Shotgun2.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Reflection_ARSUP.Inside"), + Reflection = Sound("Reflection_ShotgunSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doDBStats() + self.Primary.TrailingSound = Sound("wpn_shotgun_fire_lyr") + self.ParticleEffects.MuzzleFlash = "AC_muzzle_shotgun_db" +end + +-- local function doCalConversionStats(self) +-- local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") +-- local bSup2 = self:HasAttachment("attachment_vm_silencer02") +-- local bSup3 = self:HasAttachment("attachment_vm_silencer03") +-- local bSup4 = self:HasAttachment("attachment_vm_silencer04") +-- local bSup5 = self:HasAttachment("attachment_vm_ar_mike4_barsil") +-- local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_mag_v5") + +-- if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then +-- self.Primary.Sound = Sound("mw19_mcharlie.fire.cal") +-- self.Reverb = { +-- RoomScale = 50000, +-- Sounds = { +-- Outside = { +-- Layer = Sound("Atmo_SMG.Outside"), +-- Reflection = Sound("Reflection_AR.Outside") +-- }, + +-- Inside = { +-- Layer = Sound("Atmo_SMG.Inside"), +-- Reflection = Sound("Reflection_AR.Inside") +-- } +-- } +-- } +-- end + +-- self.Primary.Ammo = "SMG1" +-- self.Shell.Model = Model("models/viper/mw/shells/fx_pistol_shell_lod0.mdl") +-- self.Shell.Scale = 0.5 +-- self.Shell.Sound = Sound("MW_Casings.9mm") +-- end + + +-- local function doSocomConversionStats(self) +-- local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") +-- local bSup2 = self:HasAttachment("attachment_vm_silencer02") +-- local bSup3 = self:HasAttachment("attachment_vm_silencer03") +-- local bSup4 = self:HasAttachment("attachment_vm_silencer04") +-- local bSup5 = self:HasAttachment("attachment_vm_ar_mike4_barsil") +-- local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_mag_v5") + +-- if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then +-- self.Reverb = { +-- RoomScale = 50000, +-- Sounds = { +-- Outside = { +-- Layer = Sound("Atmo_LMG.Outside"), +-- Reflection = Sound("Reflection_AR.Outside") +-- }, + +-- Inside = { +-- Layer = Sound("Atmo_LMG.Inside"), +-- Reflection = Sound("Reflection_AR.Inside") +-- } +-- } +-- } +-- end + +-- self.Shell.Model = Model("models/viper/mw/shells/vfx_9x39_shell.mdl") +-- self.Shell.Scale = 0.35 +-- end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sh_mike26_perk_soh", "attachment_vm_sh_mike26_perk_slamfire", "att_perk_hip"}, + + {"attachment_vm_sh_mike26_barrel", "attachment_vm_sh_mike26_barlong", "attachment_vm_sh_mike26_barheavy", "attachment_vm_sh_mike26_barshort"}, + + {"attachment_vm_sh_mike26_mag", "attachment_vm_sh_mike26_smag", "attachment_vm_sh_mike26_xmag"}, + + {"att_ammo_default", "att_ammo_db", "att_ammo_flechette", + "att_ammo_he", "att_ammo_slugs"}, + + {"attachment_vm_sh_mike26_stock", "att_vm_stock_heavy01", + "att_vm_stock_heavy02", "att_vm_stock_light01", "att_vm_stock_medium01", "att_vm_stock_no"}, + + {"att_muzzle", "att_vm_compensator_shgn01", "att_vm_compensator_shgn02", "att_vm_flashhider01_shgn", "att_vm_muzzlebrake_shgn01", + "att_vm_breacher02_shgn", "attachment_vm_sh_oscar12_suppressor", "attachment_vm_sh_oscar12_silencer02", + "attachment_vm_sh_oscar12_silencer03"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_reflex_west04", + "att_vm_4x_east01_tall", "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_sh_mike26_laser01", "attachment_vm_sh_mike26_laser02", "attachment_vm_sh_mike26_laser03"}, + + {"attachment_vm_sh_mike26_pumphandle", "attachment_vm_sh_mike26_pumpl", "attachment_vm_sh_mike26_pumph"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.reload_smag = self.Animations.reload_smag_fast +-- self.Animations.reload_empty_smag = self.Animations.reload_smag_empty_fast +-- self.Animations.reload_xmag = self.Animations.reload_xmag_fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- --[[{ +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- }]] +-- }, + +-- ["Ammo"] = { +-- Slot = 2, +-- { +-- Key = "no_perk", +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- self.Projectile = nil +-- end, +-- }, +-- { +-- Key = "sh_slugs", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- { +-- Key = "sh_db", +-- Stats = function(self) +-- doDBStats(self) +-- end +-- }, +-- { +-- Key = "sh_flechette", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- { +-- Key = "sh_he", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- }, + +-- ["Mag"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_sh_mike26_mag", +-- }, +-- { +-- Key = "attachment_vm_sh_mike26_smag", +-- Stats = function(self) +-- self.Animations.Reload.Fps = self.Animations.Reload.Fps * 1.2 +-- self.Animations.Reload_Empty.Fps = self.Animations.Reload_Empty.Fps * 1.2 +-- self.Shell.Model = "models/viper/mw/shells/vfx_sgcaldb_shell.mdl" +-- self.Shell.Scale = 0.3 +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_mike26_xmag", +-- Stats = function(self) +-- self.Shell.Model = "models/viper/mw/shells/vfx_sgcaldb_shell.mdl" +-- self.Shell.Scale = 0.3 +-- end +-- }, +-- }, + +-- ["Barrel"] = { +-- Slot = 4, +-- { +-- Key = "attachment_vm_sh_mike26_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_mike26_barheavy", +-- Bodygroups = { +-- ["tag_tip"] = 4, +-- }, +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8,9} +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_mike26_barlong", +-- Bodygroups = { +-- ["tag_tip"] = 2, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_mike26_barshort", +-- Bodygroups = { +-- ["tag_tip"] = 4, +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Muzzle"] = { +-- Slot = 5, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_sh_romeo870_choke", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 3.3, 0), Angle()}, +-- [4] = {Vector(0, -2.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator_shgn01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 3.3, 0), Angle()}, +-- [4] = {Vector(0, -2.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider_shtgn01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 3.3, 0), Angle()}, +-- [4] = {Vector(0, -2.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake_shgn01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 3.3, 0), Angle()}, +-- [4] = {Vector(0, -2.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee_shgn01", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 3.3, 0), Angle()}, +-- [4] = {Vector(0, -2.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 3.3, 0), Angle()}, +-- [4] = {Vector(0, -2.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 3.3, 0), Angle()}, +-- [4] = {Vector(0, -2.15, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, + +-- }, + +-- ["Optic"] = { +-- Slot = 6, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) --i know you tell me not to fuck with this but the dot being actually centered on the glass demands it xoxo +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.65) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.65) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.8) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.71) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.1, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.82) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.75) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.167, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 0, -1.035) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.045) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.975) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.75, 2.5, -0.05) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.533) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.69) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,1.5,-1.85) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.61) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, -0.012, 0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2.5, 0.2) +-- end +-- }, +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sh_mike26_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_heavy02", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 8, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 9, +-- { +-- Key = "attachment_vm_sh_mike26_pumphandle", +-- }, +-- { +-- Key = "attachment_vm_sh_mike26_pumpl", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_mike26_pumph", +-- Stats = function(self) +-- end +-- }, +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_mike26/shared.lua b/lua/weapons/mg_mike26/shared.lua new file mode 100644 index 0000000..3da5cf4 --- /dev/null +++ b/lua/weapons/mg_mike26/shared.lua @@ -0,0 +1,175 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") + +SWEP.BulletList = {"j_shell_01", "j_shell_02", "j_shell_03"} + +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_mike26", "VGUI/entities/mg_mike26", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sh_mike26") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "VLK Rogue" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Shotguns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_mike26.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_mike26.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.aalpha12.fire.first"), + ReleasedSound = Sound("mw19.aalpha12.disconnector"), + Time = 0.025 +} + +SWEP.Slot = 3 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("mw19.mike26.fire") +SWEP.Primary.Ammo = "Buckshot" +SWEP.Primary.ClipSize = 8 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 300 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false +SWEP.EmptyReloadRechambers = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_shotgun", + ["MuzzleFlash_DB"] = "mw_fas2_muzzleflash_slug", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", + ["Overheating"] = "AC_muzzle_pistol_smoke_barrel", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper.Outside"), + Reflection = Sound("Reflection_Shotgun.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Sniper.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Pump-Action", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 250, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.5, --accuracy while hip + Ads = 0.5, --accuracy while aiming + Increase = 0.085, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 2.5, --the cone size will not go beyond this size + Decrease = 0.24, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6974 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {4, 6.5}, --random value between the 2 + Horizontal = {-1.75, 2.75}, --random value between the 2 + Shake = 4, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 1158, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 0.56 +} + +SWEP.Bullet = { + Damage = {110, 30}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 12, --in meters, damage scales within this distance + DropOffStartRange = 10, + Range = 40, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 4, --the amount of bullets to fire + PhysicsMultiplier = 1.7, --damage is multiplied by this amount when pushing objects + Penetration = { + DamageMultiplier = 0.86, --how much damaged is multipled by when leaving a surface. + MaxCount = 13, --how many times the bullet can penetrate. + Thickness = 18, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,95,-90), + Pos = Vector(9.5,-5,-4) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1.75, + KickMultiplier = 1.3, + AimKickMultiplier = 0.45 +} + +SWEP.Shell = "mwb_shelleject_12g_black" + +DEFINE_BASECLASS("mg_base") + +-- function SWEP:PostDrawViewModel(vm, weapon, ply) +-- BaseClass.PostDrawViewModel(self, vm, weapon, ply) +-- self:RemoveBulletsBasedOnClip(self:GetAttachmentModels("Mag"), self.BulletList) +-- end \ No newline at end of file diff --git a/lua/weapons/mg_mike4/animations.lua b/lua/weapons/mg_mike4/animations.lua new file mode 100644 index 0000000..69b3492 --- /dev/null +++ b/lua/weapons/mg_mike4/animations.lua @@ -0,0 +1,551 @@ +AddCSLuaFile() + +local function fillMagBeforeMagin(self) + local am = math.min(self:Clip1() + self:GetOwner():GetAmmoCount(self:GetPrimaryAmmoType()), self:GetMaxClip1()) + self:UpdateMagPoseParam(1 - am / self:GetMaxClip1()) +end + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike4.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.6, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike4.drop")) self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike4.raise.first.1")) end}, + {Time = 0.85, Callback = function(self) self:DoSound(Sound("mw19.mike4.raise.first.2")) end}, + {Time = 0.95, Callback = function(self) self:DoSound(Sound("mw19.mike4.raise.first.3")) end}, + {Time = 1.25, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.2, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_02")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_03")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_04")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_05")) end}, + {Time = 2, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.3, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DisableGrip() self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_02")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_03")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_04")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_05")) end}, + {Time = 1.16, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Calsmg"] = { + Sequences = {"reload_calsmg"}, + Length = 2.2, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_smg_02")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_smg_03")) end}, + {Time = 1.25, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_smg_04")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_05")) end}, + {Time = 2, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Calsmg_Fast"] = { + Sequences = {"reload_calsmg_fast"}, + Length = 1.3, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DisableGrip() self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_01")) end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_smg_02")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_smg_03")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_smg_04")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_05")) end}, + {Time = 1.167, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.2, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_02")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_03")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_04")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_05")) end}, + {Time = 2, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.3, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DisableGrip() self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_02")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_03")) end}, + {Time = 0.93, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_04")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_05")) end}, + {Time = 1.16, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_xmaglrg"}, + Length = 2.2, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_xmag_02")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_xmag_03")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_05")) end}, + {Time = 2, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_xmaglrg_fast"}, + Length = 1.3, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DisableGrip() self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_01")) end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_xmag_02")) end}, + {Time = 0.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.73, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_xmag_03")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_fast_05")) end}, + {Time = 1.167, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.3, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_01")) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_02")) end}, + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_03")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_04")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_05")) end}, + {Time = 2.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_06")) end}, + {Time = 2.06, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_02")) end}, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_03")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_04")) end}, + {Time = 1.4, Callback = function(self) self:EnableGrip() end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_05")) end}, + } + }, + + ["Reload_Empty_Calsmg"] = { + Sequences = {"reload_empty_calsmg"}, + Length = 2.3, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_01")) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 0.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_smg_02")) end}, + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_smg_03")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_smg_04")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_05")) end}, + {Time = 2.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_06")) end}, + {Time = 2.06, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Calsmg_Fast"] = { + Sequences = {"reload_empty_calsmg_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_smg_02")) end}, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_smg_04")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_04")) end}, + {Time = 1.4, Callback = function(self) self:EnableGrip() end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_05")) end}, + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 2.3, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_01")) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.26, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_02")) end}, + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_03")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_04")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_05")) end}, + {Time = 2.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_06")) end}, + {Time = 2.06, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_02")) end}, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_03")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_04")) end}, + {Time = 1.4, Callback = function(self) self:EnableGrip() end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_05")) end}, + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_xmaglrg"}, + Length = 2.3, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_01")) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0.06, Callback = function(self) self:DisableGrip() end}, + {Time = 0.35, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_xmag_02")) end}, + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_xmag_03")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_04")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_05")) end}, + {Time = 2.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_06")) end}, + {Time = 2.06, Callback = function(self) self:EnableGrip() end}, + {Time = 2.06, Callback = function(self) end}, + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_xmaglrg_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(false) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_02")) end}, + {Time = 0.75, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) fillMagBeforeMagin(self) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_03")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_04")) end}, + {Time = 1.4, Callback = function(self) self:EnableGrip() end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_mike4_reload_empty_fast_05")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike4.fire.last")) self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike4.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike4.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike4.semi.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike4.semi.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike4.inspect.1")) self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.mike4.inspect.2")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.mike4.inspect.3")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.mike4.inspect.4")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.mike4.inspect.5")) end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0.767, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_mike4/customization.lua b/lua/weapons/mg_mike4/customization.lua new file mode 100644 index 0000000..61c3ed9 --- /dev/null +++ b/lua/weapons/mg_mike4/customization.lua @@ -0,0 +1,1281 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.mike4.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doSocomConversionStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + local bSup4 = self:HasAttachment("attachment_vm_silencer05") + local bSup4 = self:HasAttachment("attachment_vm_silencer06") + local bSup5 = self:HasAttachment("attachment_vm_ar_mike4_barsil") + local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_mag_v5") + local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_barrel_v7") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_LMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Shell = "mwb_shelleject_458" +end + +function SWEP:doCalConversionStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + local bSup5 = self:HasAttachment("attachment_vm_ar_mike4_barsil") + local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_mag_v5") + local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_barrel_v7") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then + self.Primary.Sound = Sound("mw19_mcharlie.fire.cal") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Primary.Ammo = "SMG1" + self.Shell = "mwb_shelleject_9mm" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_mike4_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_ar_mike4_barrel", + "attachment_vm_ar_mike4_barrel_v3_alt", "attachment_vm_ar_mike4_barsil", "attachment_vm_ar_mike4_custombarrel", + "attachment_vm_ar_mike4_mike203barrel", "attachment_vm_ar_mike4_shortbarrel"}, + + {"attachment_vm_ar_mike4_stock", "attachment_vm_ar_mike4_customstock", "attachment_vm_ar_mike4_stockno", "att_vm_stock_heavy01", + "att_vm_stock_heavy02", "att_vm_stock_light01", "att_vm_stock_medium01"}, + + {"attachment_vm_ar_mike4_mag", "attachment_vm_ar_mike4_xmags", "attachment_vm_ar_mike4_xmags2", "attachment_vm_ar_mike4_mag_v5", + "attachment_vm_ar_mike4_calsmg"}, + + {"attachment_vm_ar_mike4_receiver"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "attachment_vm_ar_mike4_carryhandle", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west02", "att_vm_hybrid_west02_thermal", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_ar_mike4_laser01", "attachment_vm_ar_mike4_laser02", "attachment_vm_ar_mike4_laser03"}, + + {"att_grip", "attachment_vm_ar_mike4_bipodgrip", + "attachment_vm_ar_mike4_angledgrip01", "attachment_vm_ar_mike4_angledgrip02", "attachment_vm_ar_mike4_stubbygrip01", + "attachment_vm_ar_mike4_stubbygrip02", "attachment_vm_ar_mike4_vertgrip01", "attachment_vm_ar_mike4_vertgrip02", + "attachment_vm_ar_mike4_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_mike4_barrel", +-- Bodygroups = { +-- ["tag_grip_hide"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_mike203barrel", +-- Bodygroups = { +-- ["barrel_tip"] = 4, +-- ["tag_sight_barrel"] = 6, +-- ["tag_grip_hide"] = 1 +-- }, +-- ExcludedAttachments = { +-- ["Laser"] = {2,3,4} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_m203_offset") +-- end, +-- UsingM203Barrel = true +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_shortbarrel", +-- Bodygroups = { +-- ["barrel_tip"] = 8, +-- ["tag_sight_barrel"] = 8, +-- ["tag_grip_hide"] = 1 +-- }, +-- Stats = function(self) +-- end, +-- UsingShortBarrel = true +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_custombarrel", +-- Bodygroups = { +-- ["barrel_tip"] = 4, +-- ["tag_sight_barrel"] = 4, +-- ["tag_laser_hide"] = 0, +-- ["tag_grip_hide"] = 0 +-- }, +-- Stats = function(self) +-- end, +-- UsingLongBarrel = true +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_barrel_v3_alt", +-- Bodygroups = { +-- ["barrel_tip"] = 0, +-- ["tag_sight_barrel"] = 2, +-- ["tag_grip_hide"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_barsil", +-- Bodygroups = { +-- ["barrel_tip"] = 8, +-- ["tag_sight_barrel"] = 2, +-- ["tag_grip_hide"] = 1 +-- }, +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17} +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser_hide"] = 2 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser_hide"] = 2 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser_hide"] = 2 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_carryhandle", +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- Stats = function(self) +-- self.Zoom.Blur.EyeFocusDistance = 10 +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.26) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.32) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.01, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.046, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, 0.265) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.046, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.04, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 2, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 2, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 2, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.017, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.12, 1, -0.06) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.003, 1, -0.165) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0035, 1.5, -0.0565) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 1, 0.008) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.007, 1, 0.434) +-- self.HybridAimAngles = Angle(-0.04, 0.02, -45) +-- self.HybridAimPos = Vector(-1.78, 0, 0.9) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.004, 1.5, 0.452) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.002, 3, 0.062) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 2, 0.13) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0065, 1, 0.296) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,0,-0.93) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0125, 0, 0.03) +-- self.HybridAimAngles = Angle(-0.04, 0.03, 0) +-- self.HybridAimPos = Vector(0, 0, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0125, 0, 0.03) +-- self.HybridAimAngles = Angle(-0.04, 0.03, 0) +-- self.HybridAimPos = Vector(0, 0, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.003, 1, 0.366) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(-0.03, 0.015, -45) +-- self.HybridAimPos = Vector(-1.58, 0, 1.16) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["barrel_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, -2.76, 0), Angle()}, +-- [4] = {Vector(0, 6.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- self.Animations.Reload_Calsmg = self.Animations.Reload_Calsmg_Fast +-- self.Animations.Reload_Empty_Calsmg = self.Animations.Reload_Empty_Calsmg_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_ar_mike4_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_customstock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["stock_hide"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_hide"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_stockno", +-- Bodygroups = { +-- ["stock_hide"] = 1 +-- }, +-- Stats = function(self) +-- --self:RemoveValue("LaserAimAngles") +-- --self:RemoveValue("LaserAimPos") +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["tag_grip_hide"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingShortBarrel != nil && att.UsingShortBarrel == true) then +-- self:SetGripPoseParameter("grip_barshort_gripang_offset") +-- break +-- end + +-- if (att.UsingLongBarrel != nil && att.UsingLongBarrel == true) then +-- self:SetGripPoseParameter("grip_barlong_gripang_offset") +-- break +-- end + +-- if (att.UsingM203Barrel != nil && att.UsingM203Barrel == true) then +-- self:SetGripPoseParameter("grip_m203_gripang_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, -1.5, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, -1.5, 0), Angle()}, +-- [4] = {Vector(0, -1.5, -0.175), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()}, +-- [6] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_grip_hide"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingShortBarrel != nil && att.UsingShortBarrel == true) then +-- self:SetGripPoseParameter("grip_barshort_gripang_offset") +-- break +-- end + +-- if (att.UsingM203Barrel != nil && att.UsingM203Barrel == true) then +-- self:SetGripPoseParameter("grip_m203_gripang_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["tag_grip_hide"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripvert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingShortBarrel != nil && att.UsingShortBarrel == true) then +-- self:SetGripPoseParameter("grip_barshort_gripvert_offset") +-- break +-- end + +-- if (att.UsingM203Barrel != nil && att.UsingM203Barrel == true) then +-- self:SetGripPoseParameter("grip_m203_gripvert_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["tag_grip_hide"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripvert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingShortBarrel != nil && att.UsingShortBarrel == true) then +-- self:SetGripPoseParameter("grip_barshort_gripvert_offset") +-- break +-- end + +-- if (att.UsingM203Barrel != nil && att.UsingM203Barrel == true) then +-- self:SetGripPoseParameter("grip_m203_gripvert_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["tag_grip_hide"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripvert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingShortBarrel != nil && att.UsingShortBarrel == true) then +-- self:SetGripPoseParameter("grip_barshort_gripvert_offset") +-- break +-- end + +-- if (att.UsingM203Barrel != nil && att.UsingM203Barrel == true) then +-- self:SetGripPoseParameter("grip_m203_gripvert_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["tag_grip_hide"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripvert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingShortBarrel != nil && att.UsingShortBarrel == true) then +-- self:SetGripPoseParameter("grip_barshort_gripvert_offset") +-- break +-- end + +-- if (att.UsingM203Barrel != nil && att.UsingM203Barrel == true) then +-- self:SetGripPoseParameter("grip_m203_gripvert_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["tag_grip_hide"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_gripvert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingShortBarrel != nil && att.UsingShortBarrel == true) then +-- self:SetGripPoseParameter("grip_barshort_gripvert_offset") +-- break +-- end + +-- if (att.UsingM203Barrel != nil && att.UsingM203Barrel == true) then +-- self:SetGripPoseParameter("grip_m203_gripvert_offset") +-- break +-- end +-- end +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_mike4_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_calsmg", +-- Bodygroups = { +-- ["ejection_cover"] = 1, +-- ["tag_mag_show"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_xmags2", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_mike4_mag_v5", +-- Stats = function(self) +-- end +-- } +-- }, + +-- } \ No newline at end of file diff --git a/lua/weapons/mg_mike4/shared.lua b/lua/weapons/mg_mike4/shared.lua new file mode 100644 index 0000000..c09d479 --- /dev/null +++ b/lua/weapons/mg_mike4/shared.lua @@ -0,0 +1,192 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("mw_fas2_muzzleflash_suppressed") +PrecacheParticleSystem("mw_ins2_shell_eject") +PrecacheParticleSystem("mw_fas2_muzzleflash_ar_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_mike4", "VGUI/entities/mg_mike4", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_mike4") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_gripvert_offset", "grip_gripvertpro_offset", "grip_barshort_gripang_offset", "grip_barshort_gripvert_offset", "grip_gripang_offset", "grip_barlong_gripvert_offset", "grip_barlong_gripang_offset", "grip_m203_offset", "grip_m203_gripvert_offset", "grip_m203_gripang_offset"} + +SWEP.PrintName = "M4A1" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_mike4.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_mike4.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.mike4.fire.first"), + ReleasedSound = Sound("mw19.mike4.fire.disconnector"), + Time = 0.025 +} + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" + +SWEP.AlternateGrips = false +SWEP.Primary.Sound = Sound("mw19.mike4.fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 810 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR2.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "mw_fas2_muzzleflash_ar_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.3, --accuracy while hip + Ads = 0.07, --accuracy while aiming + Increase = 0.07, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.4, --the cone size will not go beyond this size + Decrease = 0.3, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 3265187 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 1.5}, --random value between the 2 + Horizontal = {-1.75, 1.75}, --random value between the 2 + Shake = 1.1, --camera shake + AdsMultiplier = 0.15, --multiply the values by this amount while aiming + Seed = 2548715, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1 +} +SWEP.Bullet = { + Damage = {26, 13}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 20, --in meters, damage will start dropping off after this range + EffectiveRange = 43, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.8, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 6.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 95, -90), + Pos = Vector(3,-5,-3.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.4, + KickMultiplier = 1, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_556" + +DEFINE_BASECLASS("mg_base") +SWEP.bEnableMagPoseParam = true + +function SWEP:PostDrawViewModel(vm, weapon, ply) + BaseClass.PostDrawViewModel(self, vm, weapon, ply) + + if (self.bEnableMagPoseParam) then + self:UpdateMagPoseParam(1 - self:Clip1() / self:GetMaxClip1()) + end +end + +function SWEP:AllowRuntimeMagPoseParam(allow) + self.bEnableMagPoseParam = allow +end + +function SWEP:UpdateMagPoseParam(val) + + local mag = self:GetAttachmentInUseForSlot(4).m_Model + + if (IsValid(mag) && mag != nil) then + mag:SetPoseParameter("bullets_offset", val) + end +end \ No newline at end of file diff --git a/lua/weapons/mg_mkilo3/animations.lua b/lua/weapons/mg_mkilo3/animations.lua new file mode 100644 index 0000000..447870f --- /dev/null +++ b/lua/weapons/mg_mkilo3/animations.lua @@ -0,0 +1,427 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Idle_smag"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle_smag"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 1, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.35, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise.first")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"Reload"}, + Length = 5.2, + Fps = 30, + MagLength = 3.6, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_smag"] = { + Sequences = {"reload_smag"}, + Length = 2.3, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_fast"] = { + Sequences = {"Reload_fast"}, + Length = 4.2, + Fps = 30, + MagLength = 3, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_fast_smag"] = { + Sequences = {"reload_smag_fast"}, + Length = 1.7, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + } + }, + + + ["Reload_Empty"] = { + Sequences = {"Reload_empty"}, + Length = 7.8, + Fps = 30, + MagLength = 6.2, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_smag"] = { + Sequences = {"reload_empty_smag"}, + Length = 3.4, + Fps = 30, + MagLength = 1.65, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_fast"] = { + Sequences = {"Reload_empty_fast"}, + Length = 5.8, + Fps = 30, + MagLength = 4.5, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_fast_smag"] = { + Sequences = {"reload_empty_smag_fast"}, + Length = 2.5, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_smag"] = { + Sequences = {"fire_smag"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.down")) end} + } + }, + + ["Ads_In_smag"] = { + Sequences = {"ads_in_smag"}, + Length = 0.3, + Fps = 25, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.up")) end} + } + }, + + ["Ads_Out_smag"] = { + Sequences = {"ads_out_smag"}, + Length = 0.3, + Fps = 25, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_In_smag"] = { + Sequences = {"sprint_in_smag"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out_smag"] = { + Sequences = {"sprint_out_smag"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect_smag"] = { + Sequences = {"inspect_smag"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jog_Out_smag"] = { + Sequences = {"jog_out_smag"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump_smag"] = { + Sequences = {"jump_smag"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land_smag"] = { + Sequences = {"jump_land_smag"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.5, --if melee hits + + Damage = 100, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_smag"] = { + Sequences = {"melee_miss_01_smag", "melee_miss_02_smag", "melee_miss_03_smag"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit_smag"] = { + Sequences = {"melee_hit_01_smag", "melee_hit_02_smag", "melee_hit_03_smag"}, + Length = 0.5, --if melee hits + + Damage = 100, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + } +} \ No newline at end of file diff --git a/lua/weapons/mg_mkilo3/customization.lua b/lua/weapons/mg_mkilo3/customization.lua new file mode 100644 index 0000000..9f8a26a --- /dev/null +++ b/lua/weapons/mg_mkilo3/customization.lua @@ -0,0 +1,1162 @@ +AddCSLuaFile() +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_mkilo3_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doSmgStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4) then + self.Primary.Sound = Sound("mw19.akilo47.smgcal.fire") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Shell = "mwb_shelleject_545" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_lm_mkilo3_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_lm_mkilo3_mag", "attachment_vm_lm_mkilo3_xbelt", "attachment_vm_lm_mkilo3_smags"}, + + {"attachment_vm_lm_mkilo3_stock", "attachment_vm_lm_mkilo3_stockl", + "att_vm_stock_heavy01", "att_vm_stock_heavy02", + "att_vm_stock_light01", "att_vm_stock_medium01", "att_vm_stock_no"}, + + + {"attachment_vm_lm_mkilo3_barrel", "attachment_vm_lm_mkilo3_barshort", + "attachment_vm_lm_mkilo3_barhvy", "attachment_vm_lm_mkilo3_barlong"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", 'att_vm_silencer06'}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall"}, + + {"att_laser", "attachment_vm_lm_mkilo3_laser01_cylinder", "attachment_vm_lm_mkilo3_laser02_cylinder", + "attachment_vm_lm_mkilo3_laser03_cylinder"}, + + {"att_grip", "attachment_vm_lm_mkilo3_bipod", "attachment_vm_lm_mkilo3_angledgrip01", "attachment_vm_lm_mkilo3_angledgrip02", "attachment_vm_lm_mkilo3_stubbygrip01", + "attachment_vm_lm_mkilo3_stubbygrip02", "attachment_vm_lm_mkilo3_vertgrip01", "attachment_vm_lm_mkilo3_vertgrip02", + "attachment_vm_lm_mkilo3_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_lm_mkilo3_barrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- }, +-- { +-- Key = "attachment_vm_lm_mkilo3_custombarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mkilo3_lmgbarrel_grip", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mkilo3_lmgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mkilo3_smgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 2, +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_smg_pose_offset") +-- end, +-- UsingSmgBarrel = true +-- }, +-- { +-- Key = "attachment_vm_lm_mkilo3_smgbarcust", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.2, 0.07, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.03, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.08) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.3) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.22) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.29) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.082) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 3, -1.23) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.126, 2, -1.411) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -1.514) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0084, 2, -1.407) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0155, 2, -1.345) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.016, 2, -0.917) + -- self.HybridAimAngles = Angle(-0.05, 0, -45) + -- self.HybridAimPos = Vector(-1.8, 2, -0.45) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 2, -0.902) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 4, -1.287) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 4, -1.222) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 3, -1.055) + -- self.HybridAimAngles = Angle(0, 0.03, 0) + -- self.HybridAimPos = Vector(0,0,-2.25) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -0.985) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2, -0.15) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_lm_mkilo3_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mkilo3_lmgstock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mkilo3_smgstock_unfolded", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mkilo3_smgstock", +-- ExcludedAttachments = { +-- ["Magazine"] = {4} +-- }, +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- VElement = { +-- Bone = "tag_stock_attach", +-- Position = Vector(2.5, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- --self:RemoveValue("LaserAimAngles") +-- --self:RemoveValue("LaserAimPos") +-- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 +-- end +-- }, + -- { + -- Key = "attachment_vm_lm_mkilo3_stockno", + -- Bodygroups = { + -- ["stock_adapter"] = 1 + -- }, + -- Stats = function(self) + -- --self:RemoveValue("LaserAimAngles") + -- --self:RemoveValue("LaserAimPos") + -- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 + -- end + -- } + -- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_lm_mkilo3_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mkilo3_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mkilo3_smgmag", +-- Stats = function(self) +-- doSmgStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_mkilo3_drum_mag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_mkilo3/shared.lua b/lua/weapons/mg_mkilo3/shared.lua new file mode 100644 index 0000000..651ab48 --- /dev/null +++ b/lua/weapons/mg_mkilo3/shared.lua @@ -0,0 +1,162 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_mkilo3", "VGUI/entities/mg_mkilo3", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_lm_mkilo3") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "Bruen Mk9" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Lightmachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_mkilo3.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_mkilo3.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("weap_mgolf36_fire_prefire"), + ReleasedSound = Sound("weap_mgolf36_fire_disconnector"), + Time = 0.1 +} + +SWEP.Primary.Sound = Sound("weap_mkilo3_fire_plr") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 100 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 752 +SWEP.CanChamberRound = false +SWEP.CanDisableAimReload = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_lmg", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR5.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.45, --accuracy while hip + Ads = 0.13, --accuracy while aiming + Increase = 0.093, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.24, --multiply the increase value by this amount while aiming + Max = 1.75, --the cone size will not go beyond this size + Decrease = 0.6, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 666, --just give this a random number + DecreaseEveryShot = 0.1, + MinDecreaseEveryShot = 0.4 +} + +SWEP.Recoil = { + Vertical = {1, 1.5}, --random value between the 2 + Horizontal = {-1.2, 1.2}, --random value between the 2 + Shake = 1.25, --camera shake + AdsMultiplier = 0.6, --multiply the values by this amount while aiming + Seed = 6767, --give this a random number until you like the current recoil pattern + DecreaseEveryShot = 0.05, + MinDecreaseEveryShot = 0.5 +} + +SWEP.Bullet = { + Damage = {28, 20}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 20, --in meters, damage will start dropping off after this range + EffectiveRange = 50, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.8, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 8 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(10, 0, -180), + Pos = Vector(10,-1,-5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 1, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -4, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(3, 0, -2), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.45, + KickMultiplier = 2, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_556" \ No newline at end of file diff --git a/lua/weapons/mg_mpapa5/animations.lua b/lua/weapons/mg_mpapa5/animations.lua new file mode 100644 index 0000000..cb2855c --- /dev/null +++ b/lua/weapons/mg_mpapa5/animations.lua @@ -0,0 +1,316 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.6, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa5.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.4, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa5.drop")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.9, Callback = function(self) self:EnableGrip() end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_raise_first_02")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_raise_first_03")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_raise_first_01")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 3, + Fps = 30, + MagLength = 1.8, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_05")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_04")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_07")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_06")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_01")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_03")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_02")) self:DoEjection("shell_eject") end}, + {Time = 2.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_08")) end}, + {Time = 2.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_09")) end}, + {Time = 1.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_065")) end}, + {Time = 2.633, Callback = function(self) self:EnableGrip() end}, + {Time = 2.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_10")) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.96, + Fps = 30, + MagLength = 1.23, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_01")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_fast_04")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_fast_03")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_fast_06")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_fast_05")) end}, + {Time = 1.567, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.96, + Fps = 30, + MagLength = 1.86, + NextSequence = "Idle", + Events = { + {Time = 1.25, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-25, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_05")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_04")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_07")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_06")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_01")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_03")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_02")) end}, + {Time = 2.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_08")) end}, + {Time = 1.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_055")) end}, + {Time = 2.667, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_fast_08")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_fast_07")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_fast_06")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_fast_05")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_fast_04")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_fast_03")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_fast_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_reload_empty_fast_01")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa5.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa5.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 39, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa5.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa5.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 2.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_inspect_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_inspect_01")) end}, + {Time = 4.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_inspect_05")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_inspect_02")) end}, + {Time = 3.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa5_inspect_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_mpapa5/customization.lua b/lua/weapons/mg_mpapa5/customization.lua new file mode 100644 index 0000000..e3d6f86 --- /dev/null +++ b/lua/weapons/mg_mpapa5/customization.lua @@ -0,0 +1,1056 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_mpapa5_sup_fire_plr_lfe") + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then + self.Primary.Sound = Sound("weap_mpapa5_sup_fire_plr_lfe") + end + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doCalConversionStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then + self.Primary.Sound = Sound("weap_mpapa5_sup_fire_plr_lfe") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + self.Primary.Ammo = "AR2" + end +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sm_mpapa5_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_rof"}, + + {"attachment_vm_sm_mpapa5_stock", "attachment_vm_sm_mpapa5_stock_fullstock", "attachment_vm_sm_mpapa5_stock_nostock", + "att_vm_stock_heavy01", "att_vm_stock_heavy02", + "att_vm_stock_light01", "att_vm_stock_medium01", + "att_vm_stock_no"}, + + {"attachment_vm_sm_mpapa5_mag", "attachment_vm_sm_mpapa5_mag_xmag2", "attachment_vm_sm_mpapa5_mag_xmag"}, + + {"attachment_vm_sm_mpapa5_receiver"}, + + {"attachment_vm_sm_mpapa5_barrel", "attachment_vm_sm_mpapa5_barrel_noflash", "attachment_vm_sm_mpapa5_barshort", + "attachment_vm_sm_mpapa5_railgrip", + "attachment_vm_sm_mpapa5_barrel_suppressor", "attachment_vm_sm_mpapa5_barrel_suppshort"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04"}, + + {"att_laser", "attachment_vm_sm_mpapa5_laser01", "attachment_vm_sm_mpapa5_laser02", + "attachment_vm_sm_mpapa5_laser03"}, + + {"att_grip", "attachment_vm_sm_mpapa5_bipodgrip", "attachment_vm_sm_mpapa5_angledgrip01", "attachment_vm_sm_mpapa5_angledgrip02", "attachment_vm_sm_mpapa5_stubbygrip01", + "attachment_vm_sm_mpapa5_stubbygrip02", "attachment_vm_sm_mpapa5_vertgrip01", "attachment_vm_sm_mpapa5_vertgrip02", + "attachment_vm_sm_mpapa5_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sm_mpapa5_barrel", +-- Bodygroups = { +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa5_barrel_noflash", +-- AttachmentBodygroups = { +-- ["frontend"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa5_barrel_suppressor", +-- Bodygroups = { +-- }, +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22} +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa5_barrel_suppshort", +-- Bodygroups = { +-- }, +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22} +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa5_barshort", +-- Bodygroups = { +-- }, +-- ExcludedAttachments = { +-- ["Muzzle"] = {14,15,16,17,18,19,20,21,22} +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa5_railgrip", +-- Bodygroups = { +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_laser"] = 1, +-- }, +-- AttachmentBodygroups = { +-- ["frontend"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { + +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { + +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { + +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.65) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.01, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.65) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.035, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.8) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.034, 0.018, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.72) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.034, 0.018, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.84) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.75) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.017, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 3, -1.04) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.007, 1.5, -1.15) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.008, 1.5, -1.035) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 1.5, -0.975) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.00, 1.5, -0.55) +-- self.HybridAimAngles = Angle(-0.02, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 3, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 1.5, -0.53) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.008, 3, -0.925) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 3, -0.86) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 1.5, -0.685) +-- self.HybridAimAngles = Angle(-0.02, 0.02, 0) +-- self.HybridAimPos = Vector(0,3,-1.85) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1, +-- ["tag_bsight"] = 1 +-- }, +-- AttachmentBodygroups = { +-- ["frontsight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 1.5, -0.615) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0.015, -45) +-- self.HybridAimPos = Vector(-1.55, 3, 0.25) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, -2.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- AttachmentBodygroups = { +-- ["frontend"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle() +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- AttachmentBodygroups = { +-- ["frontend"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle() +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- AttachmentBodygroups = { +-- ["frontend"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle() +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- AttachmentBodygroups = { +-- ["frontend"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle() +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- self.CanChamberRound = true +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sm_mpapa5_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa5_stock_fullstock", +-- Bodygroups = { +-- -- ["tag_stock_attach"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa5_stock_nostock", +-- Bodygroups = { +-- -- ["tag_stock_attach"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- AttachmentBodygroups = { +-- ["frontend"] = 1, +-- ["grip_hide"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- AttachmentBodygroups = { +-- ["frontend"] = 1, +-- ["grip_hide"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- AttachmentBodygroups = { +-- ["frontend"] = 1, +-- ["grip_hide"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- -- ["tag_grip_attach"] = 1, +-- -- ["tag_ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- AttachmentBodygroups = { +-- ["frontend"] = 1, +-- ["grip_hide"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- -- ["tag_grip_attach"] = 1, +-- -- ["tag_ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- AttachmentBodygroups = { +-- ["frontend"] = 1, +-- ["grip_hide"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- -- ["tag_grip_attach"] = 1, +-- -- ["tag_ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- AttachmentBodygroups = { +-- ["frontend"] = 1, +-- ["grip_hide"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- -- ["tag_grip_attach"] = 1, +-- -- ["tag_ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- AttachmentBodygroups = { +-- ["frontend"] = 1, +-- ["grip_hide"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_sm_mpapa5_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa5_mag_xmag", +-- Stats = function(self) +-- -- doCalConversionStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa5_mag_xmag2", +-- Stats = function(self) +-- end +-- }, +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_mpapa5/shared.lua b/lua/weapons/mg_mpapa5/shared.lua new file mode 100644 index 0000000..9935186 --- /dev/null +++ b/lua/weapons/mg_mpapa5/shared.lua @@ -0,0 +1,168 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_mpapa5", "VGUI/entities/mg_mpapa5", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sm_mpapa5") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_barshort_offset", "grip_barcust_offset", "grip_vertpro_offset"} + +SWEP.PrintName = "MP5" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Submachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_mpapa5.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_mpapa5.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("weap_mpapa5_fire_first_plr"), + ReleasedSound = Sound("weap_mpapa5_disconnector_plr"), + Time = 0.025 +} + +SWEP.Primary.Sound = Sound("weap_mpapa5_fire_plr_lfe") +SWEP.Primary.Ammo = "SMG1" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 833 +SWEP.CanChamberRound = false + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.19, --accuracy while hip + Ads = 0.055, --accuracy while aiming + Increase = 0.025, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.3, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 4156 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 1.5}, --random value between the 2 + Horizontal = {-0.5, 0.5}, --random value between the 2 + Shake = 1.15, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 564728 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {21, 11}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 35, --in meters, damage scales within this distance + DropOffStartRange = 11.5, + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.5, --how much damaged is multipled by when leaving a surface. + MaxCount = 2, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(-4,95,-90), + Pos = Vector(2,-4,-1) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 0, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.25, + KickMultiplier = 0.2, + AimKickMultiplier = 0.75 +} + +SWEP.Shell = "mwb_shelleject_9mm" + +DEFINE_BASECLASS("mg_base") \ No newline at end of file diff --git a/lua/weapons/mg_mpapa7/animations.lua b/lua/weapons/mg_mpapa7/animations.lua new file mode 100644 index 0000000..8388fac --- /dev/null +++ b/lua/weapons/mg_mpapa7/animations.lua @@ -0,0 +1,465 @@ +AddCSLuaFile() + + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.55, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa7.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.45, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa7.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.933, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_raise_first_01")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_raise_first_02")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_raise_first_03")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.1, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_055")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_05")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.9, Callback = function(self) self:EnableGrip() end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_02")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_03")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_06")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_04")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_01")) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.66, + Fps = 30, + MagLength = 1.06, + NextSequence = "Idle", + Events = { + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_01")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_03")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_02")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_04")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_035")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.367, Callback = function(self) self:EnableGrip() end}, + + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.1, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_03")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.867, Callback = function(self) self:EnableGrip() end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_04")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_045")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_01")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_02")) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_05")) end}, + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_fast_xmag"}, + Length = 1.73, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_xmag_04")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_xmag_02")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_xmag_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_xmag_01")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_xmag_035")) end}, + {Time = 1.367, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmag2"] = { + Sequences = {"reload_xmag2"}, + Length = 2.1, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.867, Callback = function(self) self:EnableGrip() end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_04")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_045")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_01")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_02")) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_xmag_05")) end}, + } + }, + + ["Reload_Xmag2_Fast"] = { + Sequences = {"reload_fast_xmag2"}, + Length = 1.73, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_xmag_04")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_xmag_02")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_xmag_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_xmag_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_fast_xmag_035")) end}, + {Time = 1.367, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.16, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_035")) end}, + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_06")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_03")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_01")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_05")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_04")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.86, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_035")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.533, Callback = function(self) self:EnableGrip() end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_05")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_04")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_01")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_03")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_02")) end}, + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 2.16, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_045")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_03")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_04")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_06")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_05")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_02")) end}, + {Time = 1.967, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.86, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_03")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_045")) end}, + {Time = 1.533, Callback = function(self) self:EnableGrip() end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_06")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_04")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_05")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_01")) end}, + } + }, + + ["Reload_Empty_Xmag2"] = { + Sequences = {"reload_empty_xmag2"}, + Length = 2.16, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_045")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_03")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_04")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_06")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_05")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_xmag_02")) end}, + {Time = 1.967, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Xmag2_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.86, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_03")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_045")) end}, + {Time = 1.533, Callback = function(self) self:EnableGrip() end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_06")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_04")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_05")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_reload_empty_fast_xmag_01")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.275, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa7.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.275, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa7.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 39, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa7.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mpapa7.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_inspect_01")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_inspect_03")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_inspect_02")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_inspect_05")) end}, + {Time = 2.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_mpapa7_inspect_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 3.767, Callback = function(self) self:EnableGrip() end}, + + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Small")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Small")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_mpapa7/customization.lua b/lua/weapons/mg_mpapa7/customization.lua new file mode 100644 index 0000000..c8f1879 --- /dev/null +++ b/lua/weapons/mg_mpapa7/customization.lua @@ -0,0 +1,946 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_mpapa7_fire_plr_sup") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sm_mpapa7_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_rof"}, + + {"attachment_vm_sm_mpapa7_stock", "xrk_retractable_stock", + "att_vm_stock_heavy01", "att_vm_stock_heavy02", + "att_vm_stock_light01", "att_vm_stock_medium01", + "att_vm_stock_no"}, + + {"attachment_vm_sm_mpapa7_mag", "attachment_vm_sm_mpapa7_mmags", "attachment_vm_sm_mpapa7_xmags"}, + + {"attachment_vm_sm_mpapa7_receiver"}, + + {"attachment_vm_sm_mpapa7_barrel", "attachment_vm_sm_mpapa7_barlong2", + "attachment_vm_sm_mpapa7_barlong", "attachment_vm_sm_mpapa7_barlight"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04"}, + + {"att_laser", "attachment_vm_sm_mpapa7_laser01", "attachment_vm_sm_mpapa7_laser02", + "attachment_vm_sm_mpapa7_laser03"}, + + {"att_grip", "attachment_vm_sm_mpapa7_bipodgrip", "attachment_vm_sm_mpapa7_angledgrip01", "attachment_vm_sm_mpapa7_angledgrip02", "attachment_vm_sm_mpapa7_stubbygrip01", + "attachment_vm_sm_mpapa7_stubbygrip02", "attachment_vm_sm_mpapa7_vertgrip01", "attachment_vm_sm_mpapa7_vertgrip02", + "attachment_vm_sm_mpapa7_vertgrip03", "fss_folding_grip"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sm_mpapa7_barrel", +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa7_barlight", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- -- ExcludedAttachments = { +-- -- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18} +-- -- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa7_barlong", +-- Bodygroups = { +-- ["tag_tip"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa7_barlong2", +-- Bodygroups = { +-- ["tag_tip"] = 6 +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.135) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.1, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.1, 0.017, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 3, -0.465) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.007, 3, -0.57) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.006, 3, -0.46) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 3, -0.4) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 3, 0.03) +-- self.HybridAimAngles = Angle(-0.02, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 5, 0.5) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 3, 0.045) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.008, 5, -0.35) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 5, -0.28) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 3, -0.11) +-- self.HybridAimAngles = Angle(-0.02, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-1.3) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0075, 3, -0.035) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0.015, -45) +-- self.HybridAimPos = Vector(-1.55, 5, 0.75) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, -0.35, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_Empty_Scope = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Reload_Xmag2 = self.Animations.Reload_Xmag2_Fast +-- self.Animations.Reload_Empty_Xmag2 = self.Animations.Reload_Empty_Xmag2_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sm_mpapa7_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "xrk_retractable_stock", +-- VElement = { +-- Bone = "tag_stock_attach", +-- Position = Vector(-13, 0, -1), +-- Angles = Angle(-90, 0, 0), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["tag_stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["tag_stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_heavy", +-- Bodygroups = { +-- ["tag_stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "fss_folding_grip", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(3, 0, 0.3), +-- Angles = Angle(-90, 0, 0), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_sm_mpapa7_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa7_mmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_mpapa7_xmags", +-- Stats = function(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_mpapa7/shared.lua b/lua/weapons/mg_mpapa7/shared.lua new file mode 100644 index 0000000..33469cc --- /dev/null +++ b/lua/weapons/mg_mpapa7/shared.lua @@ -0,0 +1,170 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_mpapa7", "VGUI/entities/mg_mpapa7", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sm_mpapa7") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vertpro_offset"} + +SWEP.PrintName = "MP7" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Submachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_mpapa7.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_mpapa7.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "TinyGun" +SWEP.Trigger = { + PressedSound = Sound("weap_mpapa7_fire_first_plr"), + ReleasedSound = Sound("weap_mpapa7_disconnector_plr"), + Time = 0.015 +} + +SWEP.Primary.Sound = Sound("weap_mpapa7_fire_plr_lfe") +SWEP.Primary.Ammo = "SMG1" +SWEP.Primary.ClipSize = 40 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 968 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.17, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.032, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.09, --multiply the increase value by this amount while aiming + Max = 1.15, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6215 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {2, 2.5}, --random value between the 2 + Horizontal = {-1.15, 1.35}, --random value between the 2 + Shake = 0.95, --camera shake + AdsMultiplier = 0.25, --multiply the values by this amount while aiming + Seed = 888888 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {22, 13}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 35, --in meters, damage scales within this distance + DropOffStartRange = 13, --in meters, damage will start dropping off after this range + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.7, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 14, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(-10,95,-90), + Pos = Vector(-1,-5.5,1) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(-5, 0, 0), Angles = Angle(40, 0, 0)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(0, 0, 1.5), Angles = Angle(10, 0, 0)} + } + }, + + RecoilMultiplier = 0.25, + KickMultiplier = 0.2, + AimKickMultiplier = 0.75 +} + +SWEP.Shell = "mwb_shelleject_57" + + +DEFINE_BASECLASS("mg_base") \ No newline at end of file diff --git a/lua/weapons/mg_oscar12/animations.lua b/lua/weapons/mg_oscar12/animations.lua new file mode 100644 index 0000000..185af64 --- /dev/null +++ b/lua/weapons/mg_oscar12/animations.lua @@ -0,0 +1,509 @@ +AddCSLuaFile() + +-- local function fillMagBeforeMagin(self) +-- local am = math.min(self:Clip1() + self:GetOwner():GetAmmoCount(self:GetPrimaryAmmoType()), self:GetMaxClip1()) +-- self:UpdateMagPoseParam(self:GetMaxClip1() - am) +-- end + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.oscar12.raise")) end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.6, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.oscar12.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.5, + Fps = 30, + NextSequence = "Idle", + Events = { + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_raise_first_03")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_raise_first_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_raise_first_01")) end}, + {Time = 0.74 , Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Equip_Drum"] = { + Sequences = {"draw_First_drum"}, + Length = 1.5, + Fps = 30, + NextSequence = "Idle", + Events = { + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_raise_first_03")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_raise_first_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_raise_first_01")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_raise_first_04")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.45, + Fps = 30, + MagLength = 1.35, + NextSequence = "Idle", + Events = { + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_01")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_05")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_04")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_03")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_045")) end}, + {Time = 2, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.575, Callback = function(self) self:EnableGrip() end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_02")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_01")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_04")) end}, + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.45, + Fps = 30, + MagLength = 1.35, + NextSequence = "Idle", + Events = { + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_01")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_05")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_04")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_03")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_045")) end}, + {Time = 1.97, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.575, Callback = function(self) self:EnableGrip() end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_02")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_01")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_04")) end}, + } + }, + + ["reload_drum"] = { + Sequences = {"reload_drum"}, + Length = 2.45, + Fps = 30, + MagLength = 1.35, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_drum_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_drum_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_drum_03")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_drum_04")) end}, + {Time = 1.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_drum_05")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.967, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_drum_fast"] = { + Sequences = {"reload_drum_fast"}, + Length = 1.9, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.6, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_drum_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_drum_02")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_drum_04")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_drum_03")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_fast_drum_05")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3, + Fps = 30, + MagLength = 1.25, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-5, 0, 40)) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_045")) end}, + {Time = 1.95, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_02")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_01")) end}, + {Time = 2.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_06")) end}, + {Time = 2.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_07")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_04")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_05")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_02")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_01")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_06")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_04")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_05")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_045")) end}, + {Time = 1.65, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_empty_drum"] = { + Sequences = {"reload_empty_drum"}, + Length = 3, + Fps = 30, + MagLength = 1.25, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.033, Callback = function(self) self:EnableGrip() end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_drum_01")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_drum_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_drum_03")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_drum_04")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_drum_05")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_drum_06")) end}, + {Time = 2.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_drum_07")) end}, + {Time = 2.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_drum_08")) end}, + } + }, + + ["reload_drum_empty_fast"] = { + Sequences = {"reload_empty_drum_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_drum_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_drum_01")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_drum_03")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_drum_04")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_drum_05")) end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_drum_06")) end}, + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 3, + Fps = 30, + MagLength = 1.25, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-5, 0, 40)) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_045")) end}, + {Time = 1.95, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_02")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_01")) end}, + {Time = 2.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_06")) end}, + {Time = 2.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_07")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_04")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_05")) end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_02")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_01")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_06")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_04")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_05")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_reload_empty_fast_045")) end}, + {Time = 1.65, Callback = function(self) self:EnableGrip() end}, + } + }, + + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.oscar12.ads.up")) end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.oscar12.ads.down")) end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_inspect_02")) end}, + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_inspect_01")) end}, + {Time = 3.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_inspect_04")) end}, + {Time = 2.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_inspect_03")) end}, + {Time = 4.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_oscar12_inspect_05")) end}, + {Time = 4.43, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Melee_Queer"] = { + Sequences = {"melee_miss_03", "melee_miss_03", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, + + ["Melee_Hit_Queer"] = { + Sequences = {"melee_hit_03", "melee_hit_03", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0, Callback = function(self) self:AllowRuntimeMagPoseParam(true) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_oscar12/customization.lua b/lua/weapons/mg_oscar12/customization.lua new file mode 100644 index 0000000..dafaac1 --- /dev/null +++ b/lua/weapons/mg_oscar12/customization.lua @@ -0,0 +1,767 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_oscar12_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Shotgun2.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Reflection_ARSUP.Inside"), + Reflection = Sound("Reflection_ShotgunSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +end + +function SWEP:doDBStats() + self.Primary.TrailingSound = Sound("wpn_shotgun_fire_lyr") + self.ParticleEffects.MuzzleFlash = "AC_muzzle_shotgun_db" +end + +-- local function doCalConversionStats(self) +-- local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") +-- local bSup2 = self:HasAttachment("attachment_vm_silencer02") +-- local bSup3 = self:HasAttachment("attachment_vm_silencer03") +-- local bSup4 = self:HasAttachment("attachment_vm_silencer04") +-- local bSup5 = self:HasAttachment("attachment_vm_ar_mike4_barsil") +-- local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_mag_v5") + +-- if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then +-- self.Primary.Sound = Sound("mw19_mcharlie.fire.cal") +-- self.Reverb = { +-- RoomScale = 50000, +-- Sounds = { +-- Outside = { +-- Layer = Sound("Atmo_SMG.Outside"), +-- Reflection = Sound("Reflection_AR.Outside") +-- }, + +-- Inside = { +-- Layer = Sound("Atmo_SMG.Inside"), +-- Reflection = Sound("Reflection_AR.Inside") +-- } +-- } +-- } +-- end + +-- self.Primary.Ammo = "SMG1" +-- self.Shell.Model = Model("models/viper/mw/shells/fx_pistol_shell_lod0.mdl") +-- self.Shell.Scale = 0.5 +-- self.Shell.Sound = Sound("MW_Casings.9mm") +-- end + + +-- local function doSocomConversionStats(self) +-- local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") +-- local bSup2 = self:HasAttachment("attachment_vm_silencer02") +-- local bSup3 = self:HasAttachment("attachment_vm_silencer03") +-- local bSup4 = self:HasAttachment("attachment_vm_silencer04") +-- local bSup5 = self:HasAttachment("attachment_vm_ar_mike4_barsil") +-- local bSup6 = self:HasAttachment("attachment_vm_ar_mike4_mag_v5") + +-- if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5 && !bSup6) then +-- self.Reverb = { +-- RoomScale = 50000, +-- Sounds = { +-- Outside = { +-- Layer = Sound("Atmo_LMG.Outside"), +-- Reflection = Sound("Reflection_AR.Outside") +-- }, + +-- Inside = { +-- Layer = Sound("Atmo_LMG.Inside"), +-- Reflection = Sound("Reflection_AR.Inside") +-- } +-- } +-- } +-- end + +-- self.Shell.Model = Model("models/viper/mw/shells/vfx_9x39_shell.mdl") +-- self.Shell.Scale = 0.35 +-- end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sh_oscar12_perk_soh", "att_perk_hip"}, + + {"attachment_vm_sh_oscar12_barrel", "attachment_vm_sh_oscar12_barrellong", "attachment_vm_sh_oscar12_barrelmid", + "attachment_vm_sh_oscar12_barrelshort"}, + + -- {"attachment_vm_sh_charlie725_guard", "attachment_vm_sh_charlie725_forendtactical", "attachment_vm_sh_charlie725_forendstable", + -- "attachment_vm_sh_charlie725_foreendlight"}, + + {"att_ammo_default", "att_ammo_db", "att_ammo_flechette", + "att_ammo_he", "att_ammo_slugs"}, + + {"attachment_vm_sh_oscar12_stock", "attachment_vm_sh_oscar12_stockhvy", "attachment_vm_sh_oscar12_stocklgt", "att_vm_stock_no"}, + + {"attachment_vm_sh_oscar12_mag", "attachment_vm_sh_oscar12_xmags", "attachment_vm_sh_oscar12_drummag"}, + + {"att_muzzle", "att_vm_compensator_shgn01", "att_vm_compensator_shgn02", "att_vm_flashhider01_shgn", "att_vm_muzzlebrake_shgn01", + "att_vm_breacher02_shgn", "attachment_vm_sh_oscar12_suppressor", "attachment_vm_sh_oscar12_silencer02", + "attachment_vm_sh_oscar12_silencer03"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_4x_east01_tall", "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_sh_oscar12_laser01", "attachment_vm_sh_oscar12_laser02", "attachment_vm_sh_oscar12_laser03"}, + + {"attachment_vm_sh_oscar12_sidegrip", "attachment_vm_sh_oscar12_none", "attachment_vm_sh_oscar12_sidegrip_long", "attachment_vm_sh_oscar12_sidegripang"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.reload_drum = self.Animations.reload_drum_fast +-- self.Animations.reload_empty_drum = self.Animations.reload_drum_empty_fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- --[[{ +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- }]] +-- }, + +-- ["Ammo"] = { +-- Slot = 2, +-- { +-- Key = "no_attachment", +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- self.Projectile = nil +-- end, +-- }, +-- { +-- Key = "sh_slugs", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- { +-- Key = "sh_db", +-- Stats = function(self) +-- doDBStats(self) +-- end +-- }, +-- { +-- Key = "sh_flechette", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- { +-- Key = "sh_he", +-- Stats = function(self) +-- end, +-- PostProcess = function(self) +-- self.Primary.TrailingSound = nil +-- end, +-- }, +-- }, + +-- ["Mag"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_sh_oscar12_mag", +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_drummag", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Barrel"] = { +-- Slot = 4, +-- { +-- Key = "attachment_vm_sh_oscar12_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_barrellong", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_barrelmid", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_barrelshort", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Muzzle"] = { +-- Slot = 5, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_sh_romeo870_choke", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 10, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator_shgn01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 10, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider_shtgn01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 10, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake_shgn01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 10, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee_shgn01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 10, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_silencer03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 10, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_silencer02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 10, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_suppressor", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 10, 0), Angle()}, +-- [3] = {Vector(0, 2.5, 0), Angle()}, +-- [4] = {Vector(0, 1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 6, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) --i know you tell me not to fuck with this but the dot being actually centered on the glass demands it xoxo +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.26) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.1, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.167, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 0, -0.067) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.175) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.07) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 0, -0.005) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 0, 0.42) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.77, 0, 0.9) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 0, 0.44) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 4.5, 0.057) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.028, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0025, 4.5, 0.125) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.028, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 0, 0.28) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, 0.035, 0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-0.9) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, 0.36) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, -0.012, 0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.6, 0, 1.15) +-- end +-- }, +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sh_oscar12_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_stockhvy", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_stocklgt", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_stockno", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 8, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 9, +-- { +-- Key = "attachment_vm_sh_oscar12_sidegrip", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_sidegrip_long", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sh_oscar12_sidegripang", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_oscar12/shared.lua b/lua/weapons/mg_oscar12/shared.lua new file mode 100644 index 0000000..0f81b10 --- /dev/null +++ b/lua/weapons/mg_oscar12/shared.lua @@ -0,0 +1,207 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") + +-- SWEP.BulletList = {"j_shell01"} + +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_oscar12", "VGUI/entities/mg_oscar12", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sh_oscar12") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_queer_offset"} + +SWEP.PrintName = "Origin-12" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Shotguns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_oscar12.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_oscar12.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_oscar12_fire_plr_first"), + ReleasedSound = Sound("weap_sh_charlie725_disconnector_plr"), + Time = 0.025 +} + +SWEP.Slot = 3 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("weap_oscar12_fire_plr") +SWEP.Primary.Ammo = "Buckshot" +SWEP.Primary.ClipSize = 8 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 300 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_shotgun", + ["MuzzleFlash_DB"] = "mw_fas2_muzzleflash_slug", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", + ["Overheating"] = "AC_muzzle_pistol_smoke_barrel", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper.Outside"), + Reflection = Sound("Reflection_Shotgun.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Sniper.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 1, --accuracy while hip + Ads = 1, --accuracy while aiming + Increase = 0.085, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.7, --the cone size will not go beyond this size + Decrease = 0.24, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 54725 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {4, 6.5}, --random value between the 2 + Horizontal = {-1.75, 2.75}, --random value between the 2 + Shake = 4, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 6874, --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {90, 35}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 10, --in meters, damage scales within this distance + DropOffStartRange = 15, + Range = 40, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 6, --the amount of bullets to fire + PhysicsMultiplier = 1.7, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.94, --how much damaged is multipled by when leaving a surface. + MaxCount = 10, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 15 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,100,-90), + Pos = Vector(3,-5,-3) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 6, + KickMultiplier = 1.3, + AimKickMultiplier = 0.45 +} + +SWEP.Shell = "mwb_shelleject_12g" + +DEFINE_BASECLASS("mg_base") +SWEP.bEnableMagPoseParam = false + +function SWEP:PostDrawViewModel(vm, weapon, ply) + BaseClass.PostDrawViewModel(self, vm, weapon, ply) + + if (self.bEnableMagPoseParam) then + self:UpdateMagPoseParam(self:GetMaxClip1() - self:Clip1()) + end +end + +function SWEP:AllowRuntimeMagPoseParam(allow) + self.bEnableMagPoseParam = allow +end + +local tiny = Vector(0.01, 0.01, 0.01) +local normal = Vector(1, 1, 1) + +-- function SWEP:UpdateMagPoseParam(val) +-- self.m_ViewModel:SetPoseParameter("bullets_offset", val) + +-- for b = 1, 25, 1 do +-- local bone = "j_drumshell"..b + +-- if (b < 5) then +-- bone = "j_shell"..b +-- end + +-- local bId = self:LookupBoneCached(self.m_ViewModel, bone) + +-- if (bId != nil) then +-- self.m_ViewModel:ManipulateBoneScale(bId, self:GetMaxClip1() - (val + 1) < b && tiny || normal) +-- end +-- end + +-- --im not touchign the above code as it changes the drum mag and jake spent like 60 years on it +-- self:RemoveBulletsBasedOnClip(self:GetAttachmentModels("Magazines"), self.BulletList) +-- --gun uses duplicate model for mag no need to do anim events +-- end \ No newline at end of file diff --git a/lua/weapons/mg_p320/animations.lua b/lua/weapons/mg_p320/animations.lua new file mode 100644 index 0000000..3d5fccc --- /dev/null +++ b/lua/weapons/mg_p320/animations.lua @@ -0,0 +1,379 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30 + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.45, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.25, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Drop")) end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.16, Callback = function(self) self:DoSound(Sound("MW19_P320.Raise_Open")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("MW19_P320.Raise_Clse")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("MW19_P320.Raise_First_End")) end} + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 1.5, + Fps = 30, + MagLength = 1.03, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start")) end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_P320.Maginsert")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End")) end} + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_xmaglrg"}, + Length = 1.5, + Fps = 30, + MagLength = 1.03, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start")) end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_P320.Maginsert")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End")) end} + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 1.5, + Fps = 30, + MagLength = 1.03, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start")) end}, + {Time = 0.33, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("MW19_P320.Maginsert")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End")) end} + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.53, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start_Fast")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout_Xmag_Fast")) end}, + {Time = 0.85, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.53, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin_Xmag_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End_Xmag_Fast")) end} + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_xmaglrg_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.53, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start_Xmag_Fast")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout_Xmag_Fast")) end}, + {Time = 0.85, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.53, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin_Xmag_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End_Xmag_Fast")) end} + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1, + Fps = 30, + MagLength = 0.53, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start_Xmag_Fast")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout_Xmag_Fast")) end}, + {Time = 0.85, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.53, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin_Xmag_Fast")) end}, + {Time = 0.66, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End_Xmag_Fast")) end} + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start_Empty")) end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout_Empty")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("MW19_P320.Maginsert_Empty")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin_Empty")) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("MW19_P320.Charge")) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End_Empty")) end} + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 2, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start_Empty_Xmag")) end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout_Empty_Xmag")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("MW19_P320.Maginsert_Empty_Xmag")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin_Empty_Xmag")) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("MW19_P320.Charge")) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End_Empty_Xmag")) end} + } + }, + + ["Reload_Empty_XmagLrg"] = { + Sequences = {"reload_empty_xmaglrg"}, + Length = 2, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start_Empty_Xmag")) end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout_Empty_Xmag")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("MW19_P320.Maginsert_Empty_Xmag")) end}, + {Time = 1.33, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin_Empty_Xmag")) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("MW19_P320.Charge")) end}, + {Time = 1.63, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End_Empty_Xmag")) end} + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.25, + Fps = 30, + MagLength = 0.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start_Empty_Fast")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout_Empty_Fast")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin_Empty_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_P320.Charge_Fast")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End_Empty_Fast")) end} + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 1.25, + Fps = 30, + MagLength = 0.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start_Empty_Fast")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout_Empty_Xmag_Fast")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin_Empty_Xmag_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_P320.Charge_Xmag_Fast")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End_Empty_Xmag_Fast")) end} + } + }, + + ["Reload_Empty_XmagLrg_Fast"] = { + Sequences = {"reload_empty_xmaglrg_fast"}, + Length = 1.25, + Fps = 30, + MagLength = 0.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_Start_Empty_Fast")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("MW19_P320.Magout_Empty_Xmag_Fast")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("MW19_P320.Magin_Empty_Xmag_Fast")) end}, + {Time = 0.83, Callback = function(self) self:DoSound(Sound("MW19_P320.Charge_Xmag_Fast")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("MW19_P320.Reload_End_Empty_Xmag_Fast")) end} + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + } + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Lastshot")) end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.ADS_Up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.ADS_Down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 30 + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 26, + NextSequence = "Sprint_Loop" --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Inspect01")) end}, + {Time = 1, Callback = function(self) self:DoSound(Sound("MW19_P320.Inspect02")) end}, + {Time = 2, Callback = function(self) self:DoSound(Sound("MW19_P320.Inspect03")) end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Selectfire")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW19_P320.Selectfire")) end} + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle" + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle" + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Small")) end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Small")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_p320/customization.lua b/lua/weapons/mg_p320/customization.lua new file mode 100644 index 0000000..485a916 --- /dev/null +++ b/lua/weapons/mg_p320/customization.lua @@ -0,0 +1,304 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_papa320_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol_Mag_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + + {"att_perk", "att_vm_pi_papa320_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_fastswap"}, + + {"att_receiver"}, + + {"attachment_vm_pi_papa320_mag", "attachment_vm_pi_papa320_mag_ext", "attachment_vm_pi_papa320_mag_ext2"}, + + {"att_muzzle", "attachment_vm_pi_papa320_silencer", "att_vm_flashhider01_pstl", "att_vm_compensator01_pstl", "att_vm_muzzlebrake01_pstl", + "att_vm_silencer01_pstl", "att_vm_silencer02_pstl", "att_vm_silencer04_pstl", "att_vm_oil_filter_suppressor"}, + + {"att_sight", "att_vm_minireddot01", "att_vm_minireddot02", "att_vm_minireddot03"}, + + {"attachment_vm_pi_papa320_slide", "attachment_vm_pi_papa320_slide_vented", "attachment_vm_pi_papa320_slide_black", + "attachment_vm_pi_papa320_barrel_ext"}, + + {"att_laser", "att_vm_pi_papa320_laser01", "att_vm_pi_papa320_laser02", "att_vm_pi_papa320_laser03", "attachment_vm_laser_pstl_shoothouse"} +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Slide"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_pi_papa320_slide" +-- }, +-- { +-- Key = "attachment_vm_pi_papa320_slide_black", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_papa320_slide_vented", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_papa320_barrel_ext", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_pstl", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_pstl03", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_pstl04", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_pstl_shoothouse", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 5, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot01", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.4) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.35) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.35) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 4, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider_psl01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0.45, 0), Angle()}, +-- [4] = {Vector(0, 0.45, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake_pstl01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0.45, 0), Angle()}, +-- [4] = {Vector(0, 0.45, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator_pstl01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0.45, 0), Angle()}, +-- [4] = {Vector(0, 0.45, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_oil_filter_suppressor", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0.45, 0), Angle()}, +-- [4] = {Vector(0, 0.45, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, + +-- { +-- Key = "attachment_vm_silencer_pstl_02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0.45, 0), Angle()}, +-- [4] = {Vector(0, 0.45, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencerpstl03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0.45, 0), Angle()}, +-- [4] = {Vector(0, 0.45, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencerpstl", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Slide"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0.45, 0), Angle()}, +-- [4] = {Vector(0, 0.45, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Magazine"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_pi_papa320_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_papa320_mag_ext", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_pi_papa320_mag_ext2", +-- Stats = function(self) +-- end +-- } +-- } +-- } + diff --git a/lua/weapons/mg_p320/shared.lua b/lua/weapons/mg_p320/shared.lua new file mode 100644 index 0000000..3bd1285 --- /dev/null +++ b/lua/weapons/mg_p320/shared.lua @@ -0,0 +1,155 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_pistol") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_p320", "VGUI/entities/mg_p320", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_pi_papa320") +end + +SWEP.Base = "mg_base" + +SWEP.PrintName = "M19" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Pistols" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_p320.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_p320.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_papa320_fire_first"), + ReleasedSound = Sound("weap_papa320_fire_disconnector"), + Time = 0.025 +} + +SWEP.Slot = 1 +SWEP.HoldType = "Pistol" + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Primary.Sound = Sound("weap_papa320_fire_plr") +SWEP.Primary.Ammo = "Pistol" +SWEP.Primary.ClipSize = 17 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 600 +SWEP.CanChamberRound = true + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Semi Auto", + OnSet = function() + return nil + end + } +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 20, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 40 --degrees per second +} + +SWEP.Cone = { + Hip = 0.15, --accuracy while hip + Ads = 0.13, --accuracy while aiming + Increase = 0.06, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.14, --multiply the increase value by this amount while aiming + Max = 1.16, --the cone size will not go beyond this size + Decrease = 0.54, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 85327 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.13, 0.34}, --random value between the 2 + Horizontal = {-0.067, 0.18}, --random value between the 2 + Shake = 1.36, --camera shake + AdsMultiplier = 0.47, --multiply the values by this amount while aiming + Seed = 610312 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {27, 18}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 10, + EffectiveRange = 28, --in meters, damage scales within this distance + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.75, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 7, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 15 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_pistol_offset", + Angles = Angle(0, 90, -90), + Pos = Vector(4, -3, -3) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0.15, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_pistol_offset", + X = { + [0] = {Pos = Vector(0, 2, -2), Angles = Angle(30, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(0, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(-1, 0, 0), Angles = Angle(-10, -30, 0)}, + [1] = {Pos = Vector(-4, 0, 0), Angles = Angle(0, 30, 0)} + } + }, + + RecoilMultiplier = 1, + KickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_9mm" \ No newline at end of file diff --git a/lua/weapons/mg_papa90/animations.lua b/lua/weapons/mg_papa90/animations.lua new file mode 100644 index 0000000..7634713 --- /dev/null +++ b/lua/weapons/mg_papa90/animations.lua @@ -0,0 +1,331 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.4, + Fps = 30, + NextSequence = "Idle", + Events = { + + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.papa90.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.6, + Fps = 40, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.papa90.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_raise_first_01")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_raise_first_03")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_raise_first_02")) end}, + {Time = 0.0, Callback = function(self) self:EnableGrip() end}, + {Time = 0.767, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.75, + Fps = 30, + MagLength = 2, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_01")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_02")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_03")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_04")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_05")) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_06")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_07")) end}, + {Time = 2.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_08")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.533, Callback = function(self) self:EnableGrip() end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_055")) end}, + -- {Time = 1, Callback = function(self) + -- self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) + -- end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2.3, + Fps = 30, + MagLength = 1.35, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_fast_08")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_fast_04")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_fast_05")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_fast_01")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_fast_02")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_fast_03")) end}, + {Time = 1.867, Callback = function(self) self:EnableGrip() end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_fast_055")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_fast_06")) end}, + -- {Time = 1, Callback = function(self) + -- self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) + -- end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.3, + Fps = 30, + MagLength = 2.13, + NextSequence = "Idle", + Events = { + {Time = 1.25, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_08")) end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_055")) end}, + {Time = 2.933, Callback = function(self) self:EnableGrip() end}, + {Time = 3.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_09")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_01")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_02")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_03")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_04")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_05")) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_06")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_07")) end}, + -- {Time = 1, Callback = function(self) + -- self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) + -- end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.46, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_fast_045")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.2, Callback = function(self) self:EnableGrip() end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_fast_01")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_fast_04")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_fast_06")) end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_fast_07")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_fast_02")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_reload_empty_fast_03")) end}, + -- {Time = 1, Callback = function(self) + -- self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) + -- end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.papa90.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.papa90.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 39, + NextSequence = "Idle", + Events = { + + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.papa90.selector.on")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.papa90.selector.off")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 2.5, Callback = function(self) self:EnableGrip() end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_inspect_01")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_inspect_02")) end}, + {Time = 2.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_inspect_03")) end}, + {Time = 3.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_inspect_04")) end}, + {Time = 4.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_papa90_inspect_05")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_papa90/customization.lua b/lua/weapons/mg_papa90/customization.lua new file mode 100644 index 0000000..d9d73c0 --- /dev/null +++ b/lua/weapons/mg_papa90/customization.lua @@ -0,0 +1,53 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_papa90_sup_fire_plr_lfe") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sm_papa90_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_rof"}, + + {"att_stock", "attachment_vm_sm_papa90_stock_tactical", "attachment_vm_sm_papa90_stockl", "attachment_vm_sm_papa90_stocks"}, + + {"attachment_vm_sm_papa90_receiver"}, + + {"attachment_vm_sm_papa90_mag"}, + + {"attachment_vm_sm_papa90_barrel", "attachment_vm_sm_papa90_longbarrel", "attachment_vm_sm_papa90_custombarrel"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "attachment_vm_sm_papa90_reddotscope", + "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04"}, + + {"att_laser", "attachment_vm_sm_papa90_laser01", "attachment_vm_sm_papa90_laser02", + "attachment_vm_sm_papa90_laser03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) \ No newline at end of file diff --git a/lua/weapons/mg_papa90/shared.lua b/lua/weapons/mg_papa90/shared.lua new file mode 100644 index 0000000..b876e87 --- /dev/null +++ b/lua/weapons/mg_papa90/shared.lua @@ -0,0 +1,229 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_papa90", "VGUI/entities/mg_papa90", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sm_papa90") +end + +-- SWEP.BulletList = {[28] = "j_bullets_022", [27] = "j_bullets_021", [26] = "j_bullets_020", [25] = "j_bullets_019", [24] = "j_bullets_018", [23] = "j_bullets_017", [22] = "j_bullets_016", +-- [21] = "j_bullets_015", [20] = "j_bullets_014", [19] = "j_bullets_013", [18] = "j_bullets_012", [17] = "j_bullets_011", +-- [16] = "j_bullets_010", [15] = "j_bullets_09", [14] = "j_bullets_08", [13] = "j_bullets_07", [12] = "j_bullets_06", +-- [11] = "j_bullets_05", [10] = "j_bullets_04", [9] = "j_bullets_03", [8] = "j_bullets_02", [7] = "j_bullets_01", +-- [6] = "j_bullet_06", [5] = "j_bullet_05", [4] = "j_bullet_04", [3] = "j_bullet_03", [2] = "j_bullet_02", [1] = "j_bullet_01"} + +SWEP.Base = "mg_base" + +SWEP.PrintName = "P90" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Submachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_papa90.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_papa90.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "TinyGun" +SWEP.Trigger = { + PressedSound = Sound("weap_papa90_fire_first_plr"), + ReleasedSound = Sound("weap_papa90_disconnector_plr"), + Time = 0.025 +} + +SWEP.Primary.Sound = Sound("weap_papa90_fire_plr_lfe") +SWEP.Primary.Ammo = "SMG1" +SWEP.Primary.ClipSize = 50 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 895.5223880597015 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.15, --accuracy while hip + Ads = 0.025, --accuracy while aiming + Increase = 0.05, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.075, --multiply the increase value by this amount while aiming + Max = 1, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 987654321 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.85, 1.15}, --random value between the 2 + Horizontal = {-1.15, 1.15}, --random value between the 2 + Shake = 1, --camera shake + AdsMultiplier = 0.25, --multiply the values by this amount while aiming + Seed = 6589132 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {22, 13}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 38, --in meters, damage scales within this distance` + DropOffStartRange = 13, + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.7, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 14, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,105,-90), + Pos = Vector(-3.5,-0.5,8) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, -4, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 0, 2), Angles = Angle(30, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.3, + KickMultiplier = 0.4, + AimKickMultiplier = 3.2 +} + +SWEP.Shell = "mwb_shelleject_57" + +DEFINE_BASECLASS("mg_base") + +-- SWEP.magSpringDelta = 1 +-- local small = Vector(0, 0, 0) +-- local normal = Vector(1, 1, 1) + +-- function SWEP:ResetBullets(model, bones) +-- for i, bone in pairs(bones) do +-- local bId = self:LookupBoneCached(model, bone) +-- if (bId != nil) then +-- if (i > 6) then +-- if ((self:Clip1() + self:Ammo1()) * 0.5 + 3 >= i) then +-- model:ManipulateBoneScale(self:LookupBoneCached(model, bone), normal) +-- end +-- else +-- if (self:Clip1() + self:Ammo1() >= i) then +-- model:ManipulateBoneScale(self:LookupBoneCached(model, bone), normal) +-- end +-- end +-- end +-- end + +-- self.magSpringDelta = 1 - math.min(math.max(self:Clip1() + self:Ammo1(), 4) / self:GetMaxClip1(), 1) +-- end + +-- function SWEP:RemoveBulletsBasedOnClip(model, bones) +-- if (IsValid(model) && self:GetIsReloading()) then +-- return +-- end + +-- for i, bone in pairs(bones) do +-- local bId = self:LookupBoneCached(model, bone) +-- if (bId != nil) then +-- if (i > 6) then +-- model:ManipulateBoneScale(self:LookupBoneCached(model, bone), (self:Clip1() * 0.5) + 3 <= i && small || normal) +-- else +-- model:ManipulateBoneScale(self:LookupBoneCached(model, bone), self:Clip1() <= i && small || normal) +-- end +-- end +-- end + +-- self.magSpringDelta = 1 - math.min(math.max(self:Clip1(), 4) / self:GetMaxClip1(), 1) +-- end + +-- function SWEP:PostDrawViewModel(vm, weapon, ply) +-- BaseClass.PostDrawViewModel(self, vm, weapon, ply) + +-- local model = self:GetAttachmentModels("Magazines") +-- self:RemoveBulletsBasedOnClip(model, self.BulletList) + +-- local springId = self:LookupBoneCached(model, "j_mag_spring") +-- local pusherId = self:LookupBoneCached(model, "j_mag_pusher") +-- model:ManipulateBonePosition(pusherId, Vector(self.magSpringDelta * -7, 0, 0)) +-- model:ManipulateBoneScale(springId, Vector(self.magSpringDelta * -2.5, 1, 1)) +-- end \ No newline at end of file diff --git a/lua/weapons/mg_pkilo/animations.lua b/lua/weapons/mg_pkilo/animations.lua new file mode 100644 index 0000000..0dc42ff --- /dev/null +++ b/lua/weapons/mg_pkilo/animations.lua @@ -0,0 +1,243 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 1.4, --o7 + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 1, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.35, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise.first")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"Reload"}, + Length = 8.65, + Fps = 30, + MagLength = 5.85, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_fast"] = { + Sequences = {"Reload_fast"}, + Length = 5.9, + Fps = 30, + MagLength = 3.9, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Empty"] = { + Sequences = {"Reload_empty"}, + Length = 8.65, + Fps = 30, + MagLength = 5.85, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_fast"] = { + Sequences = {"Reload_empty_fast"}, + Length = 5.9, + Fps = 30, + MagLength = 3.9, + NextSequence = "Idle", + Events = { + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.195, + Fps = 12, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 17, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 17, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.5, --if melee hits + + Damage = 100, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + } +} \ No newline at end of file diff --git a/lua/weapons/mg_pkilo/customization.lua b/lua/weapons/mg_pkilo/customization.lua new file mode 100644 index 0000000..d63e2bd --- /dev/null +++ b/lua/weapons/mg_pkilo/customization.lua @@ -0,0 +1,1161 @@ +AddCSLuaFile() +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_pkilo_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doSmgStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4) then + self.Primary.Sound = Sound("mw19.akilo47.smgcal.fire") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Shell = "mwb_shelleject_545" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_lm_pkilo_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_lm_pkilo_stock", "att_vm_stock_heavy01", + "att_vm_stock_heavy02", "att_vm_stock_light01", "att_vm_stock_medium01", "att_vm_stock_no"}, + + {"attachment_vm_lm_pkilo_mag", "attachment_vm_lm_pkilo_mag_xlrg", "attachment_vm_lm_pkilo_mag_ext"}, + + {"attachment_vm_lm_pkilo_barrel", "attachment_vm_lm_pkilo_barrel_short", "attachment_vm_lm_pkilo_barrel_heavy", "attachment_vm_lm_pkilo_barrel_long"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", 'att_vm_silencer06'}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + --[["att_vm_scope_mike14", "att_vm_scope_vz"]]}, + + {"att_laser", "attachment_vm_lm_pkilo_laser01_cylinder", "attachment_vm_lm_pkilo_laser02_cylinder", + "attachment_vm_lm_pkilo_laser03_cylinder"}, + + {"att_grip", "attachment_vm_lm_pkilo_angledgrip01", "attachment_vm_lm_pkilo_angledgrip02", "attachment_vm_lm_pkilo_stubbygrip01", + "attachment_vm_lm_pkilo_stubbygrip02", "attachment_vm_lm_pkilo_vertgrip01", "attachment_vm_lm_pkilo_vertgrip02", + "attachment_vm_lm_pkilo_vertgrip03", "attachment_vm_lm_pkilo_bipod"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_lm_pkilo_barrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- }, +-- { +-- Key = "attachment_vm_lm_pkilo_custombarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_pkilo_lmgbarrel_grip", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_pkilo_lmgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_pkilo_smgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 2, +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_smg_pose_offset") +-- end, +-- UsingSmgBarrel = true +-- }, +-- { +-- Key = "attachment_vm_lm_pkilo_smgbarcust", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.2, 0.07, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.03, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.08) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.3) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.22) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.29) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.082) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 3, -1.23) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.126, 2, -1.411) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -1.514) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0084, 2, -1.407) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0155, 2, -1.345) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.016, 2, -0.917) + -- self.HybridAimAngles = Angle(-0.05, 0, -45) + -- self.HybridAimPos = Vector(-1.8, 2, -0.45) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 2, -0.902) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 4, -1.287) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 4, -1.222) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 3, -1.055) + -- self.HybridAimAngles = Angle(0, 0.03, 0) + -- self.HybridAimPos = Vector(0,0,-2.25) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -0.985) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2, -0.15) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_lm_pkilo_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_pkilo_lmgstock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_pkilo_smgstock_unfolded", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_pkilo_smgstock", +-- ExcludedAttachments = { +-- ["Magazine"] = {4} +-- }, +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- VElement = { +-- Bone = "tag_stock_attach", +-- Position = Vector(2.5, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- --self:RemoveValue("LaserAimAngles") +-- --self:RemoveValue("LaserAimPos") +-- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 +-- end +-- }, + -- { + -- Key = "attachment_vm_lm_pkilo_stockno", + -- Bodygroups = { + -- ["stock_adapter"] = 1 + -- }, + -- Stats = function(self) + -- --self:RemoveValue("LaserAimAngles") + -- --self:RemoveValue("LaserAimPos") + -- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 + -- end + -- } + -- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_lm_pkilo_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_pkilo_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_pkilo_smgmag", +-- Stats = function(self) +-- doSmgStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_pkilo_drum_mag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_pkilo/shared.lua b/lua/weapons/mg_pkilo/shared.lua new file mode 100644 index 0000000..3756e0e --- /dev/null +++ b/lua/weapons/mg_pkilo/shared.lua @@ -0,0 +1,176 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_pkilo", "VGUI/entities/mg_pkilo", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_lm_pkilo") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "PKM" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Lightmachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_pkilo.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_pkilo.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("weap_pkilo_prefire_plr"), + ReleasedSound = Sound(""), + Time = 0.15 +} + +SWEP.Primary.Sound = Sound("weap_pkilo_fire_plr") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 100 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 750 +SWEP.CanChamberRound = false +SWEP.CanDisableAimReload = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_lmg", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_LMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.8, --accuracy while hip + Ads = 0.13, --accuracy while aiming + Increase = 0.093, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.24, --multiply the increase value by this amount while aiming + Max = 1.75, --the cone size will not go beyond this size + Decrease = 0.6, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 2333, --just give this a random number + DecreaseEveryShot = 0.1, + MinDecreaseEveryShot = 0.25 +} + +SWEP.Recoil = { + Vertical = {4, 4.5}, --random value between the 2 + Horizontal = {-2.75, 2.75}, --random value between the 2 + Shake = 1.5, --camera shake + AdsMultiplier = 0.5, --multiply the values by this amount while aiming + Seed = 675846694, --give this a random number until you like the current recoil pattern + DecreaseEveryShot = 0.1, + MinDecreaseEveryShot = 0.25 +} + +SWEP.Bullet = { + Damage = {43, 39}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 35, --in meters, damage will start dropping off after this range + EffectiveRange = 65, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.8, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 8 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 0, -180), + Pos = Vector(12,-1,-4) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 4, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -4, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(3, 0, -2), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.45, + KickMultiplier = 2, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_762" + +DEFINE_BASECLASS(SWEP.Base) + +function SWEP:PreAttachments() + BaseClass.PreAttachments(self) + + if (!self:HasAttachment("att_sight")) then + self.Animations.Reload.Sequences = {"Reload_scope"} + self.Animations.Reload_Empty.Sequences = {"Reload_empty_scope"} + self.Animations.Reload_fast.Sequences = {"Reload_fast_scope"} + self.Animations.Reload_empty_fast.Sequences = {"Reload_empty_fast_scope"} + end +end \ No newline at end of file diff --git a/lua/weapons/mg_romeo700/animations.lua b/lua/weapons/mg_romeo700/animations.lua new file mode 100644 index 0000000..e136049 --- /dev/null +++ b/lua/weapons/mg_romeo700/animations.lua @@ -0,0 +1,568 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.85, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_raise_01")) end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["draw_grip"] = { + Sequences = {"draw_grip"}, + Length = 0.85, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_raise_01")) end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.6, + Fps = 30, + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_drop_01")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_raise_first_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_raise_first_01")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_raise_first_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip2() end}, + } + }, + + ["draw_first_grip"] = { + Sequences = {"draw_first_grip"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_raise_first_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_raise_first_01")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_raise_first_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip2() end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.83, + MagLength = 2.06, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 2.333, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_05")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_04")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_01")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_03")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_02")) end}, + {Time = 0.133, Callback = function(self) self:DisableGrip2() end}, + + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2, + MagLength = 1.4, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_fast_04")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_fast_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_fast_01")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_fast_03")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_fast_05")) end}, + {Time = 1.6, Callback = function(self) self:EnableGrip() end}, + + } + }, + + ["Reload_Xmag"] = { + Sequences = {"Reload_Xmag"}, + Length = 2.83, + MagLength = 2.06, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.167, Callback = function(self) end}, + {Time = 0.167, Callback = function(self) self:DisableGrip2() end}, + {Time = 2.533, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_xmags_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_xmags_02")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_xmags_03")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_xmags_05")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_xmags_04")) end}, + + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"Reload_Xmag_Fast"}, + Length = 2, + MagLength = 1.4, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_fast_xmags_05")) end}, + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 1.733, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_fast_xmags_04")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_fast_xmags_02")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_fast_xmags_03")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_fast_xmags_01")) end}, + + } + }, + + ["Reload_Empty"] = { + Sequences = {"Reload_Empty"}, + Length = 3.8, + MagLength = 2.5, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.6, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 1.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(30, 0, 40)) end}, + {Time = 1.0, Callback = function(self) end}, + {Time = 1.0, Callback = function(self) end}, + {Time = 1.0, Callback = function(self) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_02")) end}, + {Time = 2.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_05")) end}, + {Time = 2.467, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_04")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 3.5, Callback = function(self) self:EnableGrip2() end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip2() end}, + {Time = 3.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_06")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_03")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"Reload_Empty_Fast"}, + Length = 2.8, + MagLength = 1.43, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 2.06, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 1.7, Callback = function(self) end}, + {Time = 1.7, Callback = function(self) self:DisableGrip2() end}, + {Time = 1.6, Callback = function(self) self:EnableGrip() end}, + {Time = 2.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_07")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_06")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_05")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_04")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_03")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_01")) end}, + {Time = 2.6, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"Reload_Empty_Xmag"}, + Length = 3.8, + MagLength = 2.5, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.6, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 1.8, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(30, 0, 40)) end}, + {Time = 1.7, Callback = function(self) end}, + {Time = 1.7, Callback = function(self) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_xmags_04")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_xmags_02")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_xmags_03")) end}, + {Time = 2.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_xmags_05")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 3.767, Callback = function(self) self:EnableGrip2() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_xmags_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip2() end}, + {Time = 3.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_xmags_07")) end}, + {Time = 2.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_xmags_06")) end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"Reload_Empty_Xmag_Fast"}, + Length = 2.8, + MagLength = 1.43, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 2.06, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.7, Callback = function(self) end}, + {Time = 2.8, Callback = function(self) self:EnableGrip2() end}, + {Time = 1.867, Callback = function(self) self:DisableGrip2() end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_xmags_02")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_xmags_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_xmags_01")) end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_xmags_06")) end}, + {Time = 2.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_xmags_07")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_xmags_04")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_reload_empty_fast_xmags_05")) end}, + {Time = 1.7, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Rechamber"] = { + Sequences = {"rechamber"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.5, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 1.033, Callback = function(self) self:EnableGrip2() end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_rechamber_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip2() end}, + {Time = 0.0, Callback = function(self) + if (self:HasAttachment("attachment_vm_sn_romeo700_perk_bolt")) then + self:DoSound(Sound("wfoly_plr_sn_romeo700_rechamber_01_fast")) + else + self:DoSound(Sound("wfoly_plr_sn_romeo700_rechamber_01")) + end + end}, + } + }, + + ["rechamber_bolthvy"] = { + Sequences = {"rechamber_bolthvy"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.5, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 1.267, Callback = function(self) self:EnableGrip2() end}, + {Time = 0.167, Callback = function(self) + if (self:HasAttachment("attachment_vm_sn_romeo700_perk_bolt")) then + self:DoSound(Sound("wfoly_plr_sn_romeo700_rechamber_bolthvy_01_fast")) + else + self:DoSound(Sound("wfoly_plr_sn_romeo700_rechamber_bolthvy_01")) + end + end}, + {Time = 0.0, Callback = function(self) self:DisableGrip2() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_rechamber_bolthvy_02")) end}, + } + }, + + ["rechamber_boltl"] = { + Sequences = {"rechamber_boltl"}, + Length = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.5, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_rechamber_boltl_02")) end}, + {Time = 0.067, Callback = function(self) + if (self:HasAttachment("attachment_vm_sn_romeo700_perk_bolt")) then + self:DoSound(Sound("wfoly_plr_sn_romeo700_rechamber_boltl_01_fast")) + else + self:DoSound(Sound("wfoly_plr_sn_romeo700_rechamber_boltl_01")) + end + end}, + {Time = 0.867, Callback = function(self) self:EnableGrip2() end}, + {Time = 0.0, Callback = function(self) self:DisableGrip2() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_sn_sksierra_ads_up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_sn_sksierra_ads_up")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 2.633, Callback = function(self) self:DisableGrip2() end}, + {Time = 2.4, Callback = function(self) self:EnableGrip() end}, + {Time = 3.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_07")) end}, + {Time = 2.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_06")) end}, + {Time = 2.267, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_05")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_03")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_02")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_01")) end}, + {Time = 4.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_08")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip2() end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_04")) end}, + } + }, + + ["inspect_xmag"] = { + Sequences = {"inspect_xmag"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 2.633, Callback = function(self) self:DisableGrip2() end}, + {Time = 2.4, Callback = function(self) self:EnableGrip() end}, + {Time = 3.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_07")) end}, + {Time = 2.933, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_06")) end}, + {Time = 2.267, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_05")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_03")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_02")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_01")) end}, + {Time = 4.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_08")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip2() end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_romeo700_inspect_04")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DisableGrip2() end}, + {Time = 0.833, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.767, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_romeo700/customization.lua b/lua/weapons/mg_romeo700/customization.lua new file mode 100644 index 0000000..cd65594 --- /dev/null +++ b/lua/weapons/mg_romeo700/customization.lua @@ -0,0 +1,1021 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_romeo700_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_DMR_Sup.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_DMR_Sup.Inside"), + Reflection = Sound("Reflection_Sniper.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sn_romeo700_perk_soh", "att_perk_fmj", "attachment_vm_sn_romeo700_perk_bolt", "att_perk_ricochet"}, + + {"attachment_vm_sn_romeo700_stock", "attachment_vm_sn_romeo700_stockhvy", + "attachment_vm_sn_romeo700_stockskel", "attachment_vm_sn_romeo700_stocksn", "attachment_vm_sn_romeo700_stocktac"}, + + {"attachment_vm_sn_romeo700_mag", "attachment_vm_sn_romeo700_magcalcust1", "attachment_vm_sn_romeo700_magcalcust2", "attachment_vm_sn_romeo700_xmags"}, + + {"attachment_vm_sn_romeo700_barrel", "attachment_vm_sn_romeo700_barshort", + "attachment_vm_sn_romeo700_barsil", "attachment_vm_sn_romeo700_barlong", "attachment_vm_sn_romeo700_barhvy"}, + + {"attachment_vm_sn_romeo700_bolt", "attachment_vm_sn_romeo700_bolthvy", "attachment_vm_sn_romeo700_boltl"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"attachment_vm_sn_romeo700_irons", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", + "att_vm_hybrid_west01", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04", + "att_vm_scope_mike14", "att_vm_scope_vz", "attachment_vm_sn_romeo700_scope"}, + + {"att_laser", "attachment_vm_sn_romeo700_laser01", "attachment_vm_sn_romeo700_laser02", + "attachment_vm_sn_romeo700_laser03"}, + + {"att_grip", "attachment_vm_sn_romeo700_bipodgrip", "attachment_vm_sn_romeo700_angledgrip01", "attachment_vm_sn_romeo700_angledgrip02", "attachment_vm_sn_romeo700_stubbygrip01", + "attachment_vm_sn_romeo700_stubbygrip02", "attachment_vm_sn_romeo700_vertgrip01", "attachment_vm_sn_romeo700_vertgrip02", + "attachment_vm_sn_romeo700_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- weapon.Animations.Reload = weapon.Animations.Reload_Fast +-- weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast +-- weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast +-- weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +-- weapon.Animations.Reload_Smag = weapon.Animations.Reload_Smag_Fast +-- weapon.Animations.Reload_Empty_Smag = weapon.Animations.Reload_Empty_Smag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sn_romeo700_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_romeo700_barlong", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_romeo700_barhvy", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_romeo700_barshort", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.03, 0) --i know you tell me not to fuck with this but the dot being actually centered on the glass demands it xoxo +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.02, 5, -1.275) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 3, -1.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05,0.05,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.15,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 4, -1.61) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0, 4, -1.71) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0.03,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 4, -1.61) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0015, 4, -1.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 4, -1.12) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.75, 10.5, -0.6) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 4, -1.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_romeo700_scope", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01,0,-0.75) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_romeo700_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01,6,-1.5) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0035,6,-1.43) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 4, -1.255) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,13,-2.45) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 4, -1.52) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0, 0.025, 0) +-- self.HybridAimPos = Vector(-0.015, 15, -1.5) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 4, -1.52) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0, 0.025, 0) +-- self.HybridAimPos = Vector(-0.015, 15, -1.5) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 4, -1.185) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 10, -0.35) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 5, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- AttachmentBodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.5, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- AttachmentBodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.5, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- AttachmentBodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.5, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 6, +-- { +-- Key = "attachment_vm_sn_romeo700_stock", +-- }, +-- { +-- Key = "attachment_vm_sn_romeo700_stockhvy", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_romeo700_stockhvy2", +-- Stats = function(self) +-- self:SetGripPoseParameter2("grip_stockhvy_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_romeo700_stockno", +-- Stats = function(self) +-- self:SetGripPoseParameter2("grip_stockhvy_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sn_romeo700_mag" +-- }, +-- { +-- Key = "attachment_vm_sn_romeo700_smag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_romeo700_xmag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- } +-- } \ No newline at end of file diff --git a/lua/weapons/mg_romeo700/shared.lua b/lua/weapons/mg_romeo700/shared.lua new file mode 100644 index 0000000..3597664 --- /dev/null +++ b/lua/weapons/mg_romeo700/shared.lua @@ -0,0 +1,170 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_romeo700", "VGUI/entities/mg_romeo700", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sn_romeo700") +end + +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vertpro_offset", "grip_stockhvy_offset", "grip_stocktac_offset", "grip_stockskel_offset", "grip_stocksn_offset"} +SWEP.GripPoseParameters2 = {"grip_pistolgrip_offset"} + +SWEP.Base = "mg_base" + +SWEP.PrintName = "SPR" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Marksman Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_romeo700.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_romeo700.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.sksierra.fire.first"), + ReleasedSound = Sound("mw19.sksierra.disconnector"), + Time = 0.03 +} + +SWEP.Slot = 3 +SWEP.HoldType = "BoltAction" + +SWEP.Primary.Sound = Sound("weap_romeo700_fire_plr") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 5 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 328 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false +SWEP.EmptyReloadRechambers = true +SWEP.Projectile = { + Class = "mg_sniper_bullet", --bullet entity class + Speed = 30000, + Gravity = 8, + Penetrate = true +} +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_dmr", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Bolt-Action", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 1, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.086, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.025, --multiply the increase value by this amount while aiming + Max = 2.5, --the cone size will not go beyond this size + Decrease = 1, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6985 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {7, 10}, --random value between the 2 + Horizontal = {-1.75, 2.75}, --random value between the 2 + Shake = 3, --camera shake + AdsMultiplier = 0.05, --multiply the values by this amount while aiming + Seed = 3584, --give this a random number until you like the current recoil pattern +} +SWEP.Bullet = { + Damage = {102, 85}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 250, --in meters, damage scales within this distance + DropOffStartRange = 30, + Range = 300, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1.25, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 2, + Penetration = { + DamageMultiplier = 0.85, --how much damaged is multipled by when leaving a surface. + MaxCount = 6, --how many times the bullet can penetrate. + Thickness = 25, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(15,0,-180), + Pos = Vector(9,-1,-1.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1, + KickMultiplier = 1, + AimKickMultiplier = 0.75 +} + +SWEP.Shell = "mwb_shelleject_7625x" \ No newline at end of file diff --git a/lua/weapons/mg_romeo870/animations.lua b/lua/weapons/mg_romeo870/animations.lua new file mode 100644 index 0000000..27d842f --- /dev/null +++ b/lua/weapons/mg_romeo870/animations.lua @@ -0,0 +1,562 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.65, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.romeo870.raise")) end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.95, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.romeo870.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_raise_first_02")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_raise_first_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_raise_first_01")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.45, + Fps = 30, + MagLength = 1.9, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo871_caldb_reload_05")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo871_caldb_reload_04")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo871_caldb_reload_06")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo871_caldb_reload_01")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo871_caldb_reload_03")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo871_caldb_reload_02")) end}, + {Time = 2.27, Callback = function(self) self:EnableGrip() end}, + -- {Time = 1.2, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_fast"] = { + Sequences = {"reload_fast"}, + Length = 1.75, + Fps = 30, + MagLength = 1.25, + NextSequence = "Idle", + Events = { + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo874_caldb_reload_fast_04")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo874_caldb_reload_fast_05")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo874_caldb_reload_fast_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo874_caldb_reload_fast_02")) end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo874_caldb_reload_fast_03")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.5, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) end}, + -- {Time = 0.6, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.2, + Fps = 30, + MagLength = 2.1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) + if (self.bCanEjectOnReload) then + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + self.bCanEjectOnReload = false + end}, + {Time = 0.4, Callback = function(self) self:DisableGrip() end}, + {Time = 2.5, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 3.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo872_caldb_reload_empty_08")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo872_caldb_reload_empty_02")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo872_caldb_reload_empty_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo872_caldb_reload_empty_01")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo872_caldb_reload_empty_06")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo872_caldb_reload_empty_07")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo872_caldb_reload_empty_04")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo872_caldb_reload_empty_05")) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-5, 0, 40)) end}, + -- {Time = 1.2, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["reload_empty_fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.35, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) + if (self.bCanEjectOnReload) then + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + self.bCanEjectOnReload = false + end}, + {Time = 0.233, Callback = function(self) self:DisableGrip() end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo873_caldb_reload_empty_fast_02")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo873_caldb_reload_empty_fast_05")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo873_caldb_reload_empty_fast_04")) end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo873_caldb_reload_empty_fast_06")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo873_caldb_reload_empty_fast_01")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo873_caldb_reload_empty_fast_03")) end}, + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Metal"), Vector(-5, 0, 40)) end}, + -- {Time = 0.8, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Mag"), self.BulletList) end}, + } + }, + + ["Reload_Start"] = { + Sequences = {"reload_start"}, + Length = 0.8, + Fps = 30, + MagLength = 0.76, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_start_01")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_start_02")) end}, + } + }, + + ["reload_start_fast"] = { + Sequences = {"reload_start_fast"}, + Length = 0.8, + Fps = 30, + MagLength = 0.7, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.1, Callback = function(self) self:DisableGrip2() end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_start_fast_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_start_fast_01")) end}, + } + }, + + ["Reload_Loop"] = { + Sequences = {"reload_loop"}, + Length = 0.7, + Fps = 30, + MagLength = 0.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_loop_03")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_loop_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_loop_01")) end}, + + } + }, + + ["reload_loop_fast"] = { + Sequences = {"reload_loop_fast"}, + Length = 0.5, + Fps = 30, + MagLength = 0.5, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_loop_fast_01")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_loop_fast_02")) end}, + } + }, + + ["Reload_End"] = { + Sequences = {"reload_end"}, + Length = 0.63, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.167, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_end_01")) end}, + } + }, + + ["reload_end_fast"] = { + Sequences = {"reload_end_fast"}, + Length = 0.63, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_end_fast_01")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_end_fast_02")) end}, + --{Time = 0.167, Callback = function(self) self:EnableGrip() end}, + {Time = 0.23, Callback = function(self) self:EnableGrip() end}, + {Time = 0.2, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Reload_End_Empty"] = { + Sequences = {"reload_end_empty"}, + Length = 0.86, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.4, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_rechamber_01")) end}, + {Time = 0.167, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_end_01")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_rechamber_015")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_raise_first_03")) end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["reload_end_empty_fast"] = { + Sequences = {"reload_end_empty_fast"}, + Length = 0.86, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.4, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 0.3, Callback = function(self) self:EnableGrip() end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_rechamber_015")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_reload_end_fast_01")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_rechamber_01")) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self.bCanEjectOnReload = true + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + + ["fire_slam"] = { + Sequences = {"fire_slam"}, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self.bCanEjectOnReload = true + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Rechamber"] = { + Sequences = {"rechamber"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.1, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + { + Time = 0, + Callback = function(self) + self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_rechamber_01")) + self.bCanEjectOnReload = true + end + }, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_rechamber_015")) end}, + {Time = 0, Callback = function(self) self:EnableGrip2() self:EnableGrip() end}, + } + }, + + ["rechamber_slam"] = { + Sequences = {"rechamber_slam"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.1, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + { + Time = 0, + Callback = function(self) + self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_rechamber_01")) + self.bCanEjectOnReload = true + end + }, + {Time = 0.23, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_romeo870_rechamber_015")) end}, + {Time = 0, Callback = function(self) self:EnableGrip2() self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["fire_last_slam"] = { + Sequences = {"fire_last_slam"}, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dpapa12.ads.up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.dpapa12.ads.down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 3.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_charlie725_inspect_04")) end}, + {Time = 4.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_charlie725_inspect_05")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_charlie725_inspect_02")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_charlie725_inspect_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sh_charlie725_inspect_01")) end}, + {Time = 0.3, Callback = function(self) self:DisableGrip() end}, + {Time = 4.467, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["melee_nostock"] = { + Sequences = {"melee_miss_01_nostock", "melee_miss_02_nostock", "melee_miss_03_nostock"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["melee_hit_nostock"] = { + Sequences = {"melee_hit_01_nostock", "melee_hit_02_nostock", "melee_hit_03_nostock"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_romeo870/customization.lua b/lua/weapons/mg_romeo870/customization.lua new file mode 100644 index 0000000..d7ce8b3 --- /dev/null +++ b/lua/weapons/mg_romeo870/customization.lua @@ -0,0 +1,66 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_romeo870_sup_plr_lfe") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Shotgun2.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Reflection_ARSUP.Inside"), + Reflection = Sound("Reflection_ShotgunSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doDBStats() + self.Primary.TrailingSound = Sound("wpn_shotgun_fire_lyr") + self.ParticleEffects.MuzzleFlash = "AC_muzzle_shotgun_db" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sh_romeo870_perk_soh", "att_perk_hip", "attachment_vm_sh_romeo870_perk_slamfire"}, + + {"attachment_vm_sh_romeo870_barrel", "attachment_vm_sh_romeo870_heatguard_mp", "attachment_vm_sh_romeo870_barrel_long", + "attachment_vm_sh_romeo870_barrel_sawn"}, + + {"attachment_vm_sh_romeo870_pump", "attachment_vm_sh_romeo870_pumpalt", "attachment_vm_sh_romeo870_pump_wood", "attachment_vm_sh_romeo870_pump_custom"}, + + {"att_magazine", "attachment_vm_sh_romeo870_mag"}, + + {"att_ammo_default", "att_ammo_db", "att_ammo_flechette", + "att_ammo_he", "att_ammo_slugs"}, + + {"att_stock", "attachment_vm_sh_romeo870_stock_wood", + "attachment_vm_sh_romeo870_stock_pistolgrip", "att_vm_romeo870_stock_heavy01", + "att_vm_romeo870_stock_heavy02", "att_vm_romeo870_stock_light01", "att_vm_romeo870_stock_medium01"}, + + {"att_muzzle", "att_vm_compensator_shgn01", "att_vm_compensator_shgn02", "att_vm_flashhider01_shgn", "att_vm_muzzlebrake_shgn01", + "att_vm_breacher02_shgn", "attachment_vm_sh_romeo870_shtgnsilencer", "attachment_vm_sh_romeo870_silencer02", + "attachment_vm_sh_romeo870_silencer03"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "attachment_vm_sh_romeo870_no_rail", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_4x_east01_tall", "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"attachment_vm_sh_romeo870_receiver"}, + + {"att_laser", "attachment_vm_sh_romeo870_laser01", "attachment_vm_sh_romeo870_laser02", "attachment_vm_sh_romeo870_laser03"}, + + {"att_grip", "attachment_vm_sh_romeo870_angledgrip01", "attachment_vm_sh_romeo870_angledgrip02", "attachment_vm_sh_romeo870_stubbygrip01", + "attachment_vm_sh_romeo870_stubbygrip02", "attachment_vm_sh_romeo870_vertgrip01", "attachment_vm_sh_romeo870_vertgrip02", + "attachment_vm_sh_romeo870_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) \ No newline at end of file diff --git a/lua/weapons/mg_romeo870/shared.lua b/lua/weapons/mg_romeo870/shared.lua new file mode 100644 index 0000000..d0014ce --- /dev/null +++ b/lua/weapons/mg_romeo870/shared.lua @@ -0,0 +1,181 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") + +SWEP.BulletList = {"j_shell_12ga_01", "j_shell_12ga_02"} + +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_romeo870", "VGUI/entities/mg_romeo870", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sh_romeo870") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_wood_offset"} +SWEP.GripPoseParameters2 = {"grip_stockh_offset"} + +SWEP.PrintName = "Model 680" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Shotguns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_romeo870.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_romeo870.mdl") +--[[SWEP.Trigger = { + PressedSound = Sound(""), + ReleasedSound = Sound(""), + Time = 0.025 +}]] + +SWEP.DisableCantedReload = false +SWEP.Slot = 3 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("weap_romeo870_fire_plr_lfe") +SWEP.Primary.Ammo = "Buckshot" +SWEP.Primary.ClipSize = 8 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 175 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false +SWEP.EmptyReloadRechambers = false + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_shotgun", + ["MuzzleFlash_DB"] = "mw_fas2_muzzleflash_slug", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", + ["Overheating"] = "AC_muzzle_pistol_smoke_barrel", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Shotgun.Outside"), + Reflection = Sound("Reflection_Shotgun.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Pump-Action", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 65, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 0.8, --accuracy while hip + Ads = 0.8, --accuracy while aiming + Increase = 0.085, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 2.5, --the cone size will not go beyond this size + Decrease = 0.24, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 3658 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {8, 6.5}, --random value between the 2 + Horizontal = {-1.75, 2.75}, --random value between the 2 + Shake = 4, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 65947, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 0.56 +} + +SWEP.Bullet = { + Damage = {103, 40}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 20, --in meters, damage scales within this distance + DropOffStartRange = 15, + Range = 40, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 6, --the amount of bullets to fire + PhysicsMultiplier = 1.7, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.86, --how much damaged is multipled by when leaving a surface. + MaxCount = 13, --how many times the bullet can penetrate. + Thickness = 18, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,100,-90), + Pos = Vector(10,-1,-5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0.03, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(-3, -1, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, -2, 1.5), Angles = Angle(10, -10, 0)} + } + }, + + RecoilMultiplier = 6.75, + KickMultiplier = 1, + AimKickMultiplier = 0.5 +} + +SWEP.Shell = "mwb_shelleject_12g" + +DEFINE_BASECLASS("mg_base") +-- function SWEP:PostDrawViewModel(vm, weapon, ply) +-- BaseClass.PostDrawViewModel(self, vm, weapon, ply) + +-- local magModel = self:GetAttachmentModels("Mag") +-- if (IsValid(magModel)) then +-- self:RemoveBulletsBasedOnClip(magModel, self.BulletList) +-- end +-- end \ No newline at end of file diff --git a/lua/weapons/mg_sbeta/animations.lua b/lua/weapons/mg_sbeta/animations.lua new file mode 100644 index 0000000..8fbd96f --- /dev/null +++ b/lua/weapons/mg_sbeta/animations.lua @@ -0,0 +1,292 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.85, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_raise_01")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_raise_02")) end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.7, + Fps = 30, + Events = { + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_drop_01")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_drop_02")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_raise_first_04")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_raise_first_03")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_raise_first_02")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_raise_first_01")) end}, + } + }, + + ["Reload_Start"] = { + Sequences = {"reload_start"}, + Length = 0.7, + Fps = 30, + MagLength = 0.7, + NextSequence = "Idle", + Events = { + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_reload_start_03")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_reload_start_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_reload_start_01")) end}, + + } + }, + + ["Reload_Loop"] = { + Sequences = {"reload_loop"}, + Length = 0.5, + Fps = 30, + MagLength = 0.35, + NextSequence = "Idle", + Events = { + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_reload_loop_02")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_reload_loop_01")) end}, + } + }, + + ["Reload_End"] = { + Sequences = {"reload_end"}, + Length = 0.55, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_reload_end_01")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_reload_end_02")) end}, + } + }, + + ["Reload_End_Empty"] = { + Sequences = {"reload_end_empty"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.35, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_reload_end_01_empty")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_reload_end_02_empty")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_reload_end_04_empty")) end}, + } + }, + + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Rechamber"] = { + Sequences = {"rechamber"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0.1, + Callback = function(self) + self:DoEjection("shell_eject") + self:DoParticle("Ejection", "shell_eject") + end + }, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_rechamber_02")) end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 35, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sbeta.ads.up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 35, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sbeta.ads.down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 34, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 34, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_inspect_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_inspect_01")) end}, + {Time = 4.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_inspect_04")) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sbeta_inspect_03")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end} + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_sbeta/customization.lua b/lua/weapons/mg_sbeta/customization.lua new file mode 100644 index 0000000..689e116 --- /dev/null +++ b/lua/weapons/mg_sbeta/customization.lua @@ -0,0 +1,786 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.sbeta.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_DMR_Sup.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_DMR_Sup.Inside"), + Reflection = Sound("Reflection_ShotgunSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sn_sbeta_perk_soh", "att_perk_fmj", + "attachment_vm_sn_sbeta_perk_bolt", "att_perk_ricochet"}, + + {"att_stock", "attachment_vm_sn_sbeta_rack", + "attachment_vm_sn_sbeta_stock_light", "attachment_vm_sn_sbeta_stock_stable", "attachment_vm_sn_sbeta_stock_tactical"}, + + {"attachment_vm_sn_sbeta_barrel", "attachment_vm_sn_sbeta_barshort", + "attachment_vm_sn_sbeta_barmid", "attachment_vm_sn_sbeta_barlong"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", + "att_vm_hybrid_west01", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04", + "att_vm_scope_mike14", "att_vm_scope_vz", "attachment_vm_sn_sbeta_scope"}, + + {"att_laser", "attachment_vm_sn_sbeta_laser01", "attachment_vm_sn_sbeta_laser02", + "attachment_vm_sn_sbeta_laser03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + + +-- SWEP.Customization = { +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload_Start.Fps = self.Animations.Reload_Start.Fps * 1.25 +-- self.Animations.Reload_Loop.Fps = self.Animations.Reload_Loop.Fps * 1.25 +-- self.Animations.Reload_End.Fps = self.Animations.Reload_End.Fps * 1.25 +-- self.Animations.Reload_End_Empty.Fps = self.Animations.Reload_End_Empty.Fps * 1.25 +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sh_sbeta_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sbeta_barlong", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sbeta_barmid", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sbeta_barshort", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 5.5, 0), Angle()}, +-- [3] = {Vector(0, 2.9, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.75) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) --i know you tell me not to fuck with this but the dot being actually centered on the glass demands it xoxo +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.85) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.017, 0, -0.775) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.95) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.9) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.95) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.85) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.15,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 0, -1.11) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -1.215) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -1.11) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0015, 0, -1.045) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.615) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.75, 2.5, -0.15) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0, -0.6) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_sbeta_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01,3.5,-0.99) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0035,3.5,-0.92) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0, -0.75) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,1.5,-1.9) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 0, -1.02) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(0, 0, 0) +-- self.HybridAimPos = Vector(-0.015, 0, -1) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 0, -1.02) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(0, 0, 0) +-- self.HybridAimPos = Vector(-0.015, 0, -1) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0, -0.68) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2.5, 0.15) +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 5, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 6, +-- { +-- Key = "no_attachment", +-- }, +-- { +-- Key = "attachment_vm_sn_sbeta_rack", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sbeta_stock_light", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sbeta_stock_stable", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sbeta_stock_tactical", +-- Stats = function(self) +-- end +-- }, +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_sbeta/shared.lua b/lua/weapons/mg_sbeta/shared.lua new file mode 100644 index 0000000..65b2bc7 --- /dev/null +++ b/lua/weapons/mg_sbeta/shared.lua @@ -0,0 +1,167 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_sbeta", "VGUI/entities/mg_sbeta", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sn_sbeta") +end + +SWEP.Base = "mg_base" + +SWEP.PrintName = "MK2 Carbine" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Marksman Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_sbeta.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_sbeta.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.sbeta.fire.first"), + ReleasedSound = Sound(""), + Time = 0.03 +} + +SWEP.Slot = 3 +SWEP.HoldType = "BoltAction" + +SWEP.Primary.Sound = Sound("mw19.sbeta.fire") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 6 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 300 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false +SWEP.Projectile = { + Class = "mg_sniper_bullet", --bullet entity class + Speed = 16000, + Gravity = 10, + Penetrate = true +} + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_dmr", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Western.Outside"), + Reflection = Sound("Reflection_Shotgun.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Lever-Action", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 1, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.086, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.025, --multiply the increase value by this amount while aiming + Max = 2.5, --the cone size will not go beyond this size + Decrease = 1, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6985 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {4, 6.5}, --random value between the 2 + Horizontal = {-1.75, 2.75}, --random value between the 2 + Shake = 3, --camera shake + AdsMultiplier = 0.05, --multiply the values by this amount while aiming + Seed = 3584, --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {92, 50}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 100, --in meters, damage scales within this distance + DropOffStartRange = 15, + Range = 300, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1.25, --damage is multiplied by this amount when pushing objects + Penetration = { + DamageMultiplier = 0.85, --how much damaged is multipled by when leaving a surface. + MaxCount = 4, --how many times the bullet can penetrate. + Thickness = 15, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,100,-90), + Pos = Vector(8.5,-1.5,-5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1.75, + KickMultiplier = 1.3, + AimKickMultiplier = 0.45 +} + +SWEP.Shell = "mwb_shelleject_45" \ No newline at end of file diff --git a/lua/weapons/mg_scharlie/animations.lua b/lua/weapons/mg_scharlie/animations.lua new file mode 100644 index 0000000..a06cd19 --- /dev/null +++ b/lua/weapons/mg_scharlie/animations.lua @@ -0,0 +1,467 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_raise")) end}, + {Time = 0.25, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.75, + Fps = 30, + Events = { + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_down")) end} + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_raise_first_01")) end}, + {Time = 0.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_raise_first_02")) end}, + {Time = 0.96, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_raise_first_03")) end}, + {Time = 1.04, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.367, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_02")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_03")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_035")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_04")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1.8, Callback = function(self) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.5, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_03")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_035")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_04")) end}, + {Time = 1.33, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_DMR"] = { + Sequences = {"Reload_DMR"}, + Length = 2.367, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_02")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_03")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_035")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_04")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1.8, Callback = function(self) end}, + } + }, + + ["Reload_DMR_Fast"] = { + Sequences = {"reload_fast_dmr"}, + Length = 1.5, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_03")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_035")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_04")) end}, + {Time = 1.33, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmags"}, + Length = 2.3, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_02")) end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_03")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_035")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_04")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1.8, Callback = function(self) end}, + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmags_fast"}, + Length = 1.5, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_03")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_035")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_04")) end}, + {Time = 1.33, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_XmagLrg"] = { + Sequences = {"reload_xmagslrg"}, + Length = 2.3, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_01")) end}, + {Time = 0.63, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.13, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_03")) end}, + {Time = 1.43, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_035")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_04")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + {Time = 1.8, Callback = function(self) end}, + } + }, + + ["Reload_XmagLrg_Fast"] = { + Sequences = {"reload_xmagslrg_fast"}, + Length = 1.5, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_02")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) end}, + {Time = 0.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_03")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_035")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_fast_04")) end}, + {Time = 1.33, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.7, + Fps = 30, + MagLength = 1.8, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_01")) end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-10, 0, 40)) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_03")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_035")) end}, + {Time = 2.16, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_04")) end}, + {Time = 2.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_05")) end}, + {Time = 2.43, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.16, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast02")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast_03")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast_035")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast_04")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast_05")) end}, + {Time = 1.66, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_DMR"] = { + Sequences = {"Reload_Empty_DMR"}, + Length = 2.7, + Fps = 30, + MagLength = 1.8, + NextSequence = "Idle", + Events = { + {Time = 0.066, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_01")) end}, + {Time = 0.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-10, 0, 40)) end}, + {Time = 1.46, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_03")) end}, + {Time = 1.76, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_035")) end}, + {Time = 2.16, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_04")) end}, + {Time = 2.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_05")) end}, + {Time = 2.43, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_DMR_Fast"] = { + Sequences = {"reload_empty_fast_dmr"}, + Length = 1.8, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast_01")) end}, + {Time = 0.066, Callback = function(self) self:DisableGrip() end}, + {Time = 0.16, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast02")) end}, + {Time = 0.7, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 40)) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast_03")) end}, + {Time = 1.03, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast_035")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast_04")) end}, + {Time = 1.66, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_reload_empty_fast_05")) end}, + {Time = 1.66, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.fire.last")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_ads_up")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_ads_down")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop" --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.semi.off")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19_kilo433.semi.on")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_inspect_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.36, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_inspect_02")) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_inspect_03")) end}, + {Time = 2.53, Callback = function(self) self:EnableGrip() end}, + {Time = 4.23, Callback = function(self) self:DoSound(Sound("wfoly_plr_ar_scharlie_inspect_04")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end} + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.767, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_scharlie/customization.lua b/lua/weapons/mg_scharlie/customization.lua new file mode 100644 index 0000000..3f73a5c --- /dev/null +++ b/lua/weapons/mg_scharlie/customization.lua @@ -0,0 +1,831 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.scharlie.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_scharlie_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"att_receiver"}, + + {"attachment_vm_ar_scharlie_barrel", "attachment_vm_ar_scharlie_barrel_pdw", "attachment_vm_ar_scharlie_barrel_mid", "attachment_vm_ar_scharlie_barrel_long"}, + + {"attachment_vm_ar_scharlie_mag", "attachment_vm_ar_scharlie_mag_dmr", "attachment_vm_ar_scharlie_mmags", "attachment_vm_ar_scharlie_xmags"}, + + {"attachment_vm_ar_scharlie_stock", "attachment_vm_ar_scharlie_stock_light", "attachment_vm_ar_scharlie_stock_dmr", "att_vm_stock_heavy01", + "att_vm_stock_heavy02", "att_vm_stock_light01", "att_vm_stock_medium01", "att_vm_stock_no"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west02", "att_vm_hybrid_west02_thermal", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_ar_scharlie_laser01", "attachment_vm_ar_scharlie_laser02", "attachment_vm_ar_scharlie_laser03"}, + + {"att_grip", "attachment_vm_ar_scharlie_bipodgrip", "attachment_vm_ar_scharlie_angledgrip01", "attachment_vm_ar_scharlie_angledgrip02", "attachment_vm_ar_scharlie_stubbygrip01", + "attachment_vm_ar_scharlie_stubbygrip02", "attachment_vm_ar_scharlie_vertgrip01", "attachment_vm_ar_scharlie_vertgrip02", + "attachment_vm_ar_scharlie_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_scharlie_barrel", +-- }, +-- { +-- Key = "attachment_vm_ar_scharlie_barrel_long", +-- Bodygroups = { +-- ["tag_frontsight"] = 2 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_scharlie_barrel_mid", +-- Bodygroups = { +-- ["tag_frontsight"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_scharlie_barrel_pdw", +-- Bodygroups = { +-- ["tag_frontsight"] = 6 +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3, 0), Angle()}, +-- [3] = {Vector(0, 3, 0), Angle()}, +-- [4] = {Vector(0, -4, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.43) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, -2, 0.37) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.08) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.015, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.015, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.23) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.23) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.115, 0, 0.04) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.065) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_backsight"] = 1, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.00, 0, 0.043) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_backsight"] = 2, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.107) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_backsight"] = 2, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.53) +-- self.HybridAimAngles = Angle(-0.45, -1, -45) +-- self.HybridAimPos = Vector(-1.9, 0, 1.05) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_backsight"] = 2, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.55) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_backsight"] = 2, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0, 0.16) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_backsight"] = 2, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.23) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_backsight"] = 2, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.4) +-- self.HybridAimAngles = Angle(-0.55, 0, 0) +-- self.HybridAimPos = Vector(0,0,-0.85) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_backsight"] = 2, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.016, 0, 0.135) +-- self.HybridAimAngles = Angle(0, 0, 0) +-- self.HybridAimPos = Vector(0, 0, 0.15) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_backsight"] = 2, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.016, 0, 0.135) +-- self.HybridAimAngles = Angle(0, 0, 0) +-- self.HybridAimPos = Vector(0, 0, 0.15) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_backsight"] = 2, +-- ["tag_frontsight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 0, 0.465) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(-0.15, -1, -45) +-- self.HybridAimPos = Vector(-1.65, 0, 1.35) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0.5, 0), Angle()}, +-- [3] = {Vector(0, -0.1, 0), Angle()}, +-- [4] = {Vector(0, -6.75, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_ar_scharlie_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_scharlie_stock_dmr", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_scharlie_stock_light", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Stats = function(self) +-- local bHasLaser = self:HasAttachment("attachment_vm_laser01") +-- || self:HasAttachment("attachment_vm_laser02") +-- || self:HasAttachment("attachment_vm_laser03") + +-- self:SetGripPoseParameter(bHasLaser && "grip_vert_offset" || "grip_vert_pro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Stats = function(self) +-- local bHasLaser = self:HasAttachment("attachment_vm_laser01") +-- || self:HasAttachment("attachment_vm_laser02") +-- || self:HasAttachment("attachment_vm_laser03") + +-- self:SetGripPoseParameter(bHasLaser && "grip_vert_offset" || "grip_vert_pro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_scharlie_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_scharlie_mmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_scharlie_xmags", +-- Stats = function(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_scharlie/shared.lua b/lua/weapons/mg_scharlie/shared.lua new file mode 100644 index 0000000..ee2c3a2 --- /dev/null +++ b/lua/weapons/mg_scharlie/shared.lua @@ -0,0 +1,170 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("mw_fas2_muzzleflash_suppressed") +PrecacheParticleSystem("mw_ins2_shell_eject") +PrecacheParticleSystem("mw_fas2_muzzleflash_ar_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_scharlie", "VGUI/entities/mg_scharlie", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_scharlie") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vert_pro_offset", "grip_vert_large_offset", "grenade_launcher_offset"} + +SWEP.PrintName = "FN SCAR 17" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_scharlie.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_scharlie.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("mw19.scharlie.fire") + +SWEP.Trigger = { + PressedSound = Sound("mw19.scharlie.fire.first"), + ReleasedSound = Sound("mw19.scharlie.disconnector"), + Time = 0.025 +} + +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 20 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 571.4285714285714 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_LMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "mw_fas2_muzzleflash_ar_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.45, --accuracy while hip + Ads = 0.06, --accuracy while aiming + Increase = 0.075, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.85, --the cone size will not go beyond this size + Decrease = 0.85, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 587843 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {2, 1.6}, --random value between the 2 + Horizontal = {-2.5, 2.75}, --random value between the 2 + Shake = 1.25, --camera shake + AdsMultiplier = 0.23, --multiply the values by this amount while aiming + Seed = 984135 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {36, 17}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 22, --in meters, damage will start dropping off after this range + EffectiveRange = 49, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.9, --how much damaged is multipled by when leaving a surface. + MaxCount = 4, --how many times the bullet can penetrate. + Thickness = 21, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 95, -90), + Pos = Vector(2,-5,-3) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(3, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.8, + KickMultiplier = 0.6, + AimKickMultiplier = 1.3, +} + +SWEP.Shell = "mwb_shelleject_7625x" + diff --git a/lua/weapons/mg_secho/animations.lua b/lua/weapons/mg_secho/animations.lua new file mode 100644 index 0000000..c31091d --- /dev/null +++ b/lua/weapons/mg_secho/animations.lua @@ -0,0 +1,516 @@ +AddCSLuaFile() + + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.55, + Fps = 39, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.secho.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.45, + Fps = 39, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.secho.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_raise_first_02")) end}, + {Time = 0.633, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_raise_first_01")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_raise_first_03")) end}, + } + }, + + ["Equip_Grips"] = { + Sequences = {"draw_first_grips"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_raise_first_02")) end}, + {Time = 0.633, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_raise_first_01")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_raise_first_03")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.26, + Fps = 30, + MagLength = 1.26, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_01")) end}, + {Time = 1.833, Callback = function(self) self:EnableGrip() end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_05")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_03")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.33, + Fps = 30, + MagLength = 0.86, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_01")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_02")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_03")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_04")) end}, + {Time = 0.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_05")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.933, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Smag"] = { + Sequences = {"reload_smag"}, + Length = 2.26, + Fps = 30, + MagLength = 1.26, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_smag_05")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_smag_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.7, Callback = function(self) self:EnableGrip() end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_smag_04")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_smag_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_smag_01")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Smag_Fast"] = { + Sequences = {"reload_fast_smag"}, + Length = 1.2, + Fps = 30, + MagLength = 0.73, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_smag_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_smag_05")) end}, + {Time = 0.833, Callback = function(self) self:EnableGrip() end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_smag_02")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_smag_06")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_smag_04")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_smag_03")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Drum"] = { + Sequences = {"reload_drum"}, + Length = 2.56, + Fps = 30, + MagLength = 1.9, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.1, Callback = function(self) end}, + {Time = 2.1, Callback = function(self) self:EnableGrip() end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_drum_06")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_drum_02")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_drum_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_drum_01")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_drum_04")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_drum_05")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Drum_Fast"] = { + Sequences = {"reload_fast_drum"}, + Length = 1.5, + Fps = 30, + MagLength = 1.03, + NextSequence = "Idle", + Events = { + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_drum_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.133, Callback = function(self) self:EnableGrip() end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_drum_02")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_drum_03")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_drum_04")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_fast_drum_05")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.26, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 1.2, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.867, Callback = function(self) self:EnableGrip() end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_05")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_01")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_02")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_03")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_04")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_06")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_07")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 0.86, + NextSequence = "Idle", + Events = { + {Time = 1.2, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.267, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_01")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_04")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_05")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_06")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_07")) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_02")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_03")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Smag"] = { + Sequences = {"reload_empty_smag"}, + Length = 2.13, + Fps = 30, + MagLength = 1.33, + NextSequence = "Idle", + Events = { + {Time = 1.2, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_smag_01")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_smag_06")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_smag_05")) end}, + {Time = 1.733, Callback = function(self) self:EnableGrip() end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_smag_03")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_smag_02")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_smag_07")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_smag_04")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Smag_Fast"] = { + Sequences = {"reload_empty_smag_fast"}, + Length = 1.53, + Fps = 30, + MagLength = 0.76, + NextSequence = "Idle", + Events = { + {Time = 1.2, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.167, Callback = function(self) self:EnableGrip() end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_smag_02")) end}, + {Time = 0.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_smag_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_smag_01")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_smag_04")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_smag_05")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Drum"] = { + Sequences = {"reload_empty_drum"}, + Length = 2.53, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_drum_05")) end}, + {Time = 2.167, Callback = function(self) self:EnableGrip() end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_drum_03")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_drum_02")) end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_drum_06")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_drum_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_drum_01")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Drum_Fast"] = { + Sequences = {"reload_empty_drum_fast"}, + Length = 1.76, + Fps = 30, + MagLength = 1, + NextSequence = "Idle", + Events = { + {Time = 1.2, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_drum_06")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_drum_04")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_drum_05")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_drum_02")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_drum_03")) end}, + {Time = 1.433, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_drum_01")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_reload_empty_fast_drum_07")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.225, + Fps = 40, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.secho.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.225, + Fps = 40, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.secho.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 39, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.secho.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.secho.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_inspect_01")) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_inspect_02")) end}, + {Time = 3.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_inspect_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 4.367, Callback = function(self) self:EnableGrip() end}, + + } + }, + + ["Inspect_Smag"] = { + Sequences = {"inspect_smag"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_inspect_smag_02")) end}, + {Time = 3.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_inspect_smag_03")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_inspect_smag_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 4.333, Callback = function(self) self:EnableGrip() end}, + + } + }, + + ["Inspect_Drum"] = { + Sequences = {"inspect_drum"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_inspect_drum_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 4.7, Callback = function(self) self:EnableGrip() end}, + {Time = 4.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_inspect_drum_03")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_secho_inspect_drum_01")) end}, + + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Small")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Small")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_secho/customization.lua b/lua/weapons/mg_secho/customization.lua new file mode 100644 index 0000000..9e4936a --- /dev/null +++ b/lua/weapons/mg_secho/customization.lua @@ -0,0 +1,932 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.secho.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sm_secho_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_rof"}, + + {"attachment_vm_sm_secho_stock", "attachment_vm_sm_secho_stockh", + "attachment_vm_sm_secho_stockno", "attachment_vm_sm_secho_stockskel"}, + + {"attachment_vm_sm_secho_mag", "attachment_vm_sm_secho_smags", "attachment_vm_sm_secho_drummags", "attachment_vm_sm_secho_xmags"}, + + {"attachment_vm_sm_secho_barrel", "attachment_vm_sm_secho_barlong", + "attachment_vm_sm_secho_barshort", "attachment_vm_sm_secho_barsillong", + "attachment_vm_sm_secho_barsilshort", "attachment_vm_sm_secho_barxlong"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04"}, + + {"att_laser", "attachment_vm_sm_secho_laser01", "attachment_vm_sm_secho_laser02", + "attachment_vm_sm_secho_laser03"}, + + {"att_grip", "attachment_vm_sm_secho_bipodgrip", "attachment_vm_sm_secho_angledgrip01", "attachment_vm_sm_secho_angledgrip02", "attachment_vm_sm_secho_stubbygrip01", + "attachment_vm_sm_secho_stubbygrip02", "attachment_vm_sm_secho_vertgrip01", "attachment_vm_sm_secho_vertgrip02", + "attachment_vm_sm_secho_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sm_secho_barrel", +-- }, +-- { +-- Key = "attachment_vm_sm_secho_barlong", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- -- ExcludedAttachments = { +-- -- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18} +-- -- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_secho_barshort", +-- Bodygroups = { +-- ["tag_tip"] = 6 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barshort_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_secho_barsillong", +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18} +-- }, +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_secho_barsilshort", +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18} +-- }, +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barshort_offset") +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_secho_barxlong", +-- Bodygroups = { +-- ["tag_tip"] = 4 +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.45) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.1, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.65) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.65) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.1, 0.017, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 3, -0.78) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.007, 3, -0.88) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.006, 3, -0.78) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 3, -0.71) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 3, -0.28) +-- self.HybridAimAngles = Angle(-0.02, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 5, 0.2) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 3, -0.27) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.008, 5, -0.67) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 5, -0.6) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 3, -0.42) +-- self.HybridAimAngles = Angle(-0.02, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-1.6) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0075, 3, -0.35) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0.015, -45) +-- self.HybridAimPos = Vector(-1.55, 5, 0.45) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.15, 0), Angle()}, +-- [3] = {Vector(0, -1.15, 0), Angle()}, +-- [4] = {Vector(0, 2.5, 0), Angle()}, +-- [6] = {Vector(0, 7.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_Drum = self.Animations.Reload_Drum_Fast +-- self.Animations.Reload_Empty_Drum = self.Animations.Reload_Empty_Drum_Fast +-- self.Animations.Reload_Smag = self.Animations.Reload_Smag_Fast +-- self.Animations.Reload_Empty_Smag = self.Animations.Reload_Empty_Smag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sm_secho_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_secho_stockh", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_secho_stockno", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_secho_stockskel", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_sm_secho_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_secho_smags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_secho_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_secho_drummags", +-- Stats = function(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_secho/shared.lua b/lua/weapons/mg_secho/shared.lua new file mode 100644 index 0000000..caa3f28 --- /dev/null +++ b/lua/weapons/mg_secho/shared.lua @@ -0,0 +1,181 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +-- SWEP.BulletList = {[0] = "j_bullet1", [1] = "j_bullet2", [2] = "j_bullet3", [3] = "j_bullet4", [4] = "j_bullet5", [5] = "j_bullet6", [6] = "j_bullet7", +-- [7] = "j_bullet8", [8] = "j_bullet9", [9] = "j_bullet10", [10] = "j_bullet11", [11] = "j_bullet12"} + +if CLIENT then + killicon.Add( "mg_secho", "VGUI/entities/mg_secho", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sm_secho") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vertpro_offset", "grip_barshort_offset"} + +SWEP.PrintName = "CX-9" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Submachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_secho.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_secho.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "TinyGun" +SWEP.Trigger = { + PressedSound = Sound("weap_secho_fire_first_plr"), + ReleasedSound = Sound("weap_secho_disconnector_plr"), + Time = 0.015 +} + +SWEP.Primary.Sound = Sound("mw19.secho.fire") +SWEP.Primary.Ammo = "SMG1" +SWEP.Primary.ClipSize = 20 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 1300 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG2.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + self.Primary.BurstRounds = 1 --fix for 12 rounder + self.Primary.RPM = 600 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.17, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.032, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.09, --multiply the increase value by this amount while aiming + Max = 1.15, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6215 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.7, 1}, --random value between the 2 + Horizontal = {-1.15, 1.35}, --random value between the 2 + Shake = 1.3, --camera shake + AdsMultiplier = 0.5, --multiply the values by this amount while aiming + Seed = 67676767 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {24, 10}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 34, --in meters, damage scales within this distance + DropOffStartRange = 10, --in meters, damage will start dropping off after this range + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.7, --how much damaged is multipled by when leaving a surface. + MaxCount = 2, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.FreezeInspectDelta = 0.25 + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,105,-90), + Pos = Vector(2,-5,-2) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(5, 0, 3), Angles = Angle(40, 0, 0)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-15, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(0, 0, 1.5), Angles = Angle(10, 0, 15)} + } + }, + + RecoilMultiplier = 0.3, + KickMultiplier = 0.3, + AimKickMultiplier = 1.5 +} + +SWEP.Shell = "mwb_shelleject_9mm" + + +DEFINE_BASECLASS("mg_base") + +-- function SWEP:PostDrawViewModel(vm, weapon, ply) +-- BaseClass.PostDrawViewModel(self, vm, weapon, ply) +-- self:RemoveBulletsBasedOnClip(self:GetAttachmentModels("Magazine"), self.BulletList) +-- end \ No newline at end of file diff --git a/lua/weapons/mg_sierra552/animations.lua b/lua/weapons/mg_sierra552/animations.lua new file mode 100644 index 0000000..1da8117 --- /dev/null +++ b/lua/weapons/mg_sierra552/animations.lua @@ -0,0 +1,485 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sierra552.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.56, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sierra552.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.15, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_raise_first_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_raise_first_02")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_raise_first_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.7, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.3, + Fps = 30, + MagLength = 1.45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_01")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_01")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_05")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.1, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_fast_01")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_fast_03")) end}, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-10, 0, 40)) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_fast_02")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_fast_05")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_fast_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.467, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_mmag"] = { + Sequences = {"reload_mmag"}, + Length = 2.3, + Fps = 30, + MagLength = 1.45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.1, Callback = function(self) self:EnableGrip() end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra559_reload_mmag_05")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra559_reload_mmag_04")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra559_reload_mmag_01")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra559_reload_mmag_02")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra559_reload_mmag_03")) end}, + } + }, + + ["reload_mmag_fast"] = { + Sequences = {"reload_mmag_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra553_reload_mmag_fast_04")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra553_reload_mmag_fast_02")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra553_reload_mmag_fast_03")) end}, + {Time = 1.467, Callback = function(self) self:EnableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-10, 0, 40)) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra553_reload_mmag_fast_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.3, + Fps = 30, + MagLength = 1.45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra555_reload_xmag_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra555_reload_xmag_03")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra555_reload_xmag_05")) end}, + {Time = 2.1, Callback = function(self) self:EnableGrip() end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra555_reload_xmag_06")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra555_reload_xmag_02")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra555_reload_xmag_04")) end}, + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra557_reload_xmag_fast_05")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra557_reload_xmag_fast_04")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra557_reload_xmag_fast_01")) end}, + {Time = 1.3, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-10, 0, 40)) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra557_reload_xmag_fast_03")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra557_reload_xmag_fast_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.467, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.75, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_empty_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.6, Callback = function(self) self:EnableGrip() end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 25)) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_empty_07")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_empty_06")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_empty_05")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_empty_03")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_empty_02")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_empty_04")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.1, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 25)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.833, Callback = function(self) self:EnableGrip() end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_fast_empty_04")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_fast_empty_01")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_fast_empty_03")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_fast_empty_02")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_fast_empty_05")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_reload_fast_empty_06")) end}, + } + }, + + ["reload_empty_mmag"] = { + Sequences = {"reload_empty_mmag"}, + Length = 2.75, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 25)) end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra560_reload_mmag_empty_02")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra560_reload_mmag_empty_03")) end}, + {Time = 2.5, Callback = function(self) self:EnableGrip() end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra560_reload_mmag_empty_04")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra560_reload_mmag_empty_05")) end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra560_reload_mmag_empty_06")) end}, + {Time = 2.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra560_reload_mmag_empty_07")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra560_reload_mmag_empty_01")) end}, + } + }, + + ["reload_empty_mmag_fast"] = { + Sequences = {"reload_empty_mmag_fast"}, + Length = 2.1, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 25)) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra554_reload_mmag_fast_empty_05")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra554_reload_mmag_fast_empty_06")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra554_reload_mmag_fast_empty_01")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra554_reload_mmag_fast_empty_03")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra554_reload_mmag_fast_empty_02")) end}, + {Time = 1.75, Callback = function(self) self:EnableGrip() end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra554_reload_mmag_fast_empty_04")) end}, + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 2.75, + Fps = 30, + MagLength = 1.6, + NextSequence = "Idle", + Events = { + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra556_reload_xmag_empty_02")) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 25)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.55, Callback = function(self) self:EnableGrip() end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra556_reload_xmag_empty_04")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra556_reload_xmag_empty_05")) end}, + {Time = 2.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra556_reload_xmag_empty_06")) end}, + {Time = 2.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra556_reload_xmag_empty_07")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra556_reload_xmag_empty_01")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra556_reload_xmag_empty_03")) end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 2.1, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1.5, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-5, 0, 25)) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra558_reload_xmag_fast_empty_06")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra558_reload_xmag_fast_empty_04")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra558_reload_xmag_fast_empty_05")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra558_reload_xmag_fast_empty_02")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra558_reload_xmag_fast_empty_03")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra558_reload_xmag_fast_empty_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sierra552.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sierra552.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sierra552.fire.switch.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sierra552.fire.switch.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 2.5, Callback = function(self) self:EnableGrip() end}, + {Time = 4.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_inspect_05")) end}, + {Time = 3.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_inspect_04")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_inspect_01")) end}, + {Time = 2.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_inspect_03")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_sierra552_inspect_02")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end} + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.7, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_sierra552/customization.lua b/lua/weapons/mg_sierra552/customization.lua new file mode 100644 index 0000000..a12f94a --- /dev/null +++ b/lua/weapons/mg_sierra552/customization.lua @@ -0,0 +1,1123 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.sierra552.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_sierra552_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"att_receiver"}, + + {"attachment_vm_ar_sierra552_barrel", "attachment_vm_ar_sierra552_barshort","attachment_vm_ar_sierra552_barlight", + "attachment_vm_ar_sierra552_barlong", "attachment_vm_ar_sierra552_barh", "attachment_vm_ar_sierra552_barxlong"}, + + {"attachment_vm_ar_sierra552_stock", "attachment_vm_ar_sierra552_stockh", + "attachment_vm_ar_sierra552_stockl", "attachment_vm_ar_sierra552_stockno"}, + + {"attachment_vm_ar_sierra552_mag", "attachment_vm_ar_sierra552_xmagslrg", "attachment_vm_ar_sierra552_xmags"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_ar_sierra552_laser01", "attachment_vm_ar_sierra552_laser02", + "attachment_vm_ar_sierra552_laser03"}, + + {"att_grip", "attachment_vm_ar_sierra552_bipodgrip", "attachment_vm_ar_sierra552_angledgrip01", "attachment_vm_ar_sierra552_angledgrip02", "attachment_vm_ar_sierra552_stubbygrip01", + "attachment_vm_ar_sierra552_stubbygrip02", "attachment_vm_ar_sierra552_vertgrip01", "attachment_vm_ar_sierra552_vertgrip02", + "attachment_vm_ar_sierra552_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_sierra552_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_sierra552_barlight", +-- Bodygroups = { +-- ["tag_tip"] = 4, +-- ["tag_sight_barrel"] = 6, +-- ["tag_laser"] = 4, +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barlong_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_sierra552_barlong", +-- Bodygroups = { +-- ["tag_tip"] = 6, +-- ["tag_sight_barrel"] = 10, +-- ["tag_laser"] = 2, +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barlong_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_sierra552_barxlong", +-- Bodygroups = { +-- ["tag_tip"] = 8, +-- ["tag_sight_barrel"] = 10, +-- ["tag_laser"] = 6, +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barxlong_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_sierra552_barh", +-- Bodygroups = { +-- ["tag_tip"] = 10, +-- ["tag_sight_barrel"] = 2, +-- ["tag_laser"] = 0, +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barhvy_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_sierra552_barshort", +-- Bodygroups = { +-- ["tag_tip"] = 9, +-- ["tag_sight_barrel"] = 8, +-- ["tag_laser"] = 8, +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barshort_offset") +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(-0.1, 5.3, 0), Angle()}, +-- [3] = {Vector(0, 0.5, 0), Angle()}, +-- [4] = {Vector(0, 2, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(-0.1, 5.3, 0), Angle()}, +-- [3] = {Vector(0, 0.5, 0), Angle()}, +-- [4] = {Vector(0, 2, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(-0.1, 5.3, 0), Angle()}, +-- [3] = {Vector(0, 0.5, 0), Angle()}, +-- [4] = {Vector(0, 2, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -2, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.1, -0.03, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.1, -0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.02, 0, -0.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05, -0.03, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.75) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.12, -0.03, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.515) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.115, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.8) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.08, -0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.8) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.1, -0.03, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.08, -0.03, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.8) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.095, -0.025, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.1, -0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.115, 1, -0.86) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.065, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.96) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.075, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.85) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.01, 0.065, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.771) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.04, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.345) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.035, 0) +-- self.HybridAimAngles = Angle(-0.14, 0.02, -45) +-- self.HybridAimPos = Vector(-1.8, 0, 0.1) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.326) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.04, 0) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 4, -0.75) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.06, 0.075, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 5, -0.66) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.055, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.48) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.035, 0) +-- self.HybridAimAngles = Angle(-0.1, -0.025, 0) +-- self.HybridAimPos = Vector(0,2,-1.75) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.755) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.13, 0) +-- self.HybridAimAngles = Angle(-0.12, -0.015, 0) +-- self.HybridAimPos = Vector(0, 0, -0.875) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.755) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.13, 0) +-- self.HybridAimAngles = Angle(-0.12, -0.015, 0) +-- self.HybridAimPos = Vector(0, 0, -0.875) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_sight_barrel"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -0.41) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.038, 0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(-0.08, 0.05, -45) +-- self.HybridAimPos = Vector(-1.55, 0, 0.35) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 3.35, 0), Angle()}, +-- [3] = {Vector(0, 5, 0), Angle()}, +-- [4] = {Vector(0, 11, 0), Angle()}, +-- [5] = {Vector(0, 0, 0), Angle()}, +-- [6] = {Vector(0, -3.1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- self.Animations.reload_mmag = self.Animations.reload_mmag_fast +-- self.Animations.reload_empty_mmag = self.Animations.reload_empty_mmag_fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_ar_sierra552_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_sierra552_stockh", +-- Bodygroups = { +-- ["tag_stock_hide"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_sierra552_stockl", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_sierra552_stockno", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, -1.5, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, -1.5, 0), Angle()}, +-- [4] = {Vector(0, -1.5, -0.175), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()}, +-- [6] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["tag_guard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_sierra552_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_sierra552_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_sierra552_xmagslrg", +-- Stats = function(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_sierra552/shared.lua b/lua/weapons/mg_sierra552/shared.lua new file mode 100644 index 0000000..7ec36e0 --- /dev/null +++ b/lua/weapons/mg_sierra552/shared.lua @@ -0,0 +1,172 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_sierra552", "VGUI/entities/mg_sierra552", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_sierra552") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_ang_pro_offset", +"grip_vert_offset", "grip_vert_pro_offset", "grip_barhvy_offset", "grip_barlong_offset", +"grip_barshort_offset", "grip_barxlong_offset" } + +SWEP.PrintName = "Grau 5.56" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_sierra552.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_sierra552.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.sierra552.fire.first"), + ReleasedSound = Sound("mw19.sierra552.disconnector"), + Time = 0.025 +} + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("mw19.sierra552.fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 680 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR4.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.53, --accuracy while hip + Ads = 0.035, --accuracy while aiming + Increase = 0.085, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 1.7, --the cone size will not go beyond this size + Decrease = 0.24, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 56487 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 1.5}, --random value between the 2 + Horizontal = {-1.75, 1.75}, --random value between the 2 + Shake = 1.15, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 8778456, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1.25 +} +SWEP.Bullet = { + Damage = {26, 13}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 19, --in meters, damage will start dropping off after this range + EffectiveRange = 45, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.74, --how much damaged is multipled by when leaving a surface. + MaxCount = 4, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 6.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 95, -90), + Pos = Vector(5,-5,-3) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(-0.05, -0.05, 0), + Pos = Vector(-0.012, -2, -0.013) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.3, + KickMultiplier = 0.25, + AimKickMultiplier = 0.75 +} + +SWEP.Shell = "mwb_shelleject_556" + +DEFINE_BASECLASS("mg_base") \ No newline at end of file diff --git a/lua/weapons/mg_sierrax/animations.lua b/lua/weapons/mg_sierrax/animations.lua new file mode 100644 index 0000000..8f1c5ef --- /dev/null +++ b/lua/weapons/mg_sierrax/animations.lua @@ -0,0 +1,244 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.6, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.75, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.35, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise.first")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"Reload"}, + Length = 5.5, + Fps = 30, + MagLength = 3.8, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_fast"] = { + Sequences = {"Reload_fast"}, + Length = 4.1, + Fps = 30, + MagLength = 2.7, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Empty"] = { + Sequences = {"Reload_empty"}, + Length = 6.8, + Fps = 30, + MagLength = 5.2, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_fast"] = { + Sequences = {"Reload_empty_fast"}, + Length = 4.9, + Fps = 30, + MagLength = 3.6, + NextSequence = "Idle", + Events = { + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 20, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.5, --if melee hits + + Damage = 100, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_sierrax/customization.lua b/lua/weapons/mg_sierrax/customization.lua new file mode 100644 index 0000000..ce7f485 --- /dev/null +++ b/lua/weapons/mg_sierrax/customization.lua @@ -0,0 +1,1163 @@ +AddCSLuaFile() +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_sierrax_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doSmgStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4) then + self.Primary.Sound = Sound("mw19.akilo47.smgcal.fire") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Shell = "mwb_shelleject_545" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_lm_sierrax_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_lm_sierrax_stock", "attachment_vm_lm_sierrax_stockh", + "attachment_vm_lm_sierrax_stockl", "attachment_vm_lm_sierrax_stockno", "attachment_vm_lm_sierrax_stocksaw"}, + + {"attachment_vm_lm_sierrax_mag", "attachment_vm_lm_sierrax_xmags", + "attachment_vm_lm_sierrax_magcalcust1", "attachment_vm_lm_sierrax_magcalcust2"}, + + {"attachment_vm_lm_sierrax_barrel", "attachment_vm_lm_sierrax_barlight", + "attachment_vm_lm_sierrax_barlong", "attachment_vm_lm_sierrax_barhvy"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", 'att_vm_silencer06'}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_lm_sierrax_laser01", "attachment_vm_lm_sierrax_laser02", + "attachment_vm_lm_sierrax_laser03"}, + + {"att_grip", "attachment_vm_lm_sierrax_angledgrip01", "attachment_vm_lm_sierrax_angledgrip02", "attachment_vm_lm_sierrax_stubbygrip01", + "attachment_vm_lm_sierrax_stubbygrip02", "attachment_vm_lm_sierrax_vertgrip01", "attachment_vm_lm_sierrax_vertgrip02", + "attachment_vm_lm_sierrax_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_lm_sierrax_barrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- }, +-- { +-- Key = "attachment_vm_lm_sierrax_custombarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_sierrax_lmgbarrel_grip", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_sierrax_lmgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 0 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_sierrax_smgbarrel", +-- Bodygroups = { +-- ["barrel_handguard"] = 2, +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_smg_pose_offset") +-- end, +-- UsingSmgBarrel = true +-- }, +-- { +-- Key = "attachment_vm_lm_sierrax_smgbarcust", +-- Bodygroups = { +-- ["barrel_handguard"] = 4 +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2,3,4,5,6,7,8} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser", +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.05, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.2, 0.07, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["barrel_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0.25, 2.3, -0.9), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.03, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.08) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.3) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.22) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.29) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.082) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.01, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 3, -1.23) + -- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.126, 2, -1.411) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -1.514) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0084, 2, -1.407) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.0155, 2, -1.345) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.016, 2, -0.917) + -- self.HybridAimAngles = Angle(-0.05, 0, -45) + -- self.HybridAimPos = Vector(-1.8, 2, -0.45) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 2, -0.902) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.009, 4, -1.287) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 4, -1.222) + -- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) + -- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.013, 3, -1.055) + -- self.HybridAimAngles = Angle(0, 0.03, 0) + -- self.HybridAimPos = Vector(0,0,-2.25) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.008, 2, -0.985) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 2, -0.15) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 6.5, 0.15), Angle()}, +-- [2] = {Vector(0, 6.5, 0.15), Angle()}, +-- [3] = {Vector(0, 13, 0.1), Angle()}, +-- [4] = {Vector(0, 13, 0), Angle()}, +-- [5] = {Vector(0, -1.9, 0), Angle()}, +-- [6] = {Vector(0, -0.25, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_lm_sierrax_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_sierrax_lmgstock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_sierrax_smgstock_unfolded", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_sierrax_smgstock", +-- ExcludedAttachments = { +-- ["Magazine"] = {4} +-- }, +-- Bodygroups = { +-- ["stock_adapter"] = 0 +-- }, +-- VElement = { +-- Bone = "tag_stock_attach", +-- Position = Vector(2.5, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- --self:RemoveValue("LaserAimAngles") +-- --self:RemoveValue("LaserAimPos") +-- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 +-- end +-- }, + -- { + -- Key = "attachment_vm_lm_sierrax_stockno", + -- Bodygroups = { + -- ["stock_adapter"] = 1 + -- }, + -- Stats = function(self) + -- --self:RemoveValue("LaserAimAngles") + -- --self:RemoveValue("LaserAimPos") + -- --self.ViewModelOffsets.Aim.Pos.y = self.ViewModelOffsets.Aim.Pos.y + 5 + -- end + -- } + -- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_smg_anggrip_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") + +-- for name, attachments in pairs(self.Customization) do +-- local att = self.Customization[name][self.Customization[name].m_Index] + +-- if (att.UsingSmgBarrel != nil && att.UsingSmgBarrel == true) then +-- self:SetGripPoseParameter("grip_vert_pro_smg_offset") +-- break +-- end +-- end +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["barrel_handguard"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0.1), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [5] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_pro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_lm_sierrax_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_sierrax_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_sierrax_smgmag", +-- Stats = function(self) +-- doSmgStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_lm_sierrax_drum_mag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- -- ["Camo"] = { +-- -- Slot = 9, +-- -- { +-- -- Key = "no_camo", +-- -- }, +-- -- { +-- -- Key = "camo_jermasus", +-- -- Stats = function(self) +-- -- end +-- -- }, +-- -- { +-- -- Key = "camo_digital", +-- -- Stats = function(self) +-- -- end +-- -- } +-- -- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_sierrax/shared.lua b/lua/weapons/mg_sierrax/shared.lua new file mode 100644 index 0000000..e9f7bb4 --- /dev/null +++ b/lua/weapons/mg_sierrax/shared.lua @@ -0,0 +1,181 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_sierrax", "VGUI/entities/mg_sierrax", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_lm_sierrax") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "FiNN LMG" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Lightmachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_sierrax.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_sierrax.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("weap_sierrax_prefire_plr"), + ReleasedSound = Sound(""), + Time = 0.05 +} + +SWEP.Primary.Sound = Sound("weap_sierrax_fire_plr") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 75 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 630 +SWEP.CanChamberRound = false +SWEP.CanDisableAimReload = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_lmg", + ["MuzzleFlash_Suppressed"] = "AC_muzzle_pistol_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_LMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.45, --accuracy while hip + Ads = 0.13, --accuracy while aiming + Increase = 0.03, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.24, --multiply the increase value by this amount while aiming + Max = 1.75, --the cone size will not go beyond this size + Decrease = 0.6, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 666, --just give this a random number + DecreaseEveryShot = 0.1, + MinDecreaseEveryShot = 0.1 +} + +SWEP.Recoil = { + Vertical = {1, 1.5}, --random value between the 2 + Horizontal = {-0.8, 0.8}, --random value between the 2 + Shake = 1.25, --camera shake + AdsMultiplier = 0.6, --multiply the values by this amount while aiming + Seed = 6767, --give this a random number until you like the current recoil pattern + DecreaseEveryShot = 0.05, + MinDecreaseEveryShot = 0.5 +} + +SWEP.Bullet = { + Damage = {26, 20}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 15, --in meters, damage will start dropping off after this range + EffectiveRange = 40, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.8, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 8 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 0, -180), + Pos = Vector(9,-1,-4) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 1, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -4, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(3, 0, -2), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.45, + KickMultiplier = 2, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_556" + +DEFINE_BASECLASS(SWEP.Base) + +function SWEP:PreAttachments() + BaseClass.PreAttachments(self) + + if (self:HasAttachment("attachment_vm_lm_sierrax_stocksaw")) then + for _, anim in pairs(self.Animations) do + anim.Sequences[1] = anim.Sequences[1] .. "_saw" + end + end +end + +function SWEP:CanAim() + if (self:HasAttachment("attachment_vm_lm_sierrax_stocksaw")) then + return false + end + + return BaseClass.CanAim(self) +end \ No newline at end of file diff --git a/lua/weapons/mg_sksierra/animations.lua b/lua/weapons/mg_sksierra/animations.lua new file mode 100644 index 0000000..68cc326 --- /dev/null +++ b/lua/weapons/mg_sksierra/animations.lua @@ -0,0 +1,519 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.85, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_raise")) end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.8, + Fps = 30, + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_drop")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_raise_first_01")) end}, + {Time = 0.867, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DisableGrip2() end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_raise_first_02")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_raise_first_03")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.66, + MagLength = 1.6, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.633, Callback = function(self) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_04")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_01")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_02")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.267, Callback = function(self) self:EnableGrip() end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_035")) end}, + + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.83, + MagLength = 1.23, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.533, Callback = function(self) self:EnableGrip() end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_04")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_035")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_01")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_02")) end}, + + } + }, + + ["Reload_Xmag"] = { + Sequences = {"Reload_Xmag"}, + Length = 2.66, + MagLength = 1.6, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_xmag_035")) end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_xmag_04")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_xmag_01")) end}, + {Time = 2.367, Callback = function(self) self:EnableGrip() end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_xmag_03")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_xmag_02")) end}, + + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"Reload_Xmag_Fast"}, + Length = 1.83, + MagLength = 1.23, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_xmag_035")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.533, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_xmag_01")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_xmag_03")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_xmag_02")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_xmag_04")) end}, + + } + }, + + ["Reload_Smag"] = { + Sequences = {"Reload_Smag"}, + Length = 2.15, + MagLength = 1.6, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.3, Callback = function(self) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_smag_02")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_smag_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_smag_01")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_smag_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.733, Callback = function(self) self:EnableGrip() end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_smag_035")) end}, + + } + }, + + ["Reload_Smag_Fast"] = { + Sequences = {"Reload_Smag_Fast"}, + Length = 1.55, + MagLength = 1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.25, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_smag_035")) end}, + {Time = 1.333, Callback = function(self) self:EnableGrip() end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_smag_02")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_smag_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_smag_01")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_fast_smag_04")) end}, + + } + }, + + ["Reload_Empty"] = { + Sequences = {"Reload_Empty"}, + Length = 2.93, + MagLength = 1.4, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_01")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_02")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_03")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_04")) end}, + {Time = 2.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_06")) end}, + {Time = 1.767, Callback = function(self) self:DisableGrip2() end}, + {Time = 1.667, Callback = function(self) self:EnableGrip() end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_035")) end}, + {Time = 2.5, Callback = function(self) self:EnableGrip2() end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_05")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"Reload_Empty_Fast"}, + Length = 2.2, + MagLength = 1.23, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_01")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_02")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_03")) end}, + {Time = 1.967, Callback = function(self) self:EnableGrip() end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_05")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_06")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_035")) end}, + } + }, + + ["Reload_Empty_Xmag"] = { + Sequences = {"Reload_Empty_Xmag"}, + Length = 2.93, + MagLength = 1.4, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_xmag_035")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.5, Callback = function(self) self:EnableGrip2() end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_xmag_04")) end}, + {Time = 1.767, Callback = function(self) self:DisableGrip2() end}, + {Time = 1.667, Callback = function(self) self:EnableGrip() end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_xmag_05")) end}, + {Time = 2.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_xmag_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_xmag_01")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_xmag_03")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_xmag_02")) end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"Reload_Empty_Xmag_Fast"}, + Length = 2.2, + MagLength = 1.23, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_xmag_06")) end}, + {Time = 2.033, Callback = function(self) self:EnableGrip() end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_xmag_05")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_xmag_04")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_xmag_01")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_xmag_03")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_xmag_02")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_xmag_035")) end}, + } + }, + + ["Reload_Empty_Smag"] = { + Sequences = {"Reload_Empty_Smag"}, + Length = 2.93, + MagLength = 1.4, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.5, Callback = function(self) self:EnableGrip2() end}, + {Time = 1.767, Callback = function(self) self:DisableGrip2() end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_smag_02")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_smag_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_smag_01")) end}, + {Time = 2.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_smag_06")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_smag_04")) end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_smag_05")) end}, + {Time = 1.667, Callback = function(self) self:EnableGrip() end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_smag_035")) end}, + } + }, + + ["Reload_Empty_Smag_Fast"] = { + Sequences = {"Reload_Empty_Smag_Fast"}, + Length = 2.2, + MagLength = 1.23, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.4, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-10, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_smag_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_smag_01")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_smag_04")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_smag_05")) end}, + {Time = 1.967, Callback = function(self) self:EnableGrip() end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_smag_035")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_reload_empty_fast_smag_03")) end}, + } + }, + + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire_last"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sksierra.fire.last")) end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sksierra.ads.up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.sksierra.ads.down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end}, + {Time = 4.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_inspect_04")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_inspect_01")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_inspect_02")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sn_sksierra_inspect_03")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DisableGrip2() end}, + {Time = 0.833, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.767, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02",}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Nostock"] = { + Sequences = {"melee_miss_01_nostock", "melee_miss_02_nostock",}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit_Nostock"] = { + Sequences = {"melee_hit_01_nostock", "melee_hit_02_nostock"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_sksierra/customization.lua b/lua/weapons/mg_sksierra/customization.lua new file mode 100644 index 0000000..d75293a --- /dev/null +++ b/lua/weapons/mg_sksierra/customization.lua @@ -0,0 +1,1020 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.sksierra.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_DMR_Sup.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_DMR_Sup.Inside"), + Reflection = Sound("Reflection_Sniper.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sn_sksierra_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_sn_sksierra_stock", "attachment_vm_sn_sksierra_stockhvy", + "attachment_vm_sn_sksierra_stockhvy2", "attachment_vm_sn_sksierra_stockno"}, + + {"attachment_vm_sn_sksierra_mag", "attachment_vm_sn_sksierra_smag", "attachment_vm_sn_sksierra_xmag"}, + + {"attachment_vm_sn_sksierra_barrel", "attachment_vm_sn_sksierra_barshort", + "attachment_vm_sn_sksierra_barlong", "attachment_vm_sn_sksierra_barhvy"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"attachment_vm_sn_sksierra_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_hybrid_west02", "att_vm_hybrid_west02_thermal", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04", + "att_vm_scope_mike14", "att_vm_scope_vz", "attachment_vm_sn_sksierra_scope"}, + + {"att_laser", "attachment_vm_sn_sksierra_laser01", "attachment_vm_sn_sksierra_laser02", + "attachment_vm_sn_sksierra_laser03"}, + + {"att_grip", "attachment_vm_sn_sksierra_bipodgrip", "attachment_vm_sn_sksierra_angledgrip01", "attachment_vm_sn_sksierra_angledgrip02", "attachment_vm_sn_sksierra_stubbygrip01", + "attachment_vm_sn_sksierra_stubbygrip02", "attachment_vm_sn_sksierra_vertgrip01", "attachment_vm_sn_sksierra_vertgrip02", + "attachment_vm_sn_sksierra_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- weapon.Animations.Reload = weapon.Animations.Reload_Fast +-- weapon.Animations.Reload_Empty = weapon.Animations.Reload_Empty_Fast +-- weapon.Animations.Reload_Xmag = weapon.Animations.Reload_Xmag_Fast +-- weapon.Animations.Reload_Empty_Xmag = weapon.Animations.Reload_Empty_Xmag_Fast +-- weapon.Animations.Reload_Smag = weapon.Animations.Reload_Smag_Fast +-- weapon.Animations.Reload_Empty_Smag = weapon.Animations.Reload_Empty_Smag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sn_sksierra_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sksierra_barlong", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sksierra_barhvy", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sksierra_barshort", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- AttachmentBodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.3, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.35, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.03, 0) --i know you tell me not to fuck with this but the dot being actually centered on the glass demands it xoxo +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.02, 5, -1.275) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 3, -1.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.05,0.05,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 3, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.15,0,0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 4, -1.61) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0, 4, -1.71) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0.03,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 4, -1.61) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0015, 4, -1.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 4, -1.12) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.75, 10.5, -0.6) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 4, -1.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sksierra_scope", +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01,0,-0.75) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_sksierra_alt", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01,6,-1.5) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0035,6,-1.43) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 4, -1.255) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,13,-2.45) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.8 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 4, -1.52) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0, 0.025, 0) +-- self.HybridAimPos = Vector(-0.015, 15, -1.5) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 4, -1.52) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.HybridAimAngles = Angle(-0, 0.025, 0) +-- self.HybridAimPos = Vector(-0.015, 15, -1.5) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.005, 4, -1.185) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0,0,0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 10, -0.35) +-- self.Zoom.FovMultiplier = 0.8 +-- self.Zoom.ViewModelFovMultiplier = 0.85 +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 5, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- AttachmentBodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.5, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- AttachmentBodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.5, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- AttachmentBodygroups = { +-- ["tag_laser"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, 0, 0), Angle()}, +-- [2] = {Vector(0, 2.5, 0), Angle()}, +-- [3] = {Vector(0, 0.35, 0), Angle()}, +-- [4] = {Vector(0, -3.5, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 6, +-- { +-- Key = "attachment_vm_sn_sksierra_stock", +-- }, +-- { +-- Key = "attachment_vm_sn_sksierra_stockhvy", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sksierra_stockhvy2", +-- Stats = function(self) +-- self:SetGripPoseParameter2("grip_stockhvy_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sksierra_stockno", +-- Stats = function(self) +-- self:SetGripPoseParameter2("grip_stockhvy_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sn_sksierra_mag" +-- }, +-- { +-- Key = "attachment_vm_sn_sksierra_smag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sn_sksierra_xmag", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- AttachmentBodygroups = { +-- ["ub_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- } +-- } \ No newline at end of file diff --git a/lua/weapons/mg_sksierra/shared.lua b/lua/weapons/mg_sksierra/shared.lua new file mode 100644 index 0000000..d6169af --- /dev/null +++ b/lua/weapons/mg_sksierra/shared.lua @@ -0,0 +1,164 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_sksierra", "VGUI/entities/mg_sksierra", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sn_sksierra") +end + +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vertpro_offset"} +SWEP.GripPoseParameters2 = {"grip_stockhvy_offset"} + +SWEP.Base = "mg_base" + +SWEP.PrintName = "SKS" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Marksman Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_sksierra.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_sksierra.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.sksierra.fire.first"), + ReleasedSound = Sound("mw19.sksierra.disconnector"), + Time = 0.03 +} + +SWEP.Slot = 3 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("mw19.sksierra.fire") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 20 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 328 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_dmr", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_br1.Outside"), + Reflection = Sound("Reflection_Shotgun.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Semi-Automatic", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 1, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.086, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.025, --multiply the increase value by this amount while aiming + Max = 2.5, --the cone size will not go beyond this size + Decrease = 1, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6985 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {4, 5}, --random value between the 2 + Horizontal = {-1.75, 2.75}, --random value between the 2 + Shake = 3, --camera shake + AdsMultiplier = 0.15, --multiply the values by this amount while aiming + Seed = 3584, --give this a random number until you like the current recoil pattern +} +SWEP.Bullet = { + Damage = {65, 23}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 110, --in meters, damage scales within this distance + DropOffStartRange = 30, + Range = 250, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1.25, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 2, + Penetration = { + DamageMultiplier = 0.85, --how much damaged is multipled by when leaving a surface. + MaxCount = 12, --how many times the bullet can penetrate. + Thickness = 25, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(-3,100,-90), + Pos = Vector(4,-1.5,-7) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1, + KickMultiplier = 1, + AimKickMultiplier = 0.5 +} + +SWEP.Shell = "mwb_shelleject_7625x" \ No newline at end of file diff --git a/lua/weapons/mg_slima/animations.lua b/lua/weapons/mg_slima/animations.lua new file mode 100644 index 0000000..3744f53 --- /dev/null +++ b/lua/weapons/mg_slima/animations.lua @@ -0,0 +1,356 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.85, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.drop")) end}, + {Time = 0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.35, Callback = function(self) self:DoSound(Sound("mw19.akilo47.raise.first")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Reload"] = { + Sequences = {"Reload"}, + Length = 7.5, + Fps = 30, + MagLength = 5.7, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_fast"] = { + Sequences = {"Reload_fast"}, + Length = 5.5, + Fps = 30, + MagLength = 4, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_xmag"] = { + Sequences = {"Reload_xmag"}, + Length = 7.8, + Fps = 30, + MagLength = 6, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_fast_xmag"] = { + Sequences = {"Reload_fast_xmag"}, + Length = 5.8, + Fps = 30, + MagLength = 4.3, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_smag"] = { + Sequences = {"Reload_smag"}, + Length = 6, + Fps = 30, + MagLength = 4.5, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_fast_smag"] = { + Sequences = {"Reload_fast_smag"}, + Length = 4.7, + Fps = 30, + MagLength = 3.5, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Empty"] = { + Sequences = {"Reload_empty"}, + Length = 7.8, + Fps = 30, + MagLength = 6, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 5.8, + Fps = 30, + MagLength = 4.3, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_fast_xmag"] = { + Sequences = {"reload_empty_fast_xmag"}, + Length = 6.2, + Fps = 30, + MagLength = 4.7, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Empty_xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 8.4, + Fps = 30, + MagLength = 6.5, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_empty_fast_smag"] = { + Sequences = {"Reload_empty_fast_smag"}, + Length = 4.8, + Fps = 30, + MagLength = 3.5, + NextSequence = "Idle", + Events = { + } + }, + + ["Reload_Empty_smag"] = { + Sequences = {"reload_empty_smag"}, + Length = 6.5, + Fps = 30, + MagLength = 5.1, + NextSequence = "Idle", + Events = { + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Inspect_xmag"] = { + Sequences = {"Inspect_xmag"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Inspect_smag"] = { + Sequences = {"Inspect_smag"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.01")) end}, + {Time = 0.13, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.02")) end}, + {Time = 2.36, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.03")) end}, + {Time = 3.6, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.04")) end}, + {Time = 4.26, Callback = function(self) self:DoSound(Sound("mw19.akilo47.inspect.05")) end}, + {Time = 4.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.5, --if melee hits + + Damage = 100, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + } +} \ No newline at end of file diff --git a/lua/weapons/mg_slima/customization.lua b/lua/weapons/mg_slima/customization.lua new file mode 100644 index 0000000..608c730 --- /dev/null +++ b/lua/weapons/mg_slima/customization.lua @@ -0,0 +1,84 @@ +AddCSLuaFile() +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_slima_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doSmgStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4) then + self.Primary.Sound = Sound("mw19.akilo47.smgcal.fire") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } + } + end + + self.Shell = "mwb_shelleject_545" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_lm_slima_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_lm_slima_stock", "attachment_vm_lm_slima_stockh", + "attachment_vm_lm_slima_stockl", "attachment_vm_lm_slima_stockno", "attachment_vm_lm_slima_stocks"}, + + {"attachment_vm_lm_slima_mag", "attachment_vm_lm_slima_xmags", + "attachment_vm_lm_slima_smag"}, + + {"attachment_vm_lm_slima_barrel", "attachment_vm_lm_slima_barlight", + "attachment_vm_lm_slima_barlong", "attachment_vm_lm_slima_barhvy"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", 'att_vm_silencer06'}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_lm_slima_laser01", "attachment_vm_lm_slima_laser02", + "attachment_vm_lm_slima_laser03"}, + + {"att_grip", "attachment_vm_lm_slima_bipod", "attachment_vm_lm_slima_gripside", "attachment_vm_lm_slima_gripside02", + "attachment_vm_lm_slima_gripside03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) \ No newline at end of file diff --git a/lua/weapons/mg_slima/shared.lua b/lua/weapons/mg_slima/shared.lua new file mode 100644 index 0000000..a5dfa96 --- /dev/null +++ b/lua/weapons/mg_slima/shared.lua @@ -0,0 +1,164 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_slima", "VGUI/entities/mg_slima", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_lm_slima") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_sidegrip_offset"} + +SWEP.PrintName = "RAAL MG" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Lightmachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_slima.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_slima.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("weap_slima_fire_prefire_plr"), + ReleasedSound = Sound(""), + Time = 0.15 +} + +SWEP.Primary.Sound = Sound("weap_slima_fire_plr") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 100 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 553 +SWEP.CanChamberRound = false +SWEP.CanDisableAimReload = true +SWEP.FreezeInspectDelta = 0.5 + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_lmg", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_LMG.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_LMG.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.6, --accuracy while hip + Ads = 0.13, --accuracy while aiming + Increase = 0.093, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.24, --multiply the increase value by this amount while aiming + Max = 1.75, --the cone size will not go beyond this size + Decrease = 0.6, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 76676, --just give this a random number + DecreaseEveryShot = 0.1, + MinDecreaseEveryShot = 0.25 +} + +SWEP.Recoil = { + Vertical = {5, 5.5}, --random value between the 2 + Horizontal = {-3.75, 3.75}, --random value between the 2 + Shake = 1.5, --camera shake + AdsMultiplier = 0.5, --multiply the values by this amount while aiming + Seed = 24366, --give this a random number until you like the current recoil pattern + DecreaseEveryShot = 0.1, + MinDecreaseEveryShot = 0.25 +} + +SWEP.Bullet = { + Damage = {50, 35}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 26.5, --in meters, damage will start dropping off after this range + EffectiveRange = 50, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.8, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 12, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 8 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 0, -180), + Pos = Vector(11,-1,-4) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 1, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, -4, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(3, 0, -2), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 3), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.45, + KickMultiplier = 2, + AimKickMultiplier = 1 +} + +SWEP.Shell = "mwb_shelleject_338" \ No newline at end of file diff --git a/lua/weapons/mg_smgolf45/animations.lua b/lua/weapons/mg_smgolf45/animations.lua new file mode 100644 index 0000000..dde2fad --- /dev/null +++ b/lua/weapons/mg_smgolf45/animations.lua @@ -0,0 +1,463 @@ +AddCSLuaFile() + + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.55, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.smgolf45.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.45, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.smgolf45.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_raise_first_01")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_raise_first_03")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_raise_first_02")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_raise_first_05")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_raise_first_04")) end}, + {Time = 0.867, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.6, + Fps = 30, + MagLength = 1.73, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_03")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_smag_03")) end}, + {Time = 2.267, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_01")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_04")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_02")) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.73, + Fps = 30, + MagLength = 1.16, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_04")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_05")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_02")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.367, Callback = function(self) self:EnableGrip() end}, + + } + }, + + ["Reload_Smag"] = { + Sequences = {"reload_smag"}, + Length = 2.45, + Fps = 30, + MagLength = 1.57, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_smag_05")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_smag_03")) end}, + {Time = 2.1, Callback = function(self) self:EnableGrip() end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_smag_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_smag_01")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_smag_04")) end}, + } + }, + + ["Reload_Smag_Fast"] = { + Sequences = {"reload_fast_smag"}, + Length = 1.55, + Fps = 30, + MagLength = 1.06, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_smag_04")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_smag_02")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_smag_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_smag_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmaglrg"] = { + Sequences = {"reload_Xmaglrg"}, + Length = 2.66, + Fps = 30, + MagLength = 1.73, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_xmaglrg_05")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_xmaglrg_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_xmaglrg_03")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_xmaglrg_02")) end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_xmaglrg_04")) end}, + {Time = 2.333, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmaglrg_Fast"] = { + Sequences = {"reload_fast_Xmaglrg"}, + Length = 1.76, + Fps = 30, + MagLength = 1.13, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_05")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_04")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_06")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_03")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.4, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_fast_xmaglrg_01")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.83, + Fps = 30, + MagLength = 1.83, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.433, Callback = function(self) self:EnableGrip() end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_04")) end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_05")) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_06")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_01")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_03")) end}, + {Time = 1.8, Callback = function(self) end }, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 1.86, + Fps = 30, + MagLength = 1.13, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 1.8, Callback = function(self) end }, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.567, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_02")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_03")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_04")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_05")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_06")) end}, + } + }, + + ["Reload_Empty_Smag"] = { + Sequences = {"reload_empty_smag"}, + Length = 2.67, + Fps = 30, + MagLength = 1.65, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_smag_06")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_smag_04")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_smag_05")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_smag_02")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_smag_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_smag_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.267, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Smag_Fast"] = { + Sequences = {"reload_empty_smag_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) end }, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_smag_05")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_smag_03")) end}, + {Time = 1.533, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_smag_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_smag_02")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_smag_04")) end}, + } + }, + + ["Reload_Empty_Xmaglrg"] = { + Sequences = {"reload_empty_Xmaglrg"}, + Length = 2.8, + Fps = 30, + MagLength = 1.83, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_smag_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_01")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_03")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_02")) end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_05")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_04")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_xmaglrg_06")) end}, + {Time = 2.433, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Xmaglrg_Fast"] = { + Sequences = {"reload_empty_Xmaglrg_fast"}, + Length = 1.9, + Fps = 30, + MagLength = 1.13, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) end }, + {Time = 0.0, Callback = function(self) end }, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_xmaglrg_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_xmaglrg_05")) end}, + {Time = 1.567, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_xmaglrg_01")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_xmaglrg_03")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_reload_empty_fast_xmaglrg_04")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.smgolf45.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.smgolf45.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 39, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.smgolf45.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.smgolf45.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 4.3, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_inspect_01")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_inspect_02")) end}, + {Time = 3.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_inspect_04")) end}, + {Time = 4.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_inspect_05")) end}, + {Time = 2.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_smgolf45_inspect_03")) end}, + + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Small")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Small")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_smgolf45/customization.lua b/lua/weapons/mg_smgolf45/customization.lua new file mode 100644 index 0000000..d3fb3e3 --- /dev/null +++ b/lua/weapons/mg_smgolf45/customization.lua @@ -0,0 +1,932 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_smgolf45_sup_fire_plr_lfe") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sm_smgolf45_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_rof"}, + + {"attachment_vm_sm_smgolf45_stock", "attachment_vm_sm_smgolf45_stockh", + "attachment_vm_sm_smgolf45_stockcqb", "attachment_vm_sm_smgolf45_stockl"}, + + {"attachment_vm_sm_smgolf45_mag", "attachment_vm_sm_smgolf45_smags", "attachment_vm_sm_smgolf45_xmagslrg"}, + + {"attachment_vm_sm_smgolf45_receiver"}, + + {"attachment_vm_sm_smgolf45_barrel", "attachment_vm_sm_smgolf45_barmid", + "attachment_vm_sm_smgolf45_barlong", "attachment_vm_sm_smgolf45_barshort"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04"}, + + {"att_laser", "attachment_vm_sm_smgolf45_laser01", "attachment_vm_sm_smgolf45_laser02", + "attachment_vm_sm_smgolf45_laser03"}, + + {"att_grip", "attachment_vm_sm_smgolf45_bipodgrip", "attachment_vm_sm_smgolf45_angledgrip01", "attachment_vm_sm_smgolf45_angledgrip02", "attachment_vm_sm_smgolf45_stubbygrip01", + "attachment_vm_sm_smgolf45_stubbygrip02", "attachment_vm_sm_smgolf45_vertgrip01", "attachment_vm_sm_smgolf45_vertgrip02", + "attachment_vm_sm_smgolf45_vertgrip03", "attachment_vm_sm_smgolf45_killtheclamp"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Receiver"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sm_smgolf45_barrel", +-- }, +-- { +-- Key = "attachment_vm_sm_smgolf45_receiver_v2", +-- Bodygroups = { +-- ["receiver"] = 1, +-- ["tag_sight"] = 3, +-- ["tag_pgrip"] = 2, +-- }, +-- -- ExcludedAttachments = { +-- -- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18} +-- -- }, +-- Stats = function(self) +-- -- self:SetGripPoseParameter("grip_unretard_offset") +-- end +-- }, +-- }, + +-- ["Barrel"] = { +-- Slot = 3, +-- { +-- Key = "attachment_vm_sm_smgolf45_barrel", +-- }, +-- { +-- Key = "attachment_vm_sm_smgolf45_barlong", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- -- ExcludedAttachments = { +-- -- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18} +-- -- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_smgolf45_barmid", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_smgolf45_barshort", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 5, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.1, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.25) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.1, 0.017, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 3, -0.32) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.007, 3, -0.435) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.006, 3, -0.32) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 3, -0.25) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 3, 0.17) +-- self.HybridAimAngles = Angle(-0.02, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 5, 0.65) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 3, 0.185) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.008, 5, -0.21) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 5, -0.14) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 3, 0.03) +-- self.HybridAimAngles = Angle(-0.02, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-1.15) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0075, 3, 0.1) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0.015, -45) +-- self.HybridAimPos = Vector(-1.55, 5, 0.9) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 4, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 7.5, 0), Angle()}, +-- [3] = {Vector(0, 5.7, 0), Angle()}, +-- [4] = {Vector(0, -0.15, 0), Angle()}, +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_Xmaglrg = self.Animations.Reload_Xmaglrg_Fast +-- self.Animations.Reload_Empty_Xmaglrg = self.Animations.Reload_Empty_Xmaglrg_Fast +-- self.Animations.Reload_Smag = self.Animations.Reload_Smag_Fast +-- self.Animations.Reload_Empty_Smag = self.Animations.Reload_Empty_Smag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 8, +-- { +-- Key = "attachment_vm_sm_smgolf45_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_smgolf45_stock_v2", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_smgolf45_stockcqb", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_smgolf45_stockh", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_smgolf45_stockl", +-- Bodygroups = { +-- ["tag_pgrip"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 9, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sm_smgolf45_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_smgolf45_mag_v2", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_smgolf45_smags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_smgolf45_xmagslrg", +-- Stats = function(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_smgolf45/shared.lua b/lua/weapons/mg_smgolf45/shared.lua new file mode 100644 index 0000000..d08c8c6 --- /dev/null +++ b/lua/weapons/mg_smgolf45/shared.lua @@ -0,0 +1,170 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_smgolf45", "VGUI/entities/mg_smgolf45", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sm_smgolf45") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vertpro_offset", "grip_killtheclamp_offset"} + +SWEP.PrintName = "Striker 45" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Submachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_smgolf45.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_smgolf45.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" +SWEP.Trigger = { + PressedSound = Sound("weap_smgolf45_fire_first_plr"), + ReleasedSound = Sound("weap_smgolf45_disconnector_plr"), + Time = 0.015 +} + +SWEP.Primary.Sound = Sound("weap_smgolf45_fire_plr_lfe") +SWEP.Primary.Ammo = "SMG1" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 600 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG2.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.17, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.062, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.09, --multiply the increase value by this amount while aiming + Max = 1.15, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6215 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 1.3}, --random value between the 2 + Horizontal = {-0.7, 0.7}, --random value between the 2 + Shake = 1.35, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 67586758 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {26, 13}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 38, --in meters, damage scales within this distance + DropOffStartRange = 13, --in meters, damage will start dropping off after this range + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.5, --how much damaged is multipled by when leaving a surface. + MaxCount = 3, --how many times the bullet can penetrate. + Thickness = 15, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,90,-90), + Pos = Vector(3,-4.5,-3.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 2, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(5, 0, 3), Angles = Angle(40, 0, 0)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-15, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(0, 0, 1.5), Angles = Angle(10, 0, 15)} + } + }, + + RecoilMultiplier = 0.5, + KickMultiplier = 0.4, + AimKickMultiplier = 1.75 +} + +SWEP.Shell = "mwb_shelleject_45" + + +DEFINE_BASECLASS("mg_base") \ No newline at end of file diff --git a/lua/weapons/mg_tango21/animations.lua b/lua/weapons/mg_tango21/animations.lua new file mode 100644 index 0000000..93fdbad --- /dev/null +++ b/lua/weapons/mg_tango21/animations.lua @@ -0,0 +1,499 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.tango21.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.63, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.tango21.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.1, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.833, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_raise_first_01")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_raise_first_03")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_raise_first_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.767, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.45, + Fps = 30, + MagLength = 1.45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_05")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_04")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_03")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.2, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.85, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.3, Callback = function(self) self:DisableGrip() end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_fast_01")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 0)) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_fast_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_fast_02")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_fast_05")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_fast_04")) end}, + } + }, + + ["reload_xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.45, + Fps = 30, + MagLength = 1.45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_05")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_04")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_03")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.2, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_xmag_fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.85, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.3, Callback = function(self) self:DisableGrip() end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_fast_01")) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 0)) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_fast_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_fast_02")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_fast_05")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_fast_04")) end}, + } + }, + + ["reload_drum"] = { + Sequences = {"reload_drum"}, + Length = 2.55, + Fps = 30, + MagLength = 1.65, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 2.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_06")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_05")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_04")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_03")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_01")) end}, + {Time = 2.367, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_drum_fast"] = { + Sequences = {"reload_drum_fast"}, + Length = 1.8, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(0, 0, 0)) end}, + {Time = 0.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_fast_01")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_fast_03")) end}, + {Time = 1.633, Callback = function(self) self:EnableGrip() end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_fast_02")) end}, + {Time = 0.3, Callback = function(self) self:DisableGrip() end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_fast_04")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.95, + Fps = 30, + MagLength = 1.75, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 2.767, Callback = function(self) self:EnableGrip() end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-10, 0, 0)) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_04")) end}, + {Time = 2.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_09")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_08")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_07")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_06")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_05")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_03")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_02")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_01")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.3, Callback = function(self) self:DisableGrip() end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_fast_05")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_fast_04")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_fast_01")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_fast_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_fast_02")) end}, + {Time = 1.867, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_empty_xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 2.95, + Fps = 30, + MagLength = 1.75, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 2.767, Callback = function(self) self:EnableGrip() end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(-10, 0, 0)) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_04")) end}, + {Time = 2.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_09")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_08")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_07")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_06")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_05")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_03")) end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_02")) end}, + {Time = 0.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_01")) end}, + } + }, + + ["reload_empty_xmag_fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 2.15, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AR.Poly"), Vector(0, 0, 0)) end}, + {Time = 0.3, Callback = function(self) self:DisableGrip() end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_fast_05")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_fast_04")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_fast_01")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_fast_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_empty_fast_02")) end}, + {Time = 1.867, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_empty_drum"] = { + Sequences = {"reload_empty_drum"}, + Length = 2.9, + Fps = 30, + MagLength = 1.75, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 2.767, Callback = function(self) self:EnableGrip() end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-10, 0, 0)) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_03")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_02")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_01")) end}, + {Time = 2.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_07")) end}, + {Time = 2.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_06")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_05")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_04")) end}, + } + }, + + ["reload_empty_drum_fast"] = { + Sequences = {"reload_empty_drum_fast"}, + Length = 2.05, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0.3, Callback = function(self) self:DisableGrip() end}, + {Time = 0.3, Callback = function(self) end}, + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(0, 0, 0)) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_fast_01")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_fast_03")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_fast_02")) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_fast_05")) end}, + {Time = 1.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_reload_drum_empty_fast_04")) end}, + {Time = 1.867, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.mike4.fire.last")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.galima.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.galima.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.tango21.fire.switch.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.tango21.fire.switch.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 2.533, Callback = function(self) self:EnableGrip() end}, + {Time = 4.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_inspect_05")) end}, + {Time = 3.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_inspect_04")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_inspect_01")) end}, + {Time = 2.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_inspect_03")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_tango21_inspect_02")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["HybridOn"] = { + Sequences = {"hybrid_toggle_off"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0.15, Callback = function(self) self:DoSound(Sound("Flipsight.Up")) end} + } + }, + + ["HybridOff"] = { + Sequences = {"hybrid_toggle_on"}, + Fps = 30, + Length = 0.9, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.7, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("Flipsight.Down")) end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_tango21/customization.lua b/lua/weapons/mg_tango21/customization.lua new file mode 100644 index 0000000..ce4e74d --- /dev/null +++ b/lua/weapons/mg_tango21/customization.lua @@ -0,0 +1,1017 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("mw19.tango21.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doCalConversionStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4) then + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Pistol.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } + } + end + + self.Primary.Ammo = "SMG1" + self.ParticleEffects.MuzzleFlash = "AC_muzzle_pistol" + self.Shell = "mwb_shelleject_9mm" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_tango21_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"att_receiver"}, + + {"attachment_vm_ar_tango21_barrel", "attachment_vm_ar_tango21_barrel_short", "attachment_vm_ar_tango21_barrel_med", + "attachment_vm_ar_tango21_barrel_long"}, + + {"attachment_vm_ar_tango21_stock", "attachment_vm_ar_tango21_stock_tactical", + "attachment_vm_ar_tango21_stock_light", "attachment_vm_ar_tango21_stock_heavy"}, + + {"attachment_vm_ar_tango21_mag", "attachment_vm_ar_tango21_drummag", "attachment_vm_ar_tango21_xmags"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west02", "att_vm_hybrid_west02_thermal", "att_vm_hybrid_west03", + "att_vm_4x_east01_tall", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_ar_tango21_laser01", "attachment_vm_ar_tango21_laser02", + "attachment_vm_ar_tango21_laser03"}, + + {"att_grip", "attachment_vm_ar_tango21_bipodgrip", "attachment_vm_ar_tango21_angledgrip01", "attachment_vm_ar_tango21_angledgrip02", "attachment_vm_ar_tango21_stubbygrip01", + "attachment_vm_ar_tango21_stubbygrip02", "attachment_vm_ar_tango21_vertgrip01", "attachment_vm_ar_tango21_vertgrip02", + "attachment_vm_ar_tango21_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_tango21_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_tango21_barrel_long", +-- Bodygroups = { +-- ["tag_tip"] = 2, +-- ["tag_grip_hide"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_tango21_barrel_med", +-- Bodygroups = { +-- ["tag_tip"] = 4, +-- ["tag_grip_hide"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_tango21_barrel_short", +-- Bodygroups = { +-- ["tag_tip"] = 6, +-- }, +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.025, 0, -0.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.03, 0, -0.065) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.23) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, -0.03, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.3) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.15, -0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.095, 0, -0.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.505) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -0.33) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, 0.095) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.HybridAimAngles = Angle(0, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 0, 0.6) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, 0.11) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.022, 2.5, -0.28) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.017, 2.5, -0.21) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -0.045) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(-0.015,2,-1.25) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -0.305) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.1, 0) +-- self.HybridAimAngles = Angle(0, 0, 0) +-- self.HybridAimPos = Vector(0, 0, -0.31) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west02_thermal", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -0.305) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.1, 0) +-- self.HybridAimAngles = Angle(0, 0, 0) +-- self.HybridAimPos = Vector(0, 0, -0.31) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 2, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, -1, 0.025) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.HybridAimAngles = Angle(0, 0.02, -45) +-- self.HybridAimPos = Vector(-1.55, 0, 0.85) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 6.35, 0), Angle()}, +-- [3] = {Vector(0, 3.6, 0), Angle()}, +-- [4] = {Vector(0, -1, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.reload_drum = self.Animations.reload_drum_fast +-- self.Animations.reload_empty_drum = self.Animations.reload_empty_drum_fast +-- self.Animations.reload_xmag = self.Animations.reload_xmag_fast +-- self.Animations.reload_empty_xmag = self.Animations.reload_empty_xmag_fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_ar_tango21_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_tango21_stock_heavy", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_tango21_stock_light", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_tango21_stock_tactical", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, -1.5, 0), Angle()}, +-- [2] = {Vector(0, -1.5, 0), Angle()}, +-- [3] = {Vector(0, -1.5, 0), Angle()}, +-- [4] = {Vector(0, -1.5, -0.175), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()}, +-- [6] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [4] = {Vector(0, 0, -0.175), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_ar_tango21_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_tango21_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_tango21_drummag", +-- Stats = function(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_tango21/shared.lua b/lua/weapons/mg_tango21/shared.lua new file mode 100644 index 0000000..806549b --- /dev/null +++ b/lua/weapons/mg_tango21/shared.lua @@ -0,0 +1,171 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_tango21", "VGUI/entities/mg_tango21", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_tango21") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vertpro_offset"} + +SWEP.PrintName = "RAM-7" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_tango21.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_tango21.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.tango21.fire.first"), + ReleasedSound = Sound("mw19.tango21.disconnector"), + Time = 0.025 +} + +SWEP.Slot = 2 +SWEP.HoldType = "TinyGun" + +SWEP.Primary.Sound = Sound("mw19.tango21.fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 855 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_ar", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR3.Outside"), + Reflection = Sound("Reflection_AR.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR.Inside"), + Reflection = Sound("Reflection_AR.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.39, --accuracy while hip + Ads = 0.021, --accuracy while aiming + Increase = 0.065, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.095, --multiply the increase value by this amount while aiming + Max = 1.35, --the cone size will not go beyond this size + Decrease = 0.24, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 98796 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 2.5}, --random value between the 2 + Horizontal = {-1.75, 2.75}, --random value between the 2 + Shake = 1.15, --camera shake + AdsMultiplier = 0.17, --multiply the values by this amount while aiming + Seed = 8778456, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1 +} + +SWEP.Bullet = { + Damage = {23, 12}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 16, --in meters, damage will start dropping off after this range + EffectiveRange = 38, --in meters, damage scales within this distance + Range = 180, + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.74, --how much damaged is multipled by when leaving a surface. + MaxCount = 4, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 6.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 95, -90), + Pos = Vector(-5,-3,7) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, -0.025, 0), + Pos = Vector(-0.02, -0.35, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.3, + KickMultiplier = 0.25, + AimKickMultiplier = 0.75 +} + +SWEP.Shell = "mwb_shelleject_556" + +DEFINE_BASECLASS("mg_base") \ No newline at end of file diff --git a/lua/weapons/mg_uzulu/animations.lua b/lua/weapons/mg_uzulu/animations.lua new file mode 100644 index 0000000..ef02333 --- /dev/null +++ b/lua/weapons/mg_uzulu/animations.lua @@ -0,0 +1,461 @@ +AddCSLuaFile() + + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.55, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.uzulu.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.5, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.uzulu.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_raise_first_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_raise_first_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.133, Callback = function(self) self:EnableGrip() end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_raise_first_04")) end}, + {Time = 1.267, Callback = function(self) self:EnableGrip() end}, + {Time = 0.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_raise_first_03")) end}, + } + }, + + ["Equip_No_Stock"] = { + Sequences = {"draw_first_nostock"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.133, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_raise_first_01")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_07")) end}, + } + }, + + ["Equip_No_Stock_Scope"] = { + Sequences = {"draw_first_nostock_scope"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.133, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_raise_first_01")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_07")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.5, + Fps = 30, + MagLength = 1.7, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_07")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_06")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_05")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_04")) end}, + {Time = 0.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_03")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_01")) end}, + {Time = 2.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.35, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_fast_05")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_fast_04")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_fast_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_fast_01")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_fast_03")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_fast_02")) end}, + {Time = 1.833, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.5, + Fps = 30, + MagLength = 1.7, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmag_04")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmag_05")) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmag_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmag_01")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmag_02")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmag_03")) end}, + {Time = 2.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Xmag_Fast"] = { + Sequences = {"reload_fast_xmag"}, + Length = 2.15, + Fps = 30, + MagLength = 1.35, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmeg_fast_04")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmeg_fast_05")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmeg_fast_06")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmeg_fast_07")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmeg_fast_01")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmeg_fast_02")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_xmeg_fast_03")) end}, + {Time = 1.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.25, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_07")) end}, + {Time = 2.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_08")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_03")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_01")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_06")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_05")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_04")) end}, + {Time = 2.967, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.5, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_08")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_05")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_04")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_07")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_01")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_03")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_02")) end}, + {Time = 2.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Scope"] = { + Sequences = {"reload_empty_scope"}, + Length = 3.25, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_07")) end}, + {Time = 2.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_08")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_03")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_02")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_01")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_06")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_05")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_04")) end}, + {Time = 2.967, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Fast_Scope"] = { + Sequences = {"reload_empty_fast_scope"}, + Length = 2.5, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_08")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_05")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_04")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_07")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_01")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_03")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_fast_02")) end}, + {Time = 2.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + + ["Reload_Empty_Xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 3.25, + Fps = 30, + MagLength = 1.75, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmag_01")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmag_02")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmag_03")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmag_04")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmag_05")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmag_06")) end}, + {Time = 2.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmag_07")) end}, + {Time = 2.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmag_08")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.967, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Reload_Empty_Xmag_Fast"] = { + Sequences = {"reload_empty_fast_xmag"}, + Length = 2.5, + Fps = 30, + MagLength = 1.3, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_08")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_02")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_03")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_04")) end}, + {Time = 1.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_05")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_06")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_reload_empty_xmeg_fast_07")) end}, + {Time = 2.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.uzulu.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.3, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.uzulu.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 39, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.uzulu.selector.off")) end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.uzulu.selector.on")) end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_inspect_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 3.833, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_inspect_01")) end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_inspect_03")) end}, + {Time = 3.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_inspect_05")) end}, + {Time = 3.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_uzulu_inspect_04")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_uzulu/customization.lua b/lua/weapons/mg_uzulu/customization.lua new file mode 100644 index 0000000..20da6b0 --- /dev/null +++ b/lua/weapons/mg_uzulu/customization.lua @@ -0,0 +1,1027 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_uzulu_sup_fire_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doCalConversionStats() + local bSup1 = self:HasAttachment("attachment_vm_silencer_east01") + local bSup2 = self:HasAttachment("attachment_vm_silencer02") + local bSup3 = self:HasAttachment("attachment_vm_silencer03") + local bSup4 = self:HasAttachment("attachment_vm_silencer04") + local bSup5 = self:HasAttachment("attachment_vm_sm_uzulu_suppressor") + + if (!bSup1 && !bSup2 && !bSup3 && !bSup4 && !bSup5) then + self.Primary.Sound = Sound("weap_uzulu_sub_fire_plr") + end + + --[[self.Shell.Model = Model("models/viper/mw/shells/fx_pistol_shell_lod0.mdl") + self.Shell.Scale = 0.5 + self.Shell.Sound = Sound("MW_Casings.9mm")]] +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sm_uzulu_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_rof"}, + + {"attachment_vm_sm_uzulu_stock", "attachment_vm_sm_uzulu_stockh", "attachment_vm_sm_uzulu_stock_folded", + "att_vm_uzulu_stock_heavy01", "att_vm_uzulu_stock_heavy02", + "att_vm_uzulu_stock_light01", "att_vm_uzulu_stock_medium01", + "att_vm_uzulu_stock_no"}, + + {"attachment_vm_sm_uzulu_mag", "attachment_vm_sm_uzulu_xmags", "attachment_vm_sm_uzulu_xmag2", "attachment_vm_sm_uzulu_magcalcust", + "attachment_vm_sm_uzulu_magcalcust9mm"}, + + {"attachment_vm_sm_uzulu_receiver"}, + + {"attachment_vm_sm_uzulu_barrel", "attachment_vm_sm_uzulu_barshort", + "attachment_vm_sm_uzulu_barmid", "attachment_vm_sm_uzulu_barlong", "attachment_vm_sm_uzulu_barcust"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06", "attachment_vm_sm_uzulu_suppressor"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04"}, + + {"att_laser", "attachment_vm_sm_uzulu_laser01", "attachment_vm_sm_uzulu_laser02", + "attachment_vm_sm_uzulu_laser03"}, + + {"att_grip", "attachment_vm_sm_uzulu_bipodgrip", "attachment_vm_sm_uzulu_angledgrip01", "attachment_vm_sm_uzulu_angledgrip02", "attachment_vm_sm_uzulu_stubbygrip01", + "attachment_vm_sm_uzulu_stubbygrip02", "attachment_vm_sm_uzulu_vertgrip01", "attachment_vm_sm_uzulu_vertgrip02", + "attachment_vm_sm_uzulu_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sm_uzulu_barrel", +-- }, +-- { +-- Key = "attachment_vm_sm_uzulu_barcust", +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18} +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_uzulu_barlong", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_uzulu_barmid", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_uzulu_barshort", +-- ExcludedAttachments = { +-- ["Muzzle"] = {18} +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.01, 0.02, 0) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0.035, 0.02, 0) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.034, 0.018, 0) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -1.423) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.034, 0.018, 0) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.05, 0) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.6) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.55) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.013, 0) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -1.63) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0, 0, 0) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.45) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.1, 0.017, 0) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 0, -1.75) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.007, 0, -1.85) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.006, 0, -1.745) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 1, -1.68) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 1, -1.255) +-- self.HybridAimAngles = Angle(-0.02, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 5, -0.75) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, -1.5, -1.24) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.008, 5, -1.635) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 5, -1.565) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 0, -1.393) +-- self.HybridAimAngles = Angle(-0.02, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-2.55) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_optic_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0075, 1.5, -1.32) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0.015, -45) +-- self.HybridAimPos = Vector(-1.55, 5, -0.5) +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Scope +-- self.Animations.Reload_Empty_Fast = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Equip_No_Stock = self.Animations.Equip_No_Stock_Scope +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(0, 2.2, 0), Angle()}, +-- [4] = {Vector(0, 1.7, 0), Angle()}, +-- [5] = {Vector(0, -1.5, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_uzulu_suppressor", +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [1] = {Vector(0, -1.8, 0), Angle()}, +-- [2] = {Vector(0, 2.2, 0), Angle()}, +-- [3] = {Vector(0, 0.4, 0), Angle()}, +-- [4] = {Vector(0, -0.1, 0), Angle()}, +-- [5] = {Vector(0, -2.35, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- } +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_Empty_Scope = self.Animations.Reload_Empty_Fast_Scope +-- self.Animations.Reload_XmagLrg = self.Animations.Reload_XmagLrg_Fast +-- self.Animations.Reload_Empty_XmagLrg = self.Animations.Reload_Empty_XmagLrg_Fast +-- self.Animations.Reload_Xmag = self.Animations.Reload_Xmag_Fast +-- self.Animations.Reload_Empty_Xmag = self.Animations.Reload_Empty_Xmag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sm_uzulu_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_uzulu_stock_folded", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_No_Stock +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_uzulu_stockh", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_No_Stock +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_light01", +-- Bodygroups = { +-- ["tag_stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_No_Stock +-- end +-- }, +-- { +-- Key = "attachment_vm_stock_medium01", +-- Bodygroups = { +-- ["tag_stock_adapter"] = 1 +-- }, +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_No_Stock +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, -1, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, -2.15, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, -2.15, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, -2.15, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, -2.15, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Bodygroups = { +-- ["tag_ub_rail"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, -2.15, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_sm_uzulu_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_uzulu_xmags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_uzulu_xmag2", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_uzulu_magcalcust", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_uzulu_magcalcust9mm", +-- Stats = function(self) +-- doCalConversionStats(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_uzulu/shared.lua b/lua/weapons/mg_uzulu/shared.lua new file mode 100644 index 0000000..83609d7 --- /dev/null +++ b/lua/weapons/mg_uzulu/shared.lua @@ -0,0 +1,170 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_uzulu", "VGUI/entities/mg_uzulu", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sm_uzulu") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} + +SWEP.PrintName = "UZI" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Submachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_uzulu.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_uzulu.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "TinyGun" +SWEP.Trigger = { + PressedSound = Sound("weap_uzulu_fire_first_plr"), + ReleasedSound = Sound("weap_uzulu_disconnector_plr"), + Time = 0.1 +} + +SWEP.Primary.Sound = Sound("weap_uzulu_fire_plr") +SWEP.Primary.Ammo = "SMG1" +SWEP.Primary.ClipSize = 32 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 600 +SWEP.CanChamberRound = false + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.1, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.032, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.09, --multiply the increase value by this amount while aiming + Max = 1.15, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6215 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {1, 1.5}, --random value between the 2 + Horizontal = {-0.3, 0.3}, --random value between the 2 + Shake = 0.95, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 66666 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {23, 11}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 35, --in meters, damage scales within this distance + DropOffStartRange = 12, --in meters, damage will start dropping off after this range + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.5, --how much damaged is multipled by when leaving a surface. + MaxCount = 2, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 90, -90), + Pos = Vector(6, -5.5, -6) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 4, 0), Angles = Angle(30, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.25, + KickMultiplier = 1, + AimKickMultiplier = 1.3 +} + +SWEP.Shell = "mwb_shelleject_9mm" + + +DEFINE_BASECLASS("mg_base") \ No newline at end of file diff --git a/lua/weapons/mg_valpha/animations.lua b/lua/weapons/mg_valpha/animations.lua new file mode 100644 index 0000000..a0468de --- /dev/null +++ b/lua/weapons/mg_valpha/animations.lua @@ -0,0 +1,527 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.valpha.raise")) end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.5, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.valpha.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.15, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.6, Callback = function(self) self:EnableGrip() end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_raise_first_03")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_raise_first_02")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_raise_first_01")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 2.45, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_06")) end}, + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 2.267, Callback = function(self) self:EnableGrip() end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_04")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_02")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_03")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_01")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_05")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_07")) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_fast_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_fast_01")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_fast_04")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_fast_05")) end}, + {Time = 1.5, Callback = function(self) self:EnableGrip() end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_fast_03")) end}, + } + }, + + ["reload_smag"] = { + Sequences = {"reload_smag"}, + Length = 2.1, + Fps = 30, + MagLength = 1.2, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_06")) end}, + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 1.933, Callback = function(self) self:EnableGrip() end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_02")) end}, + {Time = 1.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_04")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_05")) end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_03")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_01")) end}, + } + }, + + ["reload_smag_fast"] = { + Sequences = {"reload_smag_fast"}, + Length = 1.6, + Fps = 30, + MagLength = 1.15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_fast_04")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_fast_05")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_fast_01")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_fast_02")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_fast_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.4, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_xmag"] = { + Sequences = {"reload_xmag"}, + Length = 2.45, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_07")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_06")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_05")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_04")) end}, + {Time = 0.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_03")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_02")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_01")) end}, + {Time = 0.067, Callback = function(self) self:DisableGrip() end}, + {Time = 2.3, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_xmag_fast"] = { + Sequences = {"reload_xmag_fast"}, + Length = 1.85, + Fps = 30, + MagLength = 1.45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_fast_01")) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_fast_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.733, Callback = function(self) self:EnableGrip() end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_fast_03")) end}, + {Time = 1.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_fast_05")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_fast_04")) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 2.6, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-5, 0, 40)) end}, + {Time = 2.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_empty_08")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_empty_06")) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_empty_07")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_empty_04")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_empty_05")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_empty_02")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_empty_03")) end}, + {Time = 2.433, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_empty_01")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.1, + Fps = 30, + MagLength = 1.25, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_fast_empty_02")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_fast_empty_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_fast_empty_01")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_fast_empty_04")) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_fast_empty_05")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.933, Callback = function(self) self:EnableGrip() end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_fast_empty_06")) end}, + } + }, + + ["reload_empty_smag"] = { + Sequences = {"reload_empty_smag"}, + Length = 2.4, + Fps = 30, + MagLength = 1.45, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 2.233, Callback = function(self) self:EnableGrip() end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_empty_08")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_empty_01")) end}, + {Time = 0.3, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_empty_02")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_empty_03")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_empty_04")) end}, + {Time = 1.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_empty_05")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_empty_06")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_empty_07")) end}, + } + }, + + ["reload_empty_smag_fast"] = { + Sequences = {"reload_empty_smag_fast"}, + Length = 2, + Fps = 30, + MagLength = 1.1, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Metal"), Vector(-5, 0, 40)) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_fast_empty_01")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_fast_empty_02")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_fast_empty_03")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_fast_empty_04")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_fast_empty_05")) end}, + {Time = 1.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_smag_fast_empty_06")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 1.867, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["reload_empty_xmag"] = { + Sequences = {"reload_empty_xmag"}, + Length = 2.6, + Fps = 30, + MagLength = 1.55, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-5, 0, 40)) end}, + {Time = 2.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_empty_07")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_empty_05")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_empty_04")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_empty_03")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_empty_02")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_empty_01")) end}, + {Time = 2.433, Callback = function(self) self:EnableGrip() end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_empty_06")) end}, + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["reload_empty_xmag_fast"] = { + Sequences = {"reload_empty_xmag_fast"}, + Length = 2.3, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.AK.Metal"), Vector(-5, 0, 40)) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_fast_empty_05")) end}, + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_fast_empty_04")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_fast_empty_06")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_fast_empty_01")) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_fast_empty_03")) end}, + {Time = 0.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_reload_xmag_fast_empty_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 2.233, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.valpha.ads.up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.275, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.valpha.ads.down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.valpha.fire.switch.off")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.valpha.fire.switch.on")) end}, + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.167, Callback = function(self) end}, + {Time = 0.167, Callback = function(self) self:DisableGrip() end}, + {Time = 4.767, Callback = function(self) self:EnableGrip() end}, + {Time = 3.033, Callback = function(self) self:DisableGrip() end}, + {Time = 4.967, Callback = function(self) self:EnableGrip() end}, + {Time = 4.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_08")) end}, + {Time = 3.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_06")) end}, + {Time = 4.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_07")) end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_04")) end}, + {Time = 2.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_05")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_02")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_03")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_01")) end}, + } + }, + + ["inspect_smag"] = { + Sequences = {"inspect_smag"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) end}, + {Time = 0.167, Callback = function(self) self:DisableGrip() end}, + {Time = 4.467, Callback = function(self) self:EnableGrip() end}, + {Time = 2.8, Callback = function(self) self:DisableGrip() end}, + {Time = 4.667, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_smag_01")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_smag_02")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_smag_03")) end}, + {Time = 2.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_smag_04")) end}, + {Time = 2.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_smag_05")) end}, + {Time = 2.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_smag_06")) end}, + {Time = 3.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_smag_07")) end}, + {Time = 4.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_smag_08")) end}, + } + }, + + ["inspect_xmag"] = { + Sequences = {"inspect_xmag"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 5.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_xmag_09")) end}, + {Time = 4.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_xmag_08")) end}, + {Time = 3.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_xmag_07")) end}, + {Time = 2.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_xmag_06")) end}, + {Time = 0.167, Callback = function(self) self:DisableGrip() end}, + {Time = 2.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_xmag_04")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_xmag_03")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_xmag_02")) end}, + {Time = 0.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_xmag_01")) end}, + {Time = 3.033, Callback = function(self) self:DisableGrip() end}, + {Time = 2.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_ar_valpha_inspect_xmag_05")) end}, + {Time = 4.967, Callback = function(self) self:EnableGrip() end}, + {Time = 4.767, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_valpha/customization.lua b/lua/weapons/mg_valpha/customization.lua new file mode 100644 index 0000000..09779b8 --- /dev/null +++ b/lua/weapons/mg_valpha/customization.lua @@ -0,0 +1,674 @@ +AddCSLuaFile() + +local function doSuppressorStats(self) + self.Primary.Sound = Sound("mw19.valpha.fire.s") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_ar_valpha_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_headshot"}, + + {"attachment_vm_ar_valpha_stock", "attachment_vm_ar_valpha_stockh", "attachment_vm_ar_valpha_stocks", + "attachment_vm_ar_valpha_stockskel", "attachment_vm_ar_valpha_stocksn"}, + + {"attachment_vm_ar_valpha_mag", "attachment_vm_ar_valpha_smags","attachment_vm_ar_valpha_xmags"}, + + {"attachment_vm_ar_valpha_barrel", "attachment_vm_ar_valpha_barhvy","attachment_vm_ar_valpha_barlight", + "attachment_vm_ar_valpha_barshort"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "attachment_vm_ar_valpha_scope", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04", "att_vm_2x_west01", + "att_vm_scope_mike14", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_ar_valpha_laser01", "attachment_vm_ar_valpha_laser02", + "attachment_vm_ar_valpha_laser03"}, + + {"att_grip", "attachment_vm_ar_valpha_bipodgrip", "attachment_vm_ar_valpha_angledgrip01", "attachment_vm_ar_valpha_angledgrip02", "attachment_vm_ar_valpha_stubbygrip01", + "attachment_vm_ar_valpha_stubbygrip02", "attachment_vm_ar_valpha_vertgrip01", "attachment_vm_ar_valpha_vertgrip02", + "attachment_vm_ar_valpha_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_ar_valpha_barrel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_valpha_barhvy", +-- Bodygroups = { +-- ["tag_laser"] = 2, +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barheavy_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_valpha_barlight", +-- Bodygroups = { +-- ["tag_laser"] = 6, +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barlight_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_valpha_barshort", +-- Bodygroups = { +-- ["tag_laser"] = 6, +-- }, +-- ExcludedAttachments = { +-- ["Underbarrel"] = {2} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barshort_offset") +-- end +-- } +-- }, + +-- ["Laser"] = { +-- Slot = 5, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(2.75, -3.5, 1.15), Angle()}, +-- [4] = {Vector(2.75, -3.5, 1.15), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(2.75, -3.5, 1.15), Angle()}, +-- [4] = {Vector(2.75, -3.5, 1.15), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [3] = {Vector(2.75, -3.5, 1.15), Angle()}, +-- [4] = {Vector(2.75, -3.5, 1.15), Angle()} +-- } +-- } +-- }, +-- Bodygroups = { +-- ["tag_laser"] = 1 +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 3, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.4) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.35) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 1, -1.5) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.02, 0, -1.39) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.7) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.65) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -1.515) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.02, 0, -1.6) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.45) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.1, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.115, 0, -1.725) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -1.83) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.72) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0.015, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_valpha_scope", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.37) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.655) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.23) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.75, 0, -0.75) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.21) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 3.5, -1.6015) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.006, 3.5, -1.535) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -1.36) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.HybridAimAngles = Angle(-0.01, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-2.55) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1, +-- ["tag_rail"] = 1, +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.01, 0, -1.42) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(0, 0, 0) +-- self.Zoom.Blur.EyeFocusDistance = 1.5 +-- self.HybridAimAngles = Angle(0, 0, -45) +-- self.HybridAimPos = Vector(-1.55, 0, -0.45) +-- end +-- }, +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.reload_smag = self.Animations.reload_smag_fast +-- self.Animations.reload_empty_smag = self.Animations.reload_empty_smag_fast +-- self.Animations.reload_xmag = self.Animations.reload_xmag_fast +-- self.Animations.reload_empty_xmag = self.Animations.reload_empty_xmag_fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 6, +-- { +-- Key = "attachment_vm_ar_valpha_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_valpha_stockh", +-- Bodygroups = { +-- ["tag_stock_hide"] = 1, +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_valpha_stocks", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_valpha_stockskel", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_valpha_stocksn", +-- Stats = function(self) +-- end +-- }, +-- }, + +-- ["Underbarrel"] = { +-- Slot = 7, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip_lod0", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- VElement = { +-- Bone = "tag_grip_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- VElement = { +-- Bone = "tag_folding_grip", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 4, +-- { +-- Key = "attachment_vm_ar_valpha_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_valpha_smags", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_magwell_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_ar_valpha_xmags", +-- Stats = function(self) +-- end +-- } +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_valpha/shared.lua b/lua/weapons/mg_valpha/shared.lua new file mode 100644 index 0000000..3689d33 --- /dev/null +++ b/lua/weapons/mg_valpha/shared.lua @@ -0,0 +1,170 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_valpha", "VGUI/entities/mg_valpha", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_ar_valpha") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_barheavy_offset", "grip_barlight_offset", +"grip_barshort_offset", "grip_magwell_offset"} + +SWEP.PrintName = "AS-VAL" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Assault Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_valpha.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_valpha.mdl") +SWEP.Trigger = { + PressedSound = Sound("mw19.valpha.fire.first"), + ReleasedSound = Sound("mw19.valpha.disconnector"), + Time = 0.025 +} + +SWEP.Slot = 2 +SWEP.HoldType = "Rifle" + +SWEP.Primary.Sound = Sound("mw19.valpha.fire") +SWEP.Primary.Ammo = "Ar2" +SWEP.Primary.ClipSize = 20 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 895 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "AC_muzzle_pistol_suppressed", + ["MuzzleFlash_Suppressed"] = "AC_muzzle_pistol_suppressed", + ["Ejection"] = "AC_muzzle_pistol_ejection", +} + +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_AR_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_AR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + --self.Primary.RPM = 450 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.32, --accuracy while hip + Ads = 0.017, --accuracy while aiming + Increase = 0.063, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.15, --multiply the increase value by this amount while aiming + Max = 2.35, --the cone size will not go beyond this size + Decrease = 0.37, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 9845856 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {2, 2.75}, --random value between the 2 + Horizontal = {-1.15, 2.2}, --random value between the 2 + Shake = 1.15, --camera shake + AdsMultiplier = 0.35, --multiply the values by this amount while aiming + Seed = 8778456, --give this a random number until you like the current recoil pattern + ViewModelMultiplier = 1.21 +} +SWEP.Bullet = { + Damage = {35, 15}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + DropOffStartRange = 21, --in meters, damage will start dropping off after this range + EffectiveRange = 48, --in meters, damage scales within this distance + Range = 180, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.63, --how much damaged is multipled by when leaving a surface. + MaxCount = 2, --how many times the bullet can penetrate. + Thickness = 5, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 6.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0, 100, -90), + Pos = Vector(4,-3,-3) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 0.5, + KickMultiplier = 0.25, + AimKickMultiplier = 0.95 +} + +SWEP.Shell = "mwb_shelleject_939" + +DEFINE_BASECLASS("mg_base") \ No newline at end of file diff --git a/lua/weapons/mg_victor/animations.lua b/lua/weapons/mg_victor/animations.lua new file mode 100644 index 0000000..0342258 --- /dev/null +++ b/lua/weapons/mg_victor/animations.lua @@ -0,0 +1,520 @@ +AddCSLuaFile() + + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.55, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.victor.raise")) end} + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 0.45, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.victor.drop")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.166, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_raise_first_02")) end}, + {Time = 0.633, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_raise_first_01")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_raise_first_03")) end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 3, + Fps = 30, + MagLength = 2.26, + NextSequence = "Idle", + Events = { + {Time = 1.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_05")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.7, Callback = function(self) self:EnableGrip() end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_06")) end}, + {Time = 2.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_07")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_04")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_02")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_01")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2.06, + Fps = 30, + MagLength = 1.5, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_01")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_06")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_04")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_05")) end}, + {Time = 1.867, Callback = function(self) self:EnableGrip() end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_03")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Smag"] = { + Sequences = {"reload_smag"}, + Length = 2.6, + Fps = 30, + MagLength = 1.96, + NextSequence = "Idle", + Events = { + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.267, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_smag_01")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_smag_02")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_smag_03")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_smag_04")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_smag_05")) end}, + {Time = 1.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_smag_06")) end}, + {Time = 2.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_smag_07")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Smag_Fast"] = { + Sequences = {"reload_fast_smag"}, + Length = 1.8, + Fps = 30, + MagLength = 1.26, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_smag_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_smag_01")) end}, + {Time = 0.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_smag_02")) end}, + {Time = 0.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_smag_03")) end}, + {Time = 1.533, Callback = function(self) self:EnableGrip() end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_smag_05")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_smag_06")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Drum"] = { + Sequences = {"reload_drum"}, + Length = 3.1, + Fps = 30, + MagLength = 2.3, + NextSequence = "Idle", + Events = { + {Time = 1.533, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_drum_04")) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_drum_05")) end}, + {Time = 2.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_drum_06")) end}, + {Time = 2.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_drum_07")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_drum_01")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_drum_02")) end}, + {Time = 0.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_drum_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.733, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Drum_Fast"] = { + Sequences = {"reload_fast_drum"}, + Length = 2.23, + Fps = 30, + MagLength = 1.63, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 1.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_drum_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_drum_04")) end}, + {Time = 2.0, Callback = function(self) self:EnableGrip() end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_drum_05")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_drum_01")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_drum_02")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_fast_drum_06")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 3.23, + Fps = 30, + MagLength = 1.86, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 2.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_08")) end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_06")) end}, + {Time = 0.967, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_04")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_05")) end}, + {Time = 0.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_02")) end}, + {Time = 0.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_03")) end}, + {Time = 2.867, Callback = function(self) self:EnableGrip() end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_01")) end}, + {Time = 2.433, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_07")) end}, + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_065")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 2.23, + Fps = 30, + MagLength = 1.4, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0., Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_01")) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_06")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.067, Callback = function(self) self:EnableGrip() end}, + {Time = 2.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_08")) end}, + {Time = 0.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_02")) end}, + {Time = 0.933, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_03")) end}, + {Time = 1.767, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_07")) end}, + {Time = 1.233, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_04")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_05")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Smag"] = { + Sequences = {"reload_empty_smag"}, + Length = 3, + Fps = 30, + MagLength = 1.73, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_smag_04")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 2.633, Callback = function(self) self:EnableGrip() end}, + {Time = 1.633, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_smag_05")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_smag_06")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_smag_01")) end}, + {Time = 0.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_smag_02")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_smag_03")) end}, + {Time = 2.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_smag_07")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Smag_Fast"] = { + Sequences = {"reload_empty_smag_fast"}, + Length = 2.2, + Fps = 30, + MagLength = 1.26, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.SMG.Poly"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_smag_08")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_smag_03")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 1.9, Callback = function(self) self:EnableGrip() end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_smag_01")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_smag_02")) end}, + {Time = 1.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_smag_04")) end}, + {Time = 1.267, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_smag_05")) end}, + {Time = 1.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_smag_06")) end}, + {Time = 1.6, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_smag_07")) end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Drum"] = { + Sequences = {"reload_empty_drum"}, + Length = 3.53, + Fps = 30, + MagLength = 2.13, + NextSequence = "Idle", + Events = { + {Time = 1.35, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0, Callback = function(self) end}, + {Time = 1.7, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_drum_04")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_drum_05")) end}, + {Time = 2.667, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_drum_06")) end}, + {Time = 3.167, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_drum_07")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_drum_01")) end}, + {Time = 0.733, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_drum_02")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_drum_03")) end}, + {Time = 0.3, Callback = function(self) self:DisableGrip() end}, + {Time = 3.133, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Reload_Empty_Drum_Fast"] = { + Sequences = {"reload_empty_drum_fast"}, + Length = 2.36, + Fps = 30, + MagLength = 1.46, + NextSequence = "Idle", + Events = { + {Time = 0.95, Callback = function(self) self:DoSpatialSound(Sound("MW_MagazineDrop.Drum"), Vector(-5, 0, 40)) end}, + {Time = 0, Callback = function(self) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_drum_01")) end}, + {Time = 0.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_drum_02")) end}, + {Time = 1.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_drum_03")) end}, + {Time = 1.367, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_drum_04")) end}, + {Time = 1.467, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_drum_05")) end}, + {Time = 1.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_drum_06")) end}, + {Time = 1.833, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_drum_07")) end}, + {Time = 2.133, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_reload_empty_fast_drum_08")) end}, + {Time = 0.033, Callback = function(self) self:DisableGrip() end}, + {Time = 2.1, Callback = function(self) self:EnableGrip() end}, + -- {Time = 0.5, Callback = function(self) self:ResetBullets(self:GetAttachmentModels("Magazine"), self.BulletList) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 60, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoParticle("Ejection", "shell_eject") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.25, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.victor.ads.up")) end} + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.25, + Fps = 45, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.victor.ads.down")) end} + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 39, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Firemode_Auto"] = { + Sequences = {"semi_off"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.victor.selector.off")) end}, + {Time = 0.6, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Firemode_Semi"] = { + Sequences = {"semi_on"}, + Length = 0.75, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("mw19.victor.selector.on")) end}, + {Time = 0.6, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.133, Callback = function(self) self:DisableGrip() end}, + {Time = 4.2, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_inspect_05")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_inspect_02")) end}, + {Time = 2.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_inspect_03")) end}, + {Time = 4.333, Callback = function(self) self:EnableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_inspect_01")) end}, + {Time = 3.333, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_inspect_04")) end}, + + } + }, + + ["Inspect_Smag"] = { + Sequences = {"inspect_smag"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.867, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_inspect_smag_02")) end}, + {Time = 3.5, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_inspect_smag_03")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_inspect_smag_01")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 4.333, Callback = function(self) self:EnableGrip() end}, + + } + }, + + ["Inspect_Drum"] = { + Sequences = {"inspect_drum"}, + Length = 4.366, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.8, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_inspect_drum_02")) end}, + {Time = 0.1, Callback = function(self) self:DisableGrip() end}, + {Time = 4.7, Callback = function(self) self:EnableGrip() end}, + {Time = 4.0, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_inspect_drum_03")) end}, + {Time = 0.067, Callback = function(self) self:DoSound(Sound("ps_wfoly_plr_sm_victor_inspect_drum_01")) end}, + + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Small")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Small")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end} + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_victor/customization.lua b/lua/weapons/mg_victor/customization.lua new file mode 100644 index 0000000..f869302 --- /dev/null +++ b/lua/weapons/mg_victor/customization.lua @@ -0,0 +1,878 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_victor_sup_fire_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG_Sup.Outside"), + Reflection = Sound("Reflection_ARSUP.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Pistol_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sm_victor_perk_soh", "att_perk_fmj", "att_perk_ricochet", "att_perk_rof"}, + + {"attachment_vm_sm_victor_stock", "attachment_vm_sm_victor_stockh", + "attachment_vm_sm_victor_stocks", "attachment_vm_sm_victor_stocksn", + "att_vm_stock_heavy01", "att_vm_stock_heavy02", + "att_vm_stock_light01", "att_vm_stock_medium01", + "att_vm_stock_no"}, + + {"attachment_vm_sm_victor_mag", "attachment_vm_sm_victor_smags", "attachment_vm_sm_victor_drummag"}, + + {"attachment_vm_sm_victor_barrel", "attachment_vm_sm_victor_barlong", + "attachment_vm_sm_victor_barsil"}, + + {"att_muzzle", "att_vm_breacher01", "att_vm_breacher02", "att_vm_compensator01", + "att_vm_compensator02", "att_vm_flashhider01", "att_vm_flashhider02", + "att_vm_flashhider03", "att_vm_flashhider04", "att_vm_muzzlebrake01", + "att_vm_muzzlebrake02", "att_vm_muzzlebrake03", + "att_vm_silencer01", "att_vm_silencer02", "att_vm_silencer03", + "att_vm_silencer04", "att_vm_silencer05", "att_vm_silencer06", "attachment_vm_sm_victor_suppressor"}, + + {"att_sight", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04"}, + + {"att_laser", "attachment_vm_sm_victor_laser01", "attachment_vm_sm_victor_laser02", + "attachment_vm_sm_victor_laser03"}, + + {"att_grip", "attachment_vm_sm_victor_bipodgrip", "attachment_vm_sm_victor_angledgrip01", "attachment_vm_sm_victor_angledgrip02", "attachment_vm_sm_victor_stubbygrip01", + "attachment_vm_sm_victor_stubbygrip02", "attachment_vm_sm_victor_vertgrip01", "attachment_vm_sm_victor_vertgrip02", + "attachment_vm_sm_victor_vertgrip03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) + +-- SWEP.Customization = { +-- ["Barrel"] = { +-- Slot = 2, +-- { +-- Key = "attachment_vm_sm_victor_barrel", +-- }, +-- { +-- Key = "attachment_vm_sm_victor_barlong", +-- Bodygroups = { +-- ["tag_tip"] = 2 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_victor_barsil", +-- Bodygroups = { +-- ["tag_tip"] = 6 +-- }, +-- ExcludedAttachments = { +-- ["Muzzle"] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18} +-- }, +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_barshort_offset") +-- end +-- }, +-- }, + +-- ["Laser"] = { +-- Slot = 6, +-- { +-- Key = "no_laser" +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder01", +-- Bodygroups = { +-- ["tag_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder02", +-- Bodygroups = { +-- ["tag_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.4, 0.265, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_laser_cylinder03", +-- Bodygroups = { +-- ["tag_laser_attach"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_laser_attach", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- } +-- } +-- }, +-- Stats = function(self) +-- self.LaserAimAngles = Angle(-0.3, 0.2, -45) +-- self.LaserAimPos = Vector(-2, 0, 0) +-- end +-- } +-- }, + +-- ["Optic"] = { +-- Slot = 4, +-- { +-- Key = "no_sight", +-- }, +-- { +-- Key = "attachment_vm_minireddot_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_minireddot03_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west02", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, 0) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_east", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.01, 0, 0.095) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.1, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.2) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.01, 0.05, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west03", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.15) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.015, 0.02, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_west04", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.05) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.02, 0.013, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_holo_west_lod0", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.015, 0, -0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0, 0, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_reflex_east", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0, 0, -0.1) +-- self.ViewModelOffsets.Aim.Angles = self.ViewModelOffsets.Aim.Angles + Angle(-0.1, 0.017, 0) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.11, 3, -0.23) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.007, 3, -0.334) +-- end +-- }, +-- { +-- Key = "attachment_vm_4x_west02_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.006, 3, -0.23) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_east_tall", +-- Bodygroups = { +-- ["tag_sight"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 3, -0.16) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_hybrid", +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.002, 3, 0.26) +-- self.HybridAimAngles = Angle(-0.02, 0.02, -45) +-- self.HybridAimPos = Vector(-1.75, 5, 0.75) +-- end +-- }, +-- { +-- Key = "attachment_vm_thermal_west_01", +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 3, 0.275) +-- end +-- }, +-- { +-- Key = "weapon_vm_scope_mike14_alt", +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.008, 5, -0.115) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_scope_vz", +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.003, 5, -0.05) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west", +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(0.005, 3, 0.12) +-- self.HybridAimAngles = Angle(-0.02, 0.02, 0) +-- self.HybridAimPos = Vector(0,2,-1.1) +-- end +-- }, +-- { +-- Key = "attachment_vm_hybrid_west03", +-- Bodygroups = { +-- ["tag_sight"] = 2 +-- }, +-- VElement = { +-- Bone = "tag_reflex", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 0, 0), Angle()}, +-- [3] = {Vector(0, 0, 0), Angle()}, +-- [4] = {Vector(0, 0, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ViewModelOffsets.Aim.Pos = self.ViewModelOffsets.Aim.Pos + Vector(-0.0075, 3, 0.19) +-- self.Zoom.Blur.EyeFocusDistance = 3.5 +-- self.HybridAimAngles = Angle(0, 0.015, -45) +-- self.HybridAimPos = Vector(-1.55, 5, 1) +-- end +-- }, +-- }, + +-- ["Muzzle"] = { +-- Slot = 3, +-- { +-- Key = "no_muzzle" +-- }, +-- { +-- Key = "attachment_vm_flashhider01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_flashhider05", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlebrake04", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_compensator02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_muzzlemelee02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer_east01", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer02", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer03", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_silencer04", +-- VElement = { +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_victor_suppressor", +-- Bodygroups = { +-- ["tag_tip"] = 1 +-- }, +-- VElement = { +-- Bone = "tag_silencer", +-- Position = Vector(0, 0, 0), +-- Angles = Angle(), +-- Offsets = { +-- ["Barrel"] = { +-- [2] = {Vector(0, 9.7, 0), Angle()} +-- } +-- } +-- }, +-- Stats = function(self) +-- doSuppressorStats(self) +-- end +-- } +-- }, + +-- ["Perk"] = { +-- Slot = 1, +-- { +-- Key = "no_perk", +-- }, +-- { +-- Key = "perk_soh", +-- Stats = function(self) +-- self.Animations.Reload = self.Animations.Reload_Fast +-- self.Animations.Reload_Empty = self.Animations.Reload_Empty_Fast +-- self.Animations.Reload_Drum = self.Animations.Reload_Drum_Fast +-- self.Animations.Reload_Empty_Drum = self.Animations.Reload_Empty_Drum_Fast +-- self.Animations.Reload_Smag = self.Animations.Reload_Smag_Fast +-- self.Animations.Reload_Empty_Smag = self.Animations.Reload_Empty_Smag_Fast +-- end +-- }, +-- { +-- Key = "perk_fastmelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_heavymelee", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "perk_fmj", +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Stock"] = { +-- Slot = 7, +-- { +-- Key = "attachment_vm_sm_victor_stock", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_victor_stockh", +-- Bodygroups = { +-- ["tag_stock_attach"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_victor_stocks", +-- Bodygroups = { +-- ["tag_stock_attach"] = 1 +-- }, +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_victor_stocksn", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_victor_stockno", +-- Bodygroups = { +-- ["tag_stock_attach"] = 1 +-- }, +-- Stats = function(self) +-- end +-- } +-- }, + +-- ["Underbarrel"] = { +-- Slot = 8, +-- { +-- Key = "no_underbarrel", +-- }, +-- { +-- Key = "attachment_vm_angledgrip04", +-- Stats = function(self) +-- self:SetGripPoseParameter("grip_ang_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip02_lod0", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip03", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby02", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vert_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby01", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- { +-- Key = "attachment_vm_vertgrip_stubby04", +-- Stats = function(self) +-- self.Animations.Equip = self.Animations.Equip_Grips +-- self:SetGripPoseParameter("grip_vertpro_offset") +-- end +-- }, +-- }, + +-- ["Magazine"] = { +-- Slot = 5, +-- { +-- Key = "attachment_vm_sm_victor_mag", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_victor_smags", +-- Stats = function(self) +-- end +-- }, +-- { +-- Key = "attachment_vm_sm_victor_drummag", +-- Stats = function(self) +-- end +-- }, +-- }, +-- } \ No newline at end of file diff --git a/lua/weapons/mg_victor/shared.lua b/lua/weapons/mg_victor/shared.lua new file mode 100644 index 0000000..c66b921 --- /dev/null +++ b/lua/weapons/mg_victor/shared.lua @@ -0,0 +1,177 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_rifle") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +include("animations.lua") +include("customization.lua") + +SWEP.BulletList = {[0] = "j_bullet1", [1] = "j_bullet2", [2] = "j_bullet3", [3] = "j_bullet4", [4] = "j_bullet5", [5] = "j_bullet6", [6] = "j_bullet7", +[7] = "j_bullet8", [8] = "j_bullet9", [9] = "j_bullet10", [10] = "j_bullet11", [11] = "j_bullet12"} + +if CLIENT then + killicon.Add( "mg_victor", "VGUI/entities/mg_victor", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sm_victor") +end + +SWEP.Base = "mg_base" +SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset", "grip_vertpro_offset", "grip_barshort_offset"} + +SWEP.PrintName = "Fennec" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Submachine Guns" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/v_victor.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_victor.mdl") + +SWEP.Slot = 2 +SWEP.HoldType = "TinyGun" +SWEP.Trigger = { + PressedSound = Sound("weap_victor_fire_first_plr"), + ReleasedSound = Sound("weap_victor_disconnector_plr"), + Time = 0.015 +} + +SWEP.Primary.Sound = Sound("weap_victor_fire_plr") +SWEP.Primary.Ammo = "SMG1" +SWEP.Primary.ClipSize = 30 +SWEP.Primary.Automatic = true +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 1080 +SWEP.CanChamberRound = true + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_pistol", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", +} +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_SMG2.Outside"), + Reflection = Sound("Reflection_Pistol.Outside") + }, + + Inside = { + Layer = Sound("Atmo_SMG.Inside"), + Reflection = Sound("Reflection_Pistol.Inside") + } + } +} + +SWEP.Firemodes = { + [1] = { + Name = "Full Auto", + OnSet = function() + return "Firemode_Auto" + end + }, + + [2] = { + Name = "Semi Auto", + OnSet = function(self) + self.Primary.Automatic = false + self.Primary.RPM = 600 + + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_pistol_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 35, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 100 --degrees per second +} + +SWEP.Cone = { + Hip = 0.17, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 0.032, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.09, --multiply the increase value by this amount while aiming + Max = 1.15, --the cone size will not go beyond this size + Decrease = 0.75, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 6215 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {0.1, -1}, --random value between the 2 + Horizontal = {-1.2, 1.2}, --random value between the 2 + Shake = 1.3, --camera shake + AdsMultiplier = 0.5, --multiply the values by this amount while aiming + Seed = -103 --give this a random number until you like the current recoil pattern +} + +SWEP.Bullet = { + Damage = {24, 10}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 35, --in meters, damage scales within this distance + DropOffStartRange = 12, --in meters, damage will start dropping off after this range + Range = 100, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 1, + Penetration = { + DamageMultiplier = 0.7, --how much damaged is multipled by when leaving a surface. + MaxCount = 2, --how many times the bullet can penetrate. + Thickness = 10, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + Blur = { + EyeFocusDistance = 7.5 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(0,100,-90), + Pos = Vector(2,-4,-2.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 3, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(5, 0, 3), Angles = Angle(40, 0, 0)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-15, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(0, 0, 1.5), Angles = Angle(10, 0, 15)} + } + }, + + RecoilMultiplier = 0.3, + KickMultiplier = 0.3, + AimKickMultiplier = 1.5 +} + +SWEP.Shell = "mwb_shelleject_45" + + +DEFINE_BASECLASS("mg_base") + +-- function SWEP:PostDrawViewModel(vm, weapon, ply) +-- BaseClass.PostDrawViewModel(self, vm, weapon, ply) +-- self:RemoveBulletsBasedOnClip(self:GetAttachmentModels("Magazine"), self.BulletList) +-- end \ No newline at end of file diff --git a/lua/weapons/mg_xmike109/animations.lua b/lua/weapons/mg_xmike109/animations.lua new file mode 100644 index 0000000..db869f9 --- /dev/null +++ b/lua/weapons/mg_xmike109/animations.lua @@ -0,0 +1,288 @@ +AddCSLuaFile() + +SWEP.Animations = { + ["Idle"] = {--idle is a special animation index, movement animations are played when this is on + Sequences = {"idle"}, + Fps = 30, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --does not need NextSequence to loop, it's an exception to the rule + }, + + ["Draw"] = { + Sequences = {"draw"}, + Length = 0.85, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_raise_01")) end}, + } + }, + + ["Holster"] = { + Sequences = {"holster"}, + Length = 1, + Fps = 30, + Events = { + {Time = 0.067, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_drop_01")) end}, + } + }, + + ["Equip"] = { + Sequences = {"draw_First"}, + Length = 1.25, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0.467, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_raise_first_02")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_raise_first_01")) end}, + {Time = 0.9, Callback = function(self) self:EnableGrip() end}, + {Time = 1.033, Callback = function(self) self:EnableGrip() end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_raise_first_03")) end}, + {Time = 0.0, Callback = function(self) self:DisableGrip() end}, + } + }, + + ["Reload"] = { + Sequences = {"reload"}, + Length = 4.4, + MagLength = 3.2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_055")) end}, + {Time = 3.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_06")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_04")) end}, + {Time = 2.867, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_05")) end}, + {Time = 0.9, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_02")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_03")) end}, + {Time = 0.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_01")) end}, + + } + }, + + ["Reload_Fast"] = { + Sequences = {"reload_fast"}, + Length = 2.7, + MagLength = 2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 2.467, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_fast_06")) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_fast_045")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_fast_02")) end}, + {Time = 1.4, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_fast_03")) end}, + {Time = 0.167, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_fast_01")) end}, + {Time = 1.567, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_fast_04")) end}, + {Time = 2.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_fast_05")) end}, + + } + }, + + ["Reload_Empty"] = { + Sequences = {"reload_empty"}, + Length = 5.5, + MagLength = 3.2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 4.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_08")) end}, + {Time = 5.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_09")) end}, + {Time = 1.0, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_02")) end}, + {Time = 1.433, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_03")) end}, + {Time = 0.033, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_01")) end}, + {Time = 3.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_06")) end}, + {Time = 4.267, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_07")) end}, + {Time = 2.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_04")) end}, + {Time = 2.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_05")) end}, + {Time = 3.2, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_055")) end}, + } + }, + + ["Reload_Empty_Fast"] = { + Sequences = {"reload_empty_fast"}, + Length = 3.7, + MagLength = 2, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 1.967, Callback = function(self) end}, + {Time = 1.967, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_fast_045")) end}, + {Time = 3.233, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_fast_07")) end}, + {Time = 2.833, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_fast_06")) end}, + {Time = 1.667, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_fast_04")) end}, + {Time = 2.367, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_fast_05")) end}, + {Time = 0.633, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_fast_02")) end}, + {Time = 1.333, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_fast_03")) end}, + {Time = 0.267, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_fast_01")) end}, + {Time = 3.533, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_reload_empty_fast_08")) end}, + } + }, + + ["Fire"] = { + Sequences = {"fire"}, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Fire_Last"] = { + Sequences = {"fire"}, + Fps = 30, + NextSequence = "Idle", + Events = { + { + Time = 0, + Callback = function(self) + self:DoParticle("MuzzleFlash", "muzzle") + self:DoEjection("shell_eject") + end + }, + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Ads_In"] = { + Sequences = {"ads_in"}, + Length = 0.225, + Fps = 17, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_sn_xmike109_ads_up")) end}, + } + }, + + ["Ads_Out"] = { + Sequences = {"ads_out"}, + Length = 0.225, + Fps = 17, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("weap_sn_xmike109_ads_down")) end}, + } + }, + + ["Sprint_In"] = { + Sequences = {"sprint_in"}, + Fps = 24, + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + --NextSequence = "Sprint_Loop", + }, + + ["Sprint_Loop"] = { + Sequences = {"sprint_loop"}, + Fps = 30, + NextSequence = "Sprint_Loop", --make our state loop + --while sprinting, the playback rate of the viewmodel is scaled with velocity (cod-like behaviour) + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Sprint_Out"] = { + Sequences = {"sprint_out"}, + Length = 0.3, + Fps = 24, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Inspect"] = { + Sequences = {"inspect"}, + Length = 5, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 3.8, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_inspect_03")) end}, + {Time = 0.1, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_inspect_01")) end}, + {Time = 1.767, Callback = function(self) self:DoSound(Sound("wfoly_plr_sn_xmike109_inspect_02")) end}, + } + }, + + ["Jog_Out"] = { + Sequences = {"jog_out"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Jump"] = { + Sequences = {"jump"}, + Fps = 15, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + ["Land"] = { + Sequences = {"jump_land"}, + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:EnableGrip() end}, + {Time = 0, Callback = function(self) self:EnableGrip2() end}, + } + }, + + + ["Melee"] = { + Sequences = {"melee_miss_01", "melee_miss_02", "melee_miss_03"}, + Length = 0.6, --if melee misses + + Size = 15, + Range = 40, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Miss_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, + + ["Melee_Hit"] = { + Sequences = {"melee_hit_01", "melee_hit_02", "melee_hit_03"}, + Length = 0.3, --if melee hits + + Damage = 45, + + Fps = 30, + NextSequence = "Idle", + Events = { + {Time = 0, Callback = function(self) self:DisableGrip() end}, + {Time = 0, Callback = function(self) self:DoSound(Sound("MW_Melee.Flesh_Medium")) end}, + {Time = 0.8, Callback = function(self) self:EnableGrip() end}, + } + }, +} \ No newline at end of file diff --git a/lua/weapons/mg_xmike109/customization.lua b/lua/weapons/mg_xmike109/customization.lua new file mode 100644 index 0000000..7cef2df --- /dev/null +++ b/lua/weapons/mg_xmike109/customization.lua @@ -0,0 +1,55 @@ +AddCSLuaFile() + +function SWEP:doSuppressorStats() + self.Primary.Sound = Sound("weap_xmike109_sup_plr") + self.Reverb = { + RoomScale = 50000, + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper_Sup.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_DMR_Sup.Inside"), + Reflection = Sound("Reflection_ARSUP.Inside") + } + } + } + self.ParticleEffects.MuzzleFlash = "mw_fas2_muzzleflash_suppressed" +end + +function SWEP:doDBStats() +end + +SWEP.Customization = { + {"att_perk", "attachment_vm_sn_xmike109_perk_soh", "att_perk_steadywalk", "att_perk_nodrop", "att_perk_scopesway"}, + + {"attachment_vm_sn_xmike109_stock", "attachment_vm_sn_xmike109_stockl", + "attachment_vm_sn_xmike109_stocks"}, + + {"attachment_vm_sn_xmike109_mag", "attachment_vm_sn_xmike109_calcust1", "attachment_vm_sn_xmike109_calcust2"}, + + {"attachment_vm_sn_xmike109_barrel", "attachment_vm_sn_xmike109_barlong", + "attachment_vm_sn_xmike109_barshort", "attachment_vm_sn_xmike109_barhvy"}, + + {"att_muzzle", "att_vm_hdromeo_compensator01", "att_vm_hdromeo_flashhider01", "att_vm_hdromeo_muzzlebrake01", + "att_vm_hdromeo_muzzlebrake02", "att_vm_hdromeo_silencer01", "att_vm_hdromeo_silencer02", + "att_vm_hdromeo_silencer03", "attachment_vm_sn_xmike109_brake", "attachment_vm_sn_xmike109_silencerlrg"}, + + {"attachment_vm_sn_xmike109_irons", "att_vm_2x_west02_holo", "att_vm_2x_west02", "att_vm_reflex_02", "attachment_vm_sn_xmike109_scope", + "att_vm_minireddot01_tall", "att_vm_minireddot02_tall", "att_vm_minireddot03_tall", + "att_vm_holo_west01", "att_vm_holo_west02", "att_vm_holo_east01", "att_vm_reflex_east01", + "att_vm_reflex_east02_tall", "att_vm_reflex_west02_tall", "att_vm_reflex_west03", + "att_vm_thermal_east01", "att_vm_thermal_west01", "att_vm_thermal_east01_hybrid", + "att_vm_hybrid_west01", "att_vm_hybrid_west03", "att_vm_4x_east01_tall", "att_vm_2x_west01", + "att_vm_4x_west01_tall", "att_vm_4x_west02_tall", "att_vm_reflex_west04", + "att_vm_scope_xmike109", "att_vm_scope_vz"}, + + {"att_laser", "attachment_vm_sn_xmike109_laser01", "attachment_vm_sn_xmike109_laser02", + "attachment_vm_sn_xmike109_laser03"}, +} + +--NECESSARY: it loads custom attachments from other authors +require("mw_utils") +mw_utils.LoadInjectors(SWEP) \ No newline at end of file diff --git a/lua/weapons/mg_xmike109/shared.lua b/lua/weapons/mg_xmike109/shared.lua new file mode 100644 index 0000000..c59910e --- /dev/null +++ b/lua/weapons/mg_xmike109/shared.lua @@ -0,0 +1,178 @@ +AddCSLuaFile() + +PrecacheParticleSystem("AC_muzzle_shotgun") +PrecacheParticleSystem("AC_muzzle_shotgun_db") +PrecacheParticleSystem("AC_muzzle_pistol_suppressed") +PrecacheParticleSystem("AC_muzzle_pistol_ejection") +PrecacheParticleSystem("AC_muzzle_pistol_smoke_barrel") +PrecacheParticleSystem("AC_muzzle_minigun_smoke_barrel") +include("animations.lua") +include("customization.lua") + +if CLIENT then + killicon.Add( "mg_xmike109", "VGUI/entities/mg_xmike109", Color(255, 0, 0, 255)) + SWEP.WepSelectIcon = surface.GetTextureID("VGUI/spawnicons/icon_cac_weapon_sn_xmike109") +end + +-- SWEP.GripPoseParameters = {"grip_ang_offset", "grip_vert_offset"} +-- SWEP.GripPoseParameters2 = {"grip_pistolgrip_offset"} + +SWEP.Base = "mg_base" + +SWEP.PrintName = "Rytec AMR" +SWEP.Category = "Modern Warfare" +SWEP.SubCategory = "Sniper Rifles" +SWEP.Spawnable = true +SWEP.VModel = Model("models/viper/mw/weapons/vm_sn_xmike109.mdl") +SWEP.WorldModel = Model("models/viper/mw/weapons/w_xmike109.mdl") +SWEP.Trigger = { + PressedSound = Sound("weap_delta_fire_first"), + ReleasedSound = Sound("weap_delta_fire_disconnector"), + Time = 0.03 +} + +SWEP.Slot = 3 +SWEP.HoldType = "BigGun" + +SWEP.Primary.Sound = Sound("weap_xmike109_fire_plr") +SWEP.Primary.Ammo = "357" +SWEP.Primary.ClipSize = 10 +SWEP.Primary.Automatic = false +SWEP.Primary.BurstRounds = 1 +SWEP.Primary.BurstDelay = 0 +SWEP.Primary.RPM = 150 +SWEP.CanChamberRound = true +SWEP.CanDisableAimReload = false + + +SWEP.ParticleEffects = { + ["MuzzleFlash"] = "mw_fas2_muzzleflash_slug", + ["MuzzleFlash_DB"] = "mw_fas2_muzzleflash_slug", + ["MuzzleFlash_Suppressed"] = "mw_fas2_muzzleflash_suppressed", + ["Ejection"] = "mw_ins2_shell_eject", + ["Overheating"] = "AC_muzzle_pistol_smoke_barrel", +} +SWEP.Reverb = { + RoomScale = 50000, --(cubic hu) + --how big should an area be before it is categorized as 'outside'? + + Sounds = { + Outside = { + Layer = Sound("Atmo_Sniper3.Outside"), + Reflection = Sound("Reflection_Sniper.Outside") + }, + + Inside = { + Layer = Sound("Atmo_Shotgun.Inside"), + Reflection = Sound("Reflection_Shotgun.Inside") + } + } +} + +SWEP.Firemodes = { + + [1] = { + Name = "Semi-Automatic", + OnSet = function(self) + self.Primary.Automatic = false + return "Firemode_Semi" + end + }, + +} + +SWEP.BarrelSmoke = { + Particle = "AC_muzzle_minigun_smoke_barrel", + Attachment = "muzzle", + ShotTemperatureIncrease = 75, + TemperatureThreshold = 100, --temperature that triggers smoke + TemperatureCooldown = 65 --degrees per second +} + +SWEP.Cone = { + Hip = 2.4, --accuracy while hip + Ads = 0.033, --accuracy while aiming + Increase = 3, --increase cone size by this amount every time we shoot + AdsMultiplier = 0.025, --multiply the increase value by this amount while aiming + Max = 5, --the cone size will not go beyond this size + Decrease = 2, -- amount (in seconds) for the cone to completely reset (from max) + Seed = 3456 --just give this a random number +} + +SWEP.Recoil = { + Vertical = {3, 4}, --random value between the 2 + Horizontal = {-1, 1}, --random value between the 2 + Shake = 5, --camera shake + AdsMultiplier = 0.8, --multiply the values by this amount while aiming + Seed = 4577888, --give this a random number until you like the current recoil pattern + Punch = 3, --recoil will offset the view by this amount (takes vertical, horizontal and adsmul into account) + AdsShakeMultiplier = 1 +} + +SWEP.Bullet = { + Damage = {175, 130}, --first value is damage at 0 meters from impact, second value is damage at furthest point in effective range + EffectiveRange = 300, --in meters, damage scales within this distance + DropOffStartRange = 50, + Range = 350, --in meters, after this distance the bullet stops existing + Tracer = false, --show tracer + NumBullets = 1, --the amount of bullets to fire + PhysicsMultiplier = 1.25, --damage is multiplied by this amount when pushing objects + HeadshotMultiplier = 2, + Penetration = { + DamageMultiplier = 1, --how much damaged is multipled by when leaving a surface. + MaxCount = 6, --how many times the bullet can penetrate. + Thickness = 32, --in hu, how thick an obstacle has to be to stop the bullet. + } +} + +SWEP.Zoom = { + FovMultiplier = 0.95, + ViewModelFovMultiplier = 1, + BreathingMultiplier = 1, + MovementMultiplier = 1, + Blur = { + EyeFocusDistance = 10 + } +} + +SWEP.WorldModelOffsets = { + Bone = "tag_sling", + Angles = Angle(10,5,180), + Pos = Vector(10, -1, -2.5) +} + +SWEP.ViewModelOffsets = { + Aim = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Idle = { + Angles = Angle(0, 0, 0), + Pos = Vector(0, 0, 0) + }, + Inspection = { + Bone = "tag_sling", + X = { + [0] = {Pos = Vector(0, 3, 3), Angles = Angle(40, 0, -30)}, + [1] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 0, 0)} + }, + Y = { + [0] = {Pos = Vector(0, 0, 0), Angles = Angle(-10, 20, 0)}, + [1] = {Pos = Vector(4, 0, 1.5), Angles = Angle(10, -20, 0)} + } + }, + + RecoilMultiplier = 1.75, + KickMultiplier = 3.3, + AimKickMultiplier = 0.45 +} + +SWEP.Shell = "mwb_shelleject_50bmg" + +function SWEP:PrimaryAttack() + local clip = self:Clip1() + weapons.Get(self.Base).PrimaryAttack(self) + if (clip != self:Clip1()) then + self:MakeEnvironmentDust(150) + end +end \ No newline at end of file diff --git a/lua/wos/dynabase/registers/wos_mwii_tdm_registers.lua b/lua/wos/dynabase/registers/wos_mwii_tdm_registers.lua new file mode 100644 index 0000000..8f44892 --- /dev/null +++ b/lua/wos/dynabase/registers/wos_mwii_tdm_registers.lua @@ -0,0 +1,17 @@ +if engine.ActiveGamemode() != "cod_custom" then return end + +hook.Add("InitLoadAnimations", "wOS.DynaBase.GTDM", function() + wOS.DynaBase:RegisterSource({ + Name = "CoD TDM Player Animations", + Type = WOS_DYNABASE.EXTENSION, + Male = "models/tdmg/cod_player_anims.mdl", + Female = "models/tdmg/cod_player_anims.mdl", + Zombie = "models/tdmg/cod_player_anims.mdl", + }) + + hook.Add("PreLoadAnimations", "wOS.DynaBase.GTDM", function(gender) + if gender == WOS_DYNABASE.SHARED then + IncludeModel("models/tdmg/cod_player_anims.mdl") + end + end) +end) \ No newline at end of file