Files
wnsrc/lua/autorun/vj_hlr_autorun.lua

808 lines
45 KiB
Lua
Raw Normal View History

2024-08-04 22:55:00 +03:00
--[[
| 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