mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
808 lines
45 KiB
Lua
808 lines
45 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
/*--------------------------------------------------
|
|
=============== Autorun File ===============
|
|
*** Copyright (c) 2012-2023 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.
|
|
--------------------------------------------------*/
|
|
------------------ Addon Information ------------------
|
|
local PublicAddonName = "Half-Life Resurgence"
|
|
local AddonName = "Half-Life Resurgence"
|
|
local AddonType = "SNPC"
|
|
local AutorunFile = "autorun/vj_hlr_autorun.lua"
|
|
-------------------------------------------------------
|
|
|
|
local VJExists = file.Exists("lua/autorun/vj_base_autorun.lua", "GAME")
|
|
if VJExists == true then
|
|
include('autorun/vj_controls.lua')
|
|
|
|
if !VJ then VJ = {} end -- If VJ isn't initialized, initialize it!
|
|
|
|
VJ.HLR_VERSION = "1.1.0"
|
|
VJ.HLR_HD_INSTALLED = file.Exists("lua/autorun/vj_hlr_hd_autorun.lua","GAME")
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------ GoldSrc Engine ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
local vCat = "HL Resurgence: GoldSrc"
|
|
VJ.AddCategoryInfo(vCat, {Icon = "vj_hl/icons/hl1.png"})
|
|
|
|
-- Earth
|
|
VJ.AddNPC("Cockroach", "npc_vj_hlr1_cockroach", vCat)
|
|
VJ.AddNPC("Rat", "npc_vj_hlr1_rat", vCat)
|
|
|
|
-- Black Mesa Personnel
|
|
VJ.AddNPC("Security Guard", "npc_vj_hlr1_securityguard", vCat)
|
|
VJ.AddNPC("Scientist", "npc_vj_hlr1_scientist", vCat)
|
|
-- Blue Shift
|
|
VJ.AddNPC("Dr. Rosenberg", "npc_vj_hlrbs_rosenberg", vCat)
|
|
-- Opposing Force
|
|
VJ.AddNPC("Cleansuit Scientist", "npc_vj_hlrof_cleansuitsci", vCat)
|
|
VJ.AddNPC("Otis Laurey", "npc_vj_hlrof_otis", vCat)
|
|
-- Decay
|
|
VJ.AddNPC("Dr. Richard Keller", "npc_vj_hlrdc_keller", vCat)
|
|
-- Alpha
|
|
VJ.AddNPC("Alpha Security Guard", "npc_vj_hlr1a_securityguard", vCat)
|
|
VJ.AddNPC("Alpha Scientist", "npc_vj_hlr1a_scientist", vCat)
|
|
VJ.AddNPC("Ivan the Space Biker", "npc_vj_hlr1a_ivan", vCat)
|
|
VJ.AddNPC("Probe Droid", "npc_vj_hlr1a_probedroid", vCat)
|
|
|
|
-- Black Mesa Weaponry
|
|
VJ.AddNPC("Black Mesa Ground Turret", "npc_vj_hlr1_gturret", vCat)
|
|
VJ.AddNPC("Black Mesa Ground Turret (Mini)", "npc_vj_hlr1_gturret_mini", vCat)
|
|
VJ.AddNPC("Black Mesa Ceiling Turret", "npc_vj_hlr1_cturret", vCat, false, function(x) x.OnCeiling = true x.Offset = 0 end)
|
|
VJ.AddNPC("Black Mesa Ceiling Turret (Mini)", "npc_vj_hlr1_cturret_mini", vCat, false, function(x) x.OnCeiling = true x.Offset = 0 end)
|
|
|
|
-- HECU
|
|
VJ.AddNPC("Human Grunt", "npc_vj_hlr1_hgrunt", vCat)
|
|
VJ.AddNPC("Human Sergeant", "npc_vj_hlr1_hgrunt_serg", vCat)
|
|
VJ.AddNPC("Robot Grunt", "npc_vj_hlr1_rgrunt", vCat)
|
|
VJ.AddNPC("HECU Sentry Gun", "npc_vj_hlr1_sentry", vCat)
|
|
VJ.AddNPC("M2A3 Bradley", "npc_vj_hlr1_m2a3bradley", vCat)
|
|
VJ.AddNPC("M1A1 Abrams", "npc_vj_hlr1_m1a1abrams", vCat)
|
|
VJ.AddNPC("AH-64 Apache", "npc_vj_hlr1_apache", vCat)
|
|
VJ.AddNPC("V-22 Osprey", "npc_vj_hlr1_osprey", vCat)
|
|
-- Opposing Force
|
|
VJ.AddNPC("Human Grunt (OppF)", "npc_vj_hlrof_hgrunt", vCat)
|
|
VJ.AddNPC("Human Grunt Medic (OppF)", "npc_vj_hlrof_hgrunt_med", vCat)
|
|
VJ.AddNPC("Human Grunt Engineer (OppF)", "npc_vj_hlrof_hgrunt_eng", vCat)
|
|
-- Decay
|
|
VJ.AddNPC("HECU Sentry Gun (Decay)", "npc_vj_hlrdc_sentry", vCat)
|
|
-- Alpha
|
|
VJ.AddNPC("Alpha Human Grunt", "npc_vj_hlr1a_hgrunt", vCat)
|
|
VJ.AddNPC("Alpha Human Sergeant", "npc_vj_hlr1a_hgrunt_serg", vCat)
|
|
VJ.AddNPC("Alpha Human Sergeant (Melee)", "npc_vj_hlr1a_hgrunt_sergm", vCat)
|
|
|
|
-- Black Ops
|
|
VJ.AddNPC("Black Ops Female Assassin", "npc_vj_hlr1_assassin_female", vCat)
|
|
VJ.AddNPC("Black Ops Male Assassin", "npc_vj_hlrof_assassin_male", vCat)
|
|
VJ.AddNPC("Black Ops Robot Assassin", "npc_vj_hlrof_assassin_rgrunt", vCat)
|
|
VJ.AddNPC("Black Ops AH-64 Apache", "npc_vj_hlrof_assassin_apache", vCat)
|
|
VJ.AddNPC("Black Ops V-22 Osprey", "npc_vj_hlrof_assassin_osprey", vCat)
|
|
|
|
-- Xen
|
|
VJ.AddNPC("Gonarch", "npc_vj_hlr1_gonarch", vCat)
|
|
VJ.AddNPC("Headcrab", "npc_vj_hlr1_headcrab", vCat)
|
|
VJ.AddNPC("Headcrab (Baby)", "npc_vj_hlr1_headcrab_baby", vCat)
|
|
VJ.AddNPC("Zombie", "npc_vj_hlr1_zombie", vCat)
|
|
VJ.AddNPC("Flocking Floater", "npc_vj_hlr1_floater", vCat)
|
|
//VJ.AddNPC("Stukabat", "npc_vj_hlr1_stukabat", vCat)
|
|
VJ.AddNPC("Alien Controller", "npc_vj_hlr1_aliencontroller", vCat)
|
|
VJ.AddNPC("Alien Grunt", "npc_vj_hlr1_aliengrunt", vCat)
|
|
VJ.AddNPC("Alien Slave", "npc_vj_hlr1_alienslave", vCat)
|
|
VJ.AddNPC("Bullsquid", "npc_vj_hlr1_bullsquid", vCat)
|
|
VJ.AddNPC("Gargantua", "npc_vj_hlr1_garg", vCat)
|
|
VJ.AddNPC("Houndeye", "npc_vj_hlr1_houndeye", vCat)
|
|
VJ.AddNPC("Kingpin", "npc_vj_hlr1_kingpin", vCat)
|
|
VJ.AddNPC("Snark", "npc_vj_hlr1_snark", vCat)
|
|
VJ.AddNPC("Snark Nest", "npc_vj_hlr1_snarknest", vCat)
|
|
VJ.AddNPC("Ichthyosaur", "npc_vj_hlr1_ichthyosaur", vCat)
|
|
VJ.AddNPC("Archer", "npc_vj_hlr1_archer", vCat)
|
|
VJ.AddNPC("Leech", "npc_vj_hlr1_leech", vCat)
|
|
VJ.AddNPC("Chumtoad", "npc_vj_hlr1_chumtoad", vCat)
|
|
VJ.AddNPC("Boid", "npc_vj_hlr1_boid", vCat)
|
|
VJ.AddNPC("AFlock", "npc_vj_hlr1_aflock", vCat)
|
|
VJ.AddNPC("Protozoan", "npc_vj_hlr1_protozoan", vCat)
|
|
VJ.AddNPC("Tentacle", "npc_vj_hlr1_tentacle", vCat)
|
|
VJ.AddNPC("Panther Eye", "npc_vj_hlr1_panthereye", vCat)
|
|
VJ.AddNPC("Control Sphere", "npc_vj_hlr1_controlsphere", vCat)
|
|
VJ.AddNPC("Mr. Friendly", "npc_vj_hlr1_mrfriendly", vCat)
|
|
VJ.AddNPC("Nihilanth", "npc_vj_hlr1_nihilanth", vCat)
|
|
VJ.AddNPC("Barnacle", "npc_vj_hlr1_barnacle", vCat, false, function(x) x.OnCeiling = true x.Offset = 0 end)
|
|
VJ.AddNPC("Xen Tree", "npc_vj_hlr1_xen_tree", vCat)
|
|
VJ.AddNPC("Xen Hair", "sent_vj_xen_hair", vCat)
|
|
VJ.AddNPC("Xen Spore (Large)", "sent_vj_xen_spore_large", vCat)
|
|
VJ.AddNPC("Xen Spore (Medium)", "sent_vj_xen_spore_medium", vCat)
|
|
VJ.AddNPC("Xen Spore (Small)", "sent_vj_xen_spore_small", vCat)
|
|
VJ.AddNPC("Xen Plant Light", "sent_vj_xen_plant_light", vCat)
|
|
VJ.AddNPC("Xen Crystal", "sent_vj_xen_crystal", vCat)
|
|
VJ.AddNPC("Xen Sentry Cannon", "npc_vj_hlr1_xen_cannon", vCat)
|
|
VJ.AddNPC("Xen Ceiling Turret", "npc_vj_hlr1_xen_turretc", vCat, false, function(x) x.OnCeiling = true x.Offset = 0 end)
|
|
-- Spawners
|
|
VJ.AddNPC("Portal (Xen)", "sent_vj_hlr_alientp", vCat)
|
|
VJ.AddNPC("Portal (Race X)", "sent_vj_hlr_alientp_x", vCat)
|
|
-- Alpha
|
|
VJ.AddNPC("Alpha Alien Grunt", "npc_vj_hlr1a_aliengrunt", vCat)
|
|
VJ.AddNPC("Alpha Zombie", "npc_vj_hlr1a_zombie", vCat)
|
|
VJ.AddNPC("Alpha Headcrab", "npc_vj_hlr1a_headcrab", vCat)
|
|
VJ.AddNPC("Alpha Bullsquid", "npc_vj_hlr1a_bullsquid", vCat)
|
|
VJ.AddNPC("Alpha Houndeye", "npc_vj_hlr1a_houndeye", vCat)
|
|
-- Dreamcast
|
|
VJ.AddNPC("Bullsquid (Dreamcast)", "npc_vj_hlrdc_bullsquid", vCat)
|
|
-- Opposing Force
|
|
VJ.AddNPC("Zombie Security Guard", "npc_vj_hlrof_zombie_sec", vCat)
|
|
VJ.AddNPC("Zombie Soldier", "npc_vj_hlrof_zombie_soldier", vCat)
|
|
VJ.AddNPC("Gonome", "npc_vj_hlrof_gonome", vCat)
|
|
VJ.AddNPC("Penguin", "npc_vj_hlrof_penguin", vCat)
|
|
VJ.AddNPC("Penguin Nest", "npc_vj_hlrof_penguinnest", vCat)
|
|
-- Sven Co-Op
|
|
VJ.AddNPC("Gargantua (Baby)", "npc_vj_hlrsv_garg_baby", vCat)
|
|
VJ.AddNPC("Tor", "npc_vj_hlrsv_tor", vCat)
|
|
|
|
-- Race X (Opposing Force)
|
|
VJ.AddNPC("Shock Trooper", "npc_vj_hlrof_shocktrooper", vCat)
|
|
VJ.AddNPC("Shock Roach", "npc_vj_hlrof_shockroach", vCat)
|
|
VJ.AddNPC("Pit Drone", "npc_vj_hlrof_pitdrone", vCat)
|
|
VJ.AddNPC("Pit Worm", "npc_vj_hlrof_pitworm", vCat)
|
|
VJ.AddNPC("Voltigore", "npc_vj_hlrof_voltigore", vCat)
|
|
VJ.AddNPC("Voltigore (Baby)", "npc_vj_hlrof_voltigore_baby", vCat)
|
|
VJ.AddNPC("Gene Worm", "npc_vj_hlrof_geneworm", vCat)
|
|
|
|
-- Unknown
|
|
VJ.AddNPC("G-Man", "npc_vj_hlr1_gman", vCat)
|
|
-- Alpha
|
|
--VJ.AddNPC("Poly Robo", "npc_vj_hlr1a_techdemorobot", vCat) -- doesn't exist yet
|
|
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------ Source Engine ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
vCat = "HL Resurgence: Source"
|
|
VJ.AddCategoryInfo(vCat, {Icon = "vj_hl/icons/hl2.png"})
|
|
|
|
-- Earth + Resistance
|
|
VJ.AddNPC("Citizen", "npc_vj_hlr2_citizen", vCat)
|
|
VJ.AddNPC_HUMAN("Refugee", "npc_vj_hlr2_refugee", {"weapon_vj_crowbar", "weapon_vj_357", "weapon_vj_9mmpistol", "weapon_vj_glock17", "weapon_vj_smg1"}, vCat)
|
|
VJ.AddNPC_HUMAN("Rebel Engineer", "npc_vj_hlr2_rebel_engineer", {"weapon_vj_spas12", "weapon_vj_hlr2_chargebow"}, vCat)
|
|
VJ.AddNPC_HUMAN("Rebel", "npc_vj_hlr2_rebel", {
|
|
-- 5 = Very common, 4 = Common, 3 = Uncommon, 2 = Rare, 1 = Very rare
|
|
"weapon_vj_smg1",
|
|
"weapon_vj_smg1",
|
|
"weapon_vj_smg1",
|
|
"weapon_vj_smg1",
|
|
"weapon_vj_smg1",
|
|
"weapon_vj_ar2",
|
|
"weapon_vj_ar2",
|
|
"weapon_vj_ar2",
|
|
"weapon_vj_ar2",
|
|
"weapon_vj_spas12",
|
|
"weapon_vj_spas12",
|
|
"weapon_vj_spas12",
|
|
"weapon_vj_ak47",
|
|
"weapon_vj_ak47",
|
|
"weapon_vj_ak47",
|
|
"weapon_vj_m16a1",
|
|
"weapon_vj_m16a1",
|
|
"weapon_vj_m16a1",
|
|
"weapon_vj_k3",
|
|
"weapon_vj_k3",
|
|
"weapon_vj_k3",
|
|
"weapon_vj_crossbow",
|
|
"weapon_vj_crossbow",
|
|
"weapon_vj_mp40",
|
|
"weapon_vj_mp40",
|
|
"weapon_vj_hlr2b_oicw",
|
|
"weapon_vj_hlr2b_oicw",
|
|
"weapon_vj_9mmpistol",
|
|
"weapon_vj_9mmpistol",
|
|
"weapon_vj_357",
|
|
"weapon_vj_357",
|
|
"weapon_vj_glock17",
|
|
"weapon_vj_glock17",
|
|
"weapon_vj_ssg08",
|
|
"weapon_vj_rpg",
|
|
"weapon_vj_hlr2_rpg"}, vCat)
|
|
VJ.AddNPC_HUMAN("Alyx Vance", "npc_vj_hlr2_alyx", {"weapon_vj_hlr2_alyxgun"}, vCat)
|
|
VJ.AddNPC_HUMAN("Barney Calhoun", "npc_vj_hlr2_barney", {"weapon_vj_smg1", "weapon_vj_smg1", "weapon_vj_smg1", "weapon_vj_ar2", "weapon_vj_ar2", "weapon_vj_spas12"}, vCat)
|
|
VJ.AddNPC_HUMAN("Father Grigori", "npc_vj_hlr2_father_grigori", {"weapon_vj_hlr2_annabelle"}, vCat)
|
|
VJ.AddNPC("Resistance Sentry Gun", "npc_vj_hlr2_res_sentry", vCat)
|
|
-- Beta
|
|
VJ.AddNPC("Merkava", "npc_vj_hlr2b_merkava", vCat)
|
|
|
|
-- Combine
|
|
VJ.AddNPC_HUMAN("Overwatch Soldier", "npc_vj_hlr2_com_soldier", {"weapon_vj_smg1", "weapon_vj_smg1", "weapon_vj_smg1", "weapon_vj_smg1", "weapon_vj_ar2"}, vCat)
|
|
VJ.AddNPC_HUMAN("Overwatch Shotgun Soldier", "npc_vj_hlr2_com_shotgunner", {"weapon_vj_spas12"}, vCat)
|
|
VJ.AddNPC_HUMAN("Overwatch Elite", "npc_vj_hlr2_com_elite", {"weapon_vj_ar2"}, vCat)
|
|
VJ.AddNPC_HUMAN("Overwatch Prison Guard", "npc_vj_hlr2_com_prospekt", {"weapon_vj_smg1", "weapon_vj_smg1", "weapon_vj_ar2", "weapon_vj_ar2"}, vCat)
|
|
VJ.AddNPC_HUMAN("Overwatch Prison Shotgun Guard", "npc_vj_hlr2_com_prospekt_sg", {"weapon_vj_spas12"}, vCat)
|
|
VJ.AddNPC_HUMAN("Overwatch Sniper", "npc_vj_hlr2_com_sniper", {"weapon_vj_hlr2_csniper"}, vCat)
|
|
VJ.AddNPC_HUMAN("Overwatch Engineer", "npc_vj_hlr2_com_engineer", {"weapon_vj_hlr2_reager"}, vCat)
|
|
VJ.AddNPC_HUMAN("Civil Protection", "npc_vj_hlr2_com_civilp", {"weapon_vj_9mmpistol", "weapon_vj_9mmpistol", "weapon_vj_smg1"}, vCat)
|
|
VJ.AddNPC("Combine Sentry Gun", "npc_vj_hlr2_com_sentry", vCat)
|
|
-- Beta
|
|
VJ.AddNPC_HUMAN("Overwatch Soldier (Beta)", "npc_vj_hlr2b_com_soldier", {"weapon_vj_hlr2b_oicw"}, vCat)
|
|
VJ.AddNPC_HUMAN("Civil Protection Elite", "npc_vj_hlr2b_com_civilp_elite", {"weapon_vj_smg1"}, vCat) -- Class name should be changed
|
|
|
|
vCat = "Half-Life Resurgence"
|
|
-- NPC Weapons
|
|
VJ.AddNPCWeapon("VJ_Combine_Sniper", "weapon_vj_hlr2_csniper", vCat)
|
|
VJ.AddNPCWeapon("VJ_Annabelle", "weapon_vj_hlr2_annabelle", vCat)
|
|
VJ.AddNPCWeapon("VJ_Alyx_Gun", "weapon_vj_hlr2_alyxgun", vCat)
|
|
VJ.AddNPCWeapon("VJ_Charge_Bow", "weapon_vj_hlr2_chargebow", vCat)
|
|
VJ.AddNPCWeapon("VJ_Combine_Reager", "weapon_vj_hlr2_reager", vCat)
|
|
VJ.AddNPCWeapon("VJ_StunStick", "weapon_vj_hlr2_stunstick", vCat)
|
|
VJ.AddNPCWeapon("VJ_RPG_Resistance", "weapon_vj_hlr2_rpg", vCat)
|
|
-- Beta
|
|
VJ.AddNPCWeapon("VJ_OICW", "weapon_vj_hlr2b_oicw", vCat)
|
|
|
|
-- Player Weapons
|
|
VJ.AddCategoryInfo(vCat, {Icon = "vj_hl/icons/hl2.png"})
|
|
VJ.AddWeapon("Combine Sniper", "weapon_vj_hlr2_csniper", false, vCat)
|
|
VJ.AddWeapon("Alyx Gun", "weapon_vj_hlr2_alyxgun", false, vCat)
|
|
VJ.AddWeapon("Charge Bow", "weapon_vj_hlr2_chargebow", false, vCat)
|
|
VJ.AddWeapon("Resistance RPG", "weapon_vj_hlr2_rpg", false, vCat)
|
|
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------ Decals ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
-- Blood
|
|
game.AddDecal("VJ_HLR_Blood_Red", {"vj_hl/decals/hl_blood01", "vj_hl/decals/hl_blood02", "vj_hl/decals/hl_blood03", "vj_hl/decals/hl_blood04", "vj_hl/decals/hl_blood05", "vj_hl/decals/hl_blood06", "vj_hl/decals/hl_blood07", "vj_hl/decals/hl_blood08"})
|
|
game.AddDecal("VJ_HLR_Blood_Red_Large", {"vj_hl/decals/hl_bigblood01", "vj_hl/decals/hl_bigblood02"})
|
|
game.AddDecal("VJ_HLR_Blood_Yellow", {"vj_hl/decals/hl_yblood01", "vj_hl/decals/hl_yblood02", "vj_hl/decals/hl_yblood03", "vj_hl/decals/hl_yblood04", "vj_hl/decals/hl_yblood05", "vj_hl/decals/hl_yblood06"})
|
|
game.AddDecal("VJ_HLR_Blood_Yellow_Large", {"vj_hl/decals/hl_bigyblood01", "vj_hl/decals/hl_bigyblood02"})
|
|
-- Spits
|
|
-- game.AddDecal("VJ_HLR_Spit_Acid", {"vj_hl/decals/spit1", "vj_hl/decals/spit2"})
|
|
game.AddDecal("VJ_HLR_Spit_Red", {"vj_hl/decals/spit1_red", "vj_hl/decals/spit2_red"})
|
|
game.AddDecal("VJ_HLR_Spit_Acid", {"vj_hl/decals/spit1_green", "vj_hl/decals/spit2_green"})
|
|
//game.AddDecal("VJ_HLR_Spit_Gonarch", {"vj_hl/decals/gonarch"})
|
|
game.AddDecal("VJ_HLR_Gonarch_Blob", {"vj_hl/decals/mommablob"})
|
|
-- Scorchs
|
|
game.AddDecal("VJ_HLR_Scorch", {"vj_hl/decals/scorch1", "vj_hl/decals/scorch2", "vj_hl/decals/scorch3"})
|
|
game.AddDecal("VJ_HLR_Scorch_Small", {"vj_hl/decals/smscorch1", "vj_hl/decals/smscorch2", "vj_hl/decals/smscorch3"})
|
|
game.AddDecal("VJ_HLR_Gargantua_Stomp", {"vj_hl/decals/gargstomp"})
|
|
-- Bullet Holes
|
|
game.AddDecal("VJ_HLR_Bullet_Hole", {"vj_hl/decals/shot1", "vj_hl/decals/shot2", "vj_hl/decals/shot3", "vj_hl/decals/shot4", "vj_hl/decals/shot5"})
|
|
/*
|
|
function SWEP:CustomOnPrimaryAttack_BulletCallback(attacker, tr, dmginfo)
|
|
util.Decal("VJ_HLR_Bullet_Hole", tr.HitPos + tr.HitNormal, tr.HitPos - tr.HitNormal)
|
|
end
|
|
*/
|
|
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------ Particles ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
VJ.AddParticle("particles/vj_hlr_blood.pcf", {
|
|
"vj_hlr_blood_red",
|
|
"vj_hlr_blood_red_large",
|
|
"vj_hlr_blood_yellow",
|
|
"vj_hlr_blood_yellow_large",
|
|
"vj_hlr_blood_boob_red",
|
|
"vj_hlr_blood_boob_yellow",
|
|
})
|
|
VJ.AddParticle("particles/vj_hlr_garg_flame.pcf", {
|
|
"vj_hlr_garg_flame",
|
|
"vj_hlr_garg_flame_small",
|
|
})
|
|
VJ.AddParticle("particles/vj_hlr_shocktrooper.pcf", {
|
|
"vj_hlr_shockroach_muzzle",
|
|
"vj_hlr_shockroach",
|
|
"vj_hlr_shockroach_aura",
|
|
"vj_hlr_shockroach_bright",
|
|
"vj_hlr_shockroach_trail",
|
|
})
|
|
VJ.AddParticle("particles/vj_hlr_spore.pcf", {
|
|
"vj_hlr_spore",
|
|
"vj_hlr_spore_b",
|
|
"vj_hlr_spore_c",
|
|
"vj_hlr_spore_small",
|
|
"vj_hlr_spore_small_b",
|
|
"vj_hlr_spore_small_c",
|
|
"vj_hlr_spore_idle",
|
|
"vj_hlr_spore_idle_b",
|
|
"vj_hlr_spore_idle_c",
|
|
"vj_hlr_spore_idle_small",
|
|
"vj_hlr_spore_idle_small_b",
|
|
"vj_hlr_spore_idle_small_c",
|
|
})
|
|
VJ.AddParticle("particles/vj_hlr_spit.pcf", {
|
|
"vj_hlr_spit_drone",
|
|
"vj_hlr_spit_drone_impact",
|
|
"vj_hlr_spit_drone_spawn",
|
|
"vj_hlr_spit_drone_spawn_old",
|
|
"vj_hlr_spit_gonarch",
|
|
"vj_hlr_spit_gonarch_impact",
|
|
"vj_hlr_spit_friendly",
|
|
"vj_hlr_spit_friendly_b",
|
|
"vj_hlr_spit_friendly_impact",
|
|
"vj_hlr_spit_friendly_old",
|
|
"vj_hlr_spit_friendly_b_old",
|
|
"vj_hlr_spit_friendly_impact_old",
|
|
"vj_hlr_spit_stukabat",
|
|
"vj_hlr_spit_stukabat_impact",
|
|
"vj_hlr_spit_red_spawn", // Used for gnome
|
|
"vj_hlr_spit_spawn", // Used for bullsquid
|
|
})
|
|
VJ.AddParticle("particles/vj_hlr_torch.pcf", {
|
|
"vj_hlr_torch",
|
|
})
|
|
VJ.AddParticle("particles/vj_hlr_garg_stomp.pcf", {
|
|
"vj_hlr_garg_stomp",
|
|
})
|
|
VJ.AddParticle("particles/vj_hlr_nihilanth.pcf", {
|
|
"vj_hlr_nihilanth_chargeorb",
|
|
"vj_hlr_nihilanth_deathorbs",
|
|
"vj_hlr_nihilanth_deathorbs_white",
|
|
})
|
|
VJ.AddParticle("particles/vj_hlr_geneworm.pcf", {
|
|
"vj_hlr_geneworm_spit",
|
|
"vj_hlr_geneworm_spit_b",
|
|
})
|
|
VJ.AddParticle("particles/electrical_fx.pcf", {
|
|
"electrical_arc_01", -- Used for the Combine Reager
|
|
})
|
|
-- Unused (They don't appear properly in-game)
|
|
VJ.AddParticle("particles/vj_hlr_muzzle.pcf", {
|
|
"vj_hl_muz1", -- Tau
|
|
"vj_hl_muz2", -- HD pistol
|
|
"vj_hl_muz3", -- HD MP5
|
|
"vj_hl_muz4", -- HD Hornet
|
|
"vj_hl_muz5", -- LD Hornet 1
|
|
"vj_hl_muz6", -- LD Hornet 2
|
|
"vj_hl_muz7", -- HD Hornet 2?
|
|
"vj_hl_muz8", -- HD Brush turret
|
|
"vj_hl_muzzle1", -- LD Pistol (Also used by LD brush turret, I'll make another one that's bigger)
|
|
"vj_hl_muzzle2", -- LD MP5
|
|
"vj_hl_muzzle3", -- LD Shotgun
|
|
"vj_hl_muzzle4", -- HD Pistol 2?
|
|
"vj_hl_muzzlebigturret",
|
|
})
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------ Precaches ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
util.PrecacheModel("models/vj_hlr/gibs/agib1.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/agib2.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/agib3.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/agib4.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/agib5.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/agib6.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/agib7.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/agib8.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/agib9.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/agib10.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/flesh1.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/flesh2.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/flesh3.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/flesh4.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/hgib_b_bone.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/hgib_b_gib.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/hgib_guts.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/hgib_hmeat.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/hgib_lung.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/hgib_skull.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/hgib_legbone.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/gib_hgrunt.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/zombiegib.mdl")
|
|
util.PrecacheModel("models/vj_hlr/gibs/islavegib.mdl")
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------ Functions & Hooks ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
function VJ_HLR_Effect_PortalSpawn(pos, size, color)
|
|
size = size or 1.5
|
|
color = color or "77 210 130" -- TODO: Not implemented yet!
|
|
local ent = ents.Create("env_sprite")
|
|
ent:SetKeyValue("model", "vj_hl/sprites/fexplo1.vmt")
|
|
ent:SetKeyValue("GlowProxySize", "2.0")
|
|
ent:SetKeyValue("HDRColorScale", "1.0")
|
|
ent:SetKeyValue("rendercolor", color)
|
|
ent:SetKeyValue("renderfx", "14")
|
|
ent:SetKeyValue("rendermode", "3")
|
|
ent:SetKeyValue("renderamt", "255")
|
|
ent:SetKeyValue("disablereceiveshadows", "0")
|
|
ent:SetKeyValue("mindxlevel", "0")
|
|
ent:SetKeyValue("maxdxlevel", "0")
|
|
ent:SetKeyValue("framerate", "10.0")
|
|
ent:SetKeyValue("spawnflags", "0")
|
|
ent:SetKeyValue("scale", ""..size)
|
|
ent:SetPos(pos)
|
|
ent:Spawn()
|
|
|
|
sound.Play("vj_hlr/fx/beamstart"..math.random(1, 2)..".wav", pos, 85)
|
|
return ent
|
|
end
|
|
|
|
function VJ_HLR_Effect_Explosion(pos, type, size, color)
|
|
size = size or 1
|
|
color = color or "255 255 255"
|
|
type = type or 1
|
|
local spr = ents.Create("env_sprite")
|
|
spr:SetKeyValue("model", type == 1 && "vj_hl/sprites/zerogxplode.vmt" or "vj_hl/sprites/fexplo1.vmt")
|
|
spr:SetKeyValue("GlowProxySize", "2.0")
|
|
spr:SetKeyValue("HDRColorScale", "1.0")
|
|
spr:SetKeyValue("rendercolor", color)
|
|
spr:SetKeyValue("renderfx", "14")
|
|
spr:SetKeyValue("rendermode", "5")
|
|
spr:SetKeyValue("renderamt", "255")
|
|
spr:SetKeyValue("disablereceiveshadows", "0")
|
|
spr:SetKeyValue("mindxlevel", "0")
|
|
spr:SetKeyValue("maxdxlevel", "0")
|
|
spr:SetKeyValue("framerate", "15.0")
|
|
spr:SetKeyValue("spawnflags", "0")
|
|
spr:SetKeyValue("scale", ""..size)
|
|
spr:SetPos(pos)
|
|
spr:Spawn()
|
|
spr:Fire("Kill", "", 0.9)
|
|
|
|
sound.Play("vj_hlr/hl1_weapon/explosion/explode"..math.random(1, 3)..".wav", pos, 150)
|
|
return spr
|
|
end
|
|
|
|
local defGibs_Yellow = {"models/vj_hlr/gibs/agib1.mdl", "models/vj_hlr/gibs/agib2.mdl", "models/vj_hlr/gibs/agib3.mdl", "models/vj_hlr/gibs/agib4.mdl", "models/vj_hlr/gibs/agib5.mdl", "models/vj_hlr/gibs/agib6.mdl", "models/vj_hlr/gibs/agib7.mdl", "models/vj_hlr/gibs/agib8.mdl", "models/vj_hlr/gibs/agib9.mdl", "models/vj_hlr/gibs/agib10.mdl"}
|
|
local defGibs_Red = {"models/vj_hlr/gibs/flesh1.mdl", "models/vj_hlr/gibs/flesh2.mdl", "models/vj_hlr/gibs/flesh3.mdl", "models/vj_hlr/gibs/flesh4.mdl", "models/vj_hlr/gibs/hgib_b_bone.mdl", "models/vj_hlr/gibs/hgib_b_gib.mdl", "models/vj_hlr/gibs/hgib_guts.mdl", "models/vj_hlr/gibs/hgib_hmeat.mdl", "models/vj_hlr/gibs/hgib_lung.mdl", "models/vj_hlr/gibs/hgib_skull.mdl", "models/vj_hlr/gibs/hgib_legbone.mdl"}
|
|
function VJ_HLR_ApplyCorpseEffects(ent, corpse, gibTbl, extraOptions)
|
|
extraOptions = extraOptions or {} -- CollideSound, ExpSound, Gibbable, CanBleed, ExtraGibs
|
|
corpse.HLR_Corpse = true
|
|
corpse.HLR_Corpse_Type = ent.BloodColor
|
|
if ent.HasBloodParticle then corpse.HLR_Corpse_Particle = ent.CustomBlood_Particle end
|
|
corpse.HLR_Corpse_Decal = ent.HasBloodDecal and VJ_PICK(ent.CustomBlood_Decal) or ""
|
|
corpse.HLR_Corpse_Gibbable = extraOptions.Gibbable != false
|
|
if !gibTbl then
|
|
if corpse.HLR_Corpse_Type == "Yellow" then
|
|
gibTbl = defGibs_Yellow
|
|
elseif corpse.HLR_Corpse_Type == "Red" then
|
|
gibTbl = defGibs_Red
|
|
end
|
|
end
|
|
if extraOptions.ExtraGibs then
|
|
gibTbl = table.Copy(gibTbl) -- So Lua doesn't override the localized tables above
|
|
gibTbl = table.Add(gibTbl, extraOptions.ExtraGibs)
|
|
end
|
|
corpse.HLR_Corpse_Gibs = gibTbl
|
|
corpse.HLR_Corpse_CollideSound = extraOptions.CollideSound or "Default"
|
|
corpse.HLR_Corpse_ExpSound = extraOptions.ExpSound or "vj_gib/default_gib_splat.wav"
|
|
corpse.HLR_Corpse_StartT = CurTime() + 1
|
|
end
|
|
|
|
local defPos = Vector(0, 0, 0)
|
|
local colorYellow = VJ_Color2Byte(Color(255, 221, 35))
|
|
local colorRed = VJ_Color2Byte(Color(130, 19, 10))
|
|
hook.Add("EntityTakeDamage", "VJ_HLR_EntityTakeDamage", function(target, dmginfo)
|
|
if target.HLR_Corpse && !target.Dead && CurTime() > target.HLR_Corpse_StartT && target:GetColor().a > 50 then
|
|
local dmgForce = dmginfo:GetDamageForce()
|
|
|
|
-- Blood hit effects & decals
|
|
if GetConVar("vj_hlr1_corpse_effects"):GetInt() == 1 then
|
|
local pos = dmginfo:GetDamagePosition()
|
|
if pos == defPos then pos = target:GetPos() + target:OBBCenter() end
|
|
|
|
-- Blood particle
|
|
local part = VJ_PICK(target.HLR_Corpse_Particle)
|
|
if part then
|
|
local particle = ents.Create("info_particle_system")
|
|
particle:SetKeyValue("effect_name", part)
|
|
particle:SetPos(pos)
|
|
particle:Spawn()
|
|
particle:Activate()
|
|
particle:Fire("Start")
|
|
particle:Fire("Kill", "", 0.1)
|
|
end
|
|
|
|
-- Blood decal
|
|
local decal = VJ_PICK(target.HLR_Corpse_Decal)
|
|
if decal then
|
|
local tr = util.TraceLine({start = pos, endpos = pos + dmgForce:GetNormal() * math.Clamp(dmgForce:Length() * 10, 100, 150), filter = target})
|
|
util.Decal(decal, tr.HitPos + tr.HitNormal + Vector(math.random(-30, 30), math.random(-30, 30), 0), tr.HitPos - tr.HitNormal, target)
|
|
end
|
|
end
|
|
|
|
-- Damage & Gibs
|
|
if GetConVar("vj_hlr1_corpse_gibbable"):GetInt() == 1 && !dmginfo:IsBulletDamage() && target.HLR_Corpse_Gibbable then
|
|
local noDamage = false
|
|
local dmgType = dmginfo:GetDamageType()
|
|
|
|
-- DMG_CRUSH is usually when the ragdoll is slammed to a wall, we want it to only gib if it's hit hard enough!
|
|
if dmgType == DMG_CRUSH && dmginfo:GetDamage() < 500 then
|
|
noDamage = true
|
|
end
|
|
-- If it's a child corpse piece, then we want to make sure it doesn't cause damage
|
|
for _, v in ipairs(target.ExtraCorpsesToRemove) do
|
|
if IsValid(v) && v == dmginfo:GetAttacker() then
|
|
noDamage = true
|
|
break
|
|
end
|
|
end
|
|
-- If DMG_BLAST, then increase the damage to make it easier to gib
|
|
if bit.band(dmgType, DMG_BLAST) != 0 then
|
|
dmginfo:ScaleDamage(2)
|
|
end
|
|
if !noDamage then target:SetHealth(target:Health() - dmginfo:GetDamage()) end
|
|
if target:Health() <= 0 then
|
|
local centerPos = target:GetPos() + target:OBBCenter()
|
|
target.Dead = true
|
|
VJ_EmitSound(target, VJ_PICK(target.HLR_Corpse_ExpSound), 90, 100)
|
|
|
|
-- Spawn gibs
|
|
local gibMaxs = target:OBBMaxs()
|
|
local gibMins = target:OBBMins()
|
|
for _, v in ipairs(target.HLR_Corpse_Gibs) do
|
|
local gib = ents.Create("obj_vj_gib")
|
|
gib:SetModel(v)
|
|
gib:SetPos(centerPos + Vector(math.random(gibMins.x, gibMaxs.x), math.random(gibMins.y, gibMaxs.y), 10))
|
|
gib:SetAngles(Angle(math.Rand(-180, 180), math.Rand(-180, 180), math.Rand(-180, 180)))
|
|
gib.BloodType = target.HLR_Corpse_Type
|
|
gib.Collide_Decal = target.HLR_Corpse_Decal
|
|
gib.CollideSound = target.HLR_Corpse_CollideSound or "Default"
|
|
gib:Spawn()
|
|
gib:Activate()
|
|
local phys = gib:GetPhysicsObject()
|
|
if IsValid(phys) then
|
|
phys:AddVelocity(Vector(math.Rand(-100, 100), math.Rand(-100, 100), math.Rand(150, 250)) + (dmgForce / 70))
|
|
phys:AddAngleVelocity(Vector(math.Rand(-200, 200), math.Rand(-200, 200), math.Rand(-200, 200)))
|
|
end
|
|
if GetConVar("vj_npc_fadegibs"):GetInt() == 1 then
|
|
timer.Simple(GetConVar("vj_npc_fadegibstime"):GetInt(), function()
|
|
SafeRemoveEntity(gib)
|
|
end)
|
|
end
|
|
end
|
|
|
|
local bloodIsYellow = target.HLR_Corpse_Type == "Yellow"
|
|
local bloodIsRed = target.HLR_Corpse_Type == "Red"
|
|
|
|
-- Death effects & decals
|
|
if bloodIsYellow or bloodIsRed then
|
|
local maxDist = gibMaxs:Length()
|
|
local splatDecal = bloodIsYellow and "VJ_HLR_Blood_Yellow_Large" or "VJ_HLR_Blood_Red_Large"
|
|
local tr = util.TraceLine({start = centerPos, endpos = centerPos - Vector(0, 0, maxDist), filter = target})
|
|
util.Decal(splatDecal, tr.HitPos + tr.HitNormal, tr.HitPos - tr.HitNormal, target)
|
|
tr = util.TraceLine({start = centerPos, endpos = centerPos + Vector(0, 0, maxDist), filter = target})
|
|
util.Decal(splatDecal, tr.HitPos + tr.HitNormal, tr.HitPos - tr.HitNormal, target)
|
|
tr = util.TraceLine({start = centerPos, endpos = centerPos - Vector(maxDist, 0, 0), filter = target})
|
|
util.Decal(splatDecal, tr.HitPos + tr.HitNormal, tr.HitPos - tr.HitNormal, target)
|
|
tr = util.TraceLine({start = centerPos, endpos = centerPos + Vector(maxDist, 0, 0), filter = target})
|
|
util.Decal(splatDecal, tr.HitPos + tr.HitNormal, tr.HitPos - tr.HitNormal, target)
|
|
tr = util.TraceLine({start = centerPos, endpos = centerPos - Vector(0, maxDist, 0), filter = target})
|
|
util.Decal(splatDecal, tr.HitPos + tr.HitNormal, tr.HitPos - tr.HitNormal, target)
|
|
tr = util.TraceLine({start = centerPos, endpos = centerPos + Vector(0, maxDist, 0), filter = target})
|
|
util.Decal(splatDecal, tr.HitPos + tr.HitNormal, tr.HitPos - tr.HitNormal, target)
|
|
/*local dmgPos = dmginfo:GetDamagePosition()
|
|
if pos == defPos then pos = target:GetPos() + target:OBBCenter() end
|
|
VJ_CreateTestObject(dmgPos, Angle(0, 0, 0), Color(0, 225, 255))
|
|
VJ_CreateTestObject(dmgPos + dmgPos:GetNormal() * 10)
|
|
local tr = util.TraceLine({start = dmgPos, endpos = dmgPos + dmgPos:GetNormal() * 10, filter = target})
|
|
VJ_CreateTestObject(tr.HitPos, Angle(0, 0, 0), Color(94, 255, 0))
|
|
util.Decal("VJ_HLR_Blood_Red_Large", tr.HitPos + tr.HitNormal, tr.HitPos - tr.HitNormal, target)*/
|
|
|
|
local effectBlood = EffectData()
|
|
effectBlood:SetOrigin(centerPos)
|
|
effectBlood:SetColor(bloodIsYellow and colorYellow or colorRed)
|
|
effectBlood:SetScale(120)
|
|
util.Effect("VJ_Blood1", effectBlood)
|
|
|
|
local bloodspray = EffectData()
|
|
bloodspray:SetOrigin(centerPos)
|
|
bloodspray:SetScale(8)
|
|
bloodspray:SetFlags(3)
|
|
bloodspray:SetColor(bloodIsYellow and 1 or 0)
|
|
util.Effect("bloodspray", bloodspray)
|
|
util.Effect("bloodspray", bloodspray)
|
|
|
|
if bloodIsYellow then
|
|
local effectdata = EffectData()
|
|
effectdata:SetOrigin(centerPos)
|
|
effectdata:SetScale(1)
|
|
util.Effect("StriderBlood", effectdata)
|
|
util.Effect("StriderBlood", effectdata)
|
|
end
|
|
end
|
|
target:Remove()
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
-- Weapon hook that gives the player HL1 weapons on spawn
|
|
-- hook.Add("PlayerSpawn", "VJ_HL1SWEPs_AutoSpawn", function(ply)
|
|
-- if GetConVar("hl1_sv_loadout"):GetInt() == 1 then
|
|
-- ply:Give("weapon_hl1_crowbar")
|
|
-- ply:Give("weapon_hl1_357")
|
|
-- ply:Give("weapon_hl1_glock")
|
|
-- ply:Give("weapon_hl1_crossbow")
|
|
-- ply:Give("weapon_hl1_egon")
|
|
-- ply:Give("weapon_hl1_handgrenade")
|
|
-- ply:Give("weapon_hl1_hornetgun")
|
|
-- ply:Give("weapon_hl1_mp5")
|
|
-- ply:Give("weapon_hl1_rpg")
|
|
-- ply:Give("weapon_hl1_satchel")
|
|
-- ply:Give("weapon_hl1_shotgun")
|
|
-- //ply:Give("weapon_hl1_snark")
|
|
-- ply:Give("weapon_hl1_gauss")
|
|
-- ply:Give("weapon_hl1_tripmine")
|
|
-- end
|
|
-- end)
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------ Entity Tags ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
--[[
|
|
ent.HLR_Corpse = If true then this is an HLR corpse
|
|
ent.HLR_Corpse_Type, ent.HLR_Corpse_Particle, ent.HLR_Corpse_Decal
|
|
]]--
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------ Convars & Menu ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
VJ.AddConVar("vj_hlr_hd", 0, {FCVAR_ARCHIVE})
|
|
-- GoldSrc
|
|
VJ.AddConVar("vj_hlr1_corpse_effects", 1, {FCVAR_ARCHIVE})
|
|
VJ.AddConVar("vj_hlr1_corpse_gibbable", 1, {FCVAR_ARCHIVE})
|
|
VJ.AddConVar("vj_hlr1_gonarch_babylimit", 20, {FCVAR_ARCHIVE})
|
|
VJ.AddConVar("vj_hlr1_bradley_deploygrunts", 1, {FCVAR_ARCHIVE})
|
|
VJ.AddConVar("vj_hlr1_osprey_deploysoldiers", 1, {FCVAR_ARCHIVE})
|
|
VJ.AddConVar("vj_hlr1_assassin_cloaks", 1, {FCVAR_ARCHIVE})
|
|
-- Source
|
|
VJ.AddConVar("vj_hlr2_merkava_gunner", 1, {FCVAR_ARCHIVE})
|
|
VJ.AddConVar("vj_hlr2_custom_skins", 1, {FCVAR_ARCHIVE})
|
|
|
|
VJ.AddConVar("vj_hlr_autoreplace", 0, {FCVAR_ARCHIVE, FCVAR_NOTIFY})
|
|
VJ.AddConVar("vj_hlr_autoreplace_hl1", 1, {FCVAR_ARCHIVE, FCVAR_NOTIFY})
|
|
VJ.AddConVar("vj_hlr_autoreplace_hl2", 1, {FCVAR_ARCHIVE, FCVAR_NOTIFY})
|
|
VJ.AddConVar("vj_hlr_autoreplace_essential", 0, {FCVAR_ARCHIVE, FCVAR_NOTIFY})
|
|
VJ.AddConVar("vj_hlr_autoreplace_random", 0, {FCVAR_ARCHIVE, FCVAR_NOTIFY})
|
|
VJ.AddConVar("vj_hlr_autoreplace_randommix", 0, {FCVAR_ARCHIVE, FCVAR_NOTIFY})
|
|
VJ.AddConVar("vj_hlr_autoreplace_alliedagainstply", 0, {FCVAR_ARCHIVE, FCVAR_NOTIFY})
|
|
|
|
VJ.AddClientConVar("vj_hlr1_sparkfx", 0, "Create HL1-Style Sparks on Metal Surfaces")
|
|
VJ.AddClientConVar("vj_hlr2_csniper_laser_usebarrel", 1, "Combine Sniper Laser Follows Gun Barrel")
|
|
VJ.AddClientConVar("vj_hlr2_combine_eyeglow", 0, "Create Glow Effects to Combine Eyes")
|
|
|
|
if CLIENT then
|
|
hook.Add("PopulateToolMenu", "VJ_ADDTOMENU_HLR", function()
|
|
spawnmenu.AddToolMenuOption("DrVrej", "SNPC Configures", "HL Resurgence (Server)", "HL Resurgence (Server)", "", "", function(Panel)
|
|
if !game.SinglePlayer() && !LocalPlayer():IsAdmin() then
|
|
Panel:AddControl("Label", {Text = "#vjbase.menu.general.admin.not"})
|
|
Panel:AddControl( "Label", {Text = "#vjbase.menu.general.admin.only"})
|
|
return
|
|
end
|
|
Panel:AddControl( "Label", {Text = "#vjbase.menu.general.admin.only"})
|
|
Panel:AddControl("Button", {Text = "#vjbase.menu.general.reset.everything", Command = "vj_hlr1_gonarch_babylimit 20\nvj_hlr1_bradley_deploygrunts 1\nvj_hlr1_osprey_deploysoldiers 1\nvj_hlr2_merkava_gunner 1\nvj_hlr1_assassin_cloaks 1\nvj_hlr1_corpse_effects 1\nvj_hlr1_corpse_gibbable 1\nvj_hlr2_custom_skins 1\nvj_hlr_hd 0"})
|
|
Panel:AddControl("Checkbox", {Label = "Enable HD Models (if available)", Command = "vj_hlr_hd"})
|
|
Panel:ControlHelp("Base HLR requires the HD extension to be installed!")
|
|
Panel:AddControl( "Label", {Text = "GoldSrc Engine:"})
|
|
Panel:AddControl("Checkbox", {Label = "Corpses Create Effects & Decals", Command = "vj_hlr1_corpse_effects"})
|
|
Panel:AddControl("Checkbox", {Label = "Corpses Can Be Dismembered", Command = "vj_hlr1_corpse_gibbable"})
|
|
Panel:AddControl("Checkbox", {Label = "M2A3 Bradley Deploys Human Grunts", Command = "vj_hlr1_bradley_deploygrunts"})
|
|
Panel:AddControl("Checkbox", {Label = "V-22 Osprey Deploys Human Grunts / Assassins", Command = "vj_hlr1_osprey_deploysoldiers"})
|
|
Panel:AddControl("Checkbox", {Label = "Female Assassin Cloaks During Combat", Command = "vj_hlr1_assassin_cloaks"})
|
|
Panel:AddControl("Slider", {Label = "Gonarch Baby Headcrab Limit", min = 0, max = 100, Command = "vj_hlr1_gonarch_babylimit"})
|
|
Panel:AddControl( "Label", {Text = "Source Engine:"})
|
|
Panel:AddControl("Checkbox", {Label = "Merkava Spawns With a Gunner", Command = "vj_hlr2_merkava_gunner"})
|
|
Panel:AddControl("Checkbox", {Label = "Allow Custom NPC Skins", Command = "vj_hlr2_custom_skins"})
|
|
Panel:ControlHelp("Ex: Custom skins for Rebels & Refugees")
|
|
end)
|
|
|
|
spawnmenu.AddToolMenuOption("DrVrej", "SNPC Configures", "HL Resurgence (AutoReplace)", "HL Resurgence (AutoReplace)", "", "", function(Panel)
|
|
if !game.SinglePlayer() && !LocalPlayer():IsAdmin() then
|
|
Panel:AddControl("Label", {Text = "#vjbase.menu.general.admin.not"})
|
|
Panel:AddControl( "Label", {Text = "#vjbase.menu.general.admin.only"})
|
|
return
|
|
end
|
|
Panel:AddControl( "Label", {Text = "#vjbase.menu.general.admin.only"})
|
|
Panel:AddControl("Button", {Text = "#vjbase.menu.general.reset.everything", Command = "vj_hlr_autoreplace 0\nvj_hlr_autoreplace_hl1 1\nvj_hlr_autoreplace_hl2 1\nvj_hlr_autoreplace_random 0\nvj_hlr_autoreplace_randommix 0\nvj_hlr_autoreplace_essential 0\nvj_hlr_autoreplace_randommix 0"})
|
|
Panel:AddControl("Label", {Text = "Auto Replace script replaces HL1 / HL2 NPCs with the corresponding Half-Life Resurgence NPC!"})
|
|
local vid = vgui.Create("DButton")
|
|
vid:SetFont("TargetID")
|
|
vid:SetText("What is Auto Replace?")
|
|
vid:SetSize(150, 25)
|
|
vid.DoClick = function()
|
|
gui.OpenURL("https://www.youtube.com/watch?v=I7_I-HFA_Ks")
|
|
end
|
|
Panel:AddPanel(vid)
|
|
Panel:AddControl("Checkbox", {Label = "Enable Auto Replacement Script", Command = "vj_hlr_autoreplace"})
|
|
Panel:AddControl("Checkbox", {Label = "Replace HL1 NPCs", Command = "vj_hlr_autoreplace_hl1"})
|
|
Panel:AddControl("Checkbox", {Label = "Replace HL2 NPCs", Command = "vj_hlr_autoreplace_hl2"})
|
|
Panel:AddControl("Checkbox", {Label = "Main Characters Are Invincible?", Command = "vj_hlr_autoreplace_essential"})
|
|
Panel:AddControl( "Label", {Text = "FUN OPTIONS:"})
|
|
Panel:AddControl("Checkbox", {Label = "Enable Random Replacements", Command = "vj_hlr_autoreplace_random"})
|
|
Panel:AddControl("Checkbox", {Label = "Mix GoldSrc and Source in Random Replacements", Command = "vj_hlr_autoreplace_randommix"})
|
|
Panel:AddControl("Checkbox", {Label = "Make All NPCs Allied Against Players", Command = "vj_hlr_autoreplace_alliedagainstply"})
|
|
Panel:AddControl("Label", {Text = "WARNINGS: Certain maps may occasionally break or crash! Some parts of the campaign may require the player to remove invisible barriers or physgun important NPCs to their proper location to continue to the next level."})
|
|
end)
|
|
|
|
spawnmenu.AddToolMenuOption("DrVrej", "SNPC Configures", "HL Resurgence (Client)", "HL Resurgence (Client)", "", "", function(Panel)
|
|
Panel:AddControl("Button", {Text = "#vjbase.menu.general.reset.everything", Command = "vj_hlr2_csniper_laser_usebarrel 1\nvj_hlr1_sparkfx 0\nvj_hlr2_combine_eyeglow 0"})
|
|
Panel:AddControl("Checkbox", {Label = "Create HL1-Style Sparks on Metal Surfaces", Command = "vj_hlr1_sparkfx"})
|
|
Panel:ControlHelp("Applies ONLY to HL1 NPCs & weapons!")
|
|
Panel:AddControl("Checkbox", {Label = "Combine Sniper Laser Follows Gun Barrel", Command = "vj_hlr2_csniper_laser_usebarrel"})
|
|
Panel:ControlHelp("Unchecked = Laser will pinpoint to the enemy instead")
|
|
Panel:AddControl("Checkbox", {Label = "Create Glow Effects to Combine Eyes", Command = "vj_hlr2_combine_eyeglow"})
|
|
Panel:ControlHelp("Requires map restart! | WARNING: Causes performance loss!")
|
|
end)
|
|
end)
|
|
end
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------ Replacement Script ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
-- If enabled during startup, then just run it!
|
|
if GetConVar("vj_hlr_autoreplace"):GetInt() == 1 then
|
|
include("hlr/autoreplace.lua")
|
|
end
|
|
-- Detect changes to the convar...
|
|
cvars.AddChangeCallback("vj_hlr_autoreplace", function(convar_name, value_old, value_new)
|
|
if value_new == "1" then
|
|
include("autorun/hlr/autoreplace.lua")
|
|
else
|
|
hook.Remove("OnEntityCreated", "VJ_HLR_AutoReplace_EntCreate")
|
|
hook.Remove("Think", "VJ_HLR_AutoReplace_Think")
|
|
end
|
|
end)
|
|
-- !!!!!! DON'T TOUCH ANYTHING BELOW THIS !!!!!! -------------------------------------------------------------------------------------------------------------------------
|
|
AddCSLuaFile(AutorunFile)
|
|
VJ.AddAddonProperty(AddonName, AddonType)
|
|
else
|
|
if CLIENT then
|
|
chat.AddText(Color(0, 200, 200), PublicAddonName,
|
|
Color(0, 255, 0), " was unable to install, you are missing ",
|
|
Color(255, 100, 0), "VJ Base!")
|
|
end
|
|
|
|
timer.Simple(1, function()
|
|
if not VJBASE_ERROR_MISSING then
|
|
VJBASE_ERROR_MISSING = true
|
|
if CLIENT then
|
|
// Get rid of old error messages from addons running on older code...
|
|
if VJF && type(VJF) == "Panel" then
|
|
VJF:Close()
|
|
end
|
|
VJF = true
|
|
|
|
local frame = vgui.Create("DFrame")
|
|
frame:SetSize(600, 160)
|
|
frame:SetPos((ScrW() - frame:GetWide()) / 2, (ScrH() - frame:GetTall()) / 2)
|
|
frame:SetTitle("Error: VJ Base is missing!")
|
|
frame:SetBackgroundBlur(true)
|
|
frame:MakePopup()
|
|
|
|
local labelTitle = vgui.Create("DLabel", frame)
|
|
labelTitle:SetPos(250, 30)
|
|
labelTitle:SetText("VJ BASE IS MISSING!")
|
|
labelTitle:SetTextColor(Color(255, 128, 128))
|
|
labelTitle:SizeToContents()
|
|
|
|
local label1 = vgui.Create("DLabel", frame)
|
|
label1:SetPos(170, 50)
|
|
label1:SetText("Garry's Mod was unable to find VJ Base in your files!")
|
|
label1:SizeToContents()
|
|
|
|
local label2 = vgui.Create("DLabel", frame)
|
|
label2:SetPos(10, 70)
|
|
label2:SetText("You have an addon installed that requires VJ Base but VJ Base is missing. To install VJ Base, click on the link below. Once\n installed, make sure it is enabled and then restart your game.")
|
|
label2:SizeToContents()
|
|
|
|
local link = vgui.Create("DLabelURL", frame)
|
|
link:SetSize(300, 20)
|
|
link:SetPos(195, 100)
|
|
link:SetText("VJ_Base_Download_Link_(Steam_Workshop)")
|
|
link:SetURL("https://steamcommunity.com/sharedfiles/filedetails/?id=131759821")
|
|
|
|
local buttonClose = vgui.Create("DButton", frame)
|
|
buttonClose:SetText("CLOSE")
|
|
buttonClose:SetPos(260, 120)
|
|
buttonClose:SetSize(80, 35)
|
|
buttonClose.DoClick = function()
|
|
frame:Close()
|
|
end
|
|
elseif (SERVER) then
|
|
VJF = true
|
|
timer.Remove("VJBASEMissing")
|
|
timer.Create("VJBASE_ERROR_CONFLICT", 5, 0, function()
|
|
print("VJ Base is missing! Download it from the Steam Workshop! Link: https://steamcommunity.com/sharedfiles/filedetails/?id=131759821")
|
|
end)
|
|
end
|
|
end
|
|
end)
|
|
end |