mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 05:43:46 +03:00
Upload
This commit is contained in:
273
lua/entities/npc_vj_civil_protection_z/init.lua
Normal file
273
lua/entities/npc_vj_civil_protection_z/init.lua
Normal file
@@ -0,0 +1,273 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
AddCSLuaFile("shared.lua")
|
||||
include("shared.lua")
|
||||
|
||||
|
||||
ENT.Model = {"models/Police.mdl"}
|
||||
ENT.StartHealth = 50
|
||||
|
||||
ENT.FootStepTimeRun = 0.3
|
||||
ENT.FootStepTimeWalk = 0.5
|
||||
|
||||
ENT.AnimTbl_GrenadeAttack = {"grenadethrow"} -- Grenade Attack Animations
|
||||
ENT.TimeUntilGrenadeIsReleased = 0.82 -- Time until the grenade is released
|
||||
|
||||
ENT.AnimTbl_Medic_GiveHealth = {"harassfront1"} -- Animations is plays when giving health to an ally
|
||||
ENT.Medic_TimeUntilHeal = 0.5 -- Time until the ally receives health | Set to false to let the base decide the time
|
||||
|
||||
ENT.AnimTbl_MeleeAttack = {"swing"} -- Melee Attack Animations
|
||||
|
||||
-- ENT.WeaponInventory_Melee = true -- If true, the NPC will spawn with one of the given weapons (Will only be given the weapon if it already has another!)
|
||||
-- ENT.WeaponInventory_MeleeList = {"weapon_vj_stunstick_z"} -- It will randomly be given one of these weapons
|
||||
|
||||
ENT.CanUseSecondaryOnWeaponAttack = false -- Can the NPC use a secondary fire if it's available?
|
||||
ENT.CanHaveTurret = false
|
||||
ENT.ManhackChance = 3
|
||||
|
||||
ENT.ItemDropsOnDeath_EntityList = {
|
||||
"item_battery",
|
||||
"item_healthvial",
|
||||
"weapon_frag",
|
||||
}
|
||||
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
function ENT:SoldierInit()
|
||||
|
||||
if math.random(1,self.ManhackChance) == 1 then
|
||||
self:SetBodygroup(1, 1)
|
||||
end
|
||||
|
||||
if GetConVar("vj_zippycombines_nemez_metrocop_compatibility"):GetInt() > 0 then
|
||||
|
||||
if self.Model[1] == "models/elitepolice.mdl" then
|
||||
self:SetModel("models/Police.mdl")
|
||||
self:SetBodygroup(2, 1)
|
||||
self:SetSkin(5)
|
||||
end
|
||||
|
||||
if self.IsMedicSNPC then
|
||||
self:SetSkin(1)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
self.SoundTbl_GrenadeAttack = {}
|
||||
|
||||
self.SoundTbl_FootStep = {
|
||||
"npc/metropolice/gear1.wav",
|
||||
"npc/metropolice/gear2.wav",
|
||||
"npc/metropolice/gear3.wav",
|
||||
"npc/metropolice/gear4.wav",
|
||||
"npc/metropolice/gear5.wav",
|
||||
"npc/metropolice/gear6.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_Idle = {
|
||||
"npc/metropolice/vo/dispupdatingapb.wav",
|
||||
"npc/metropolice/vo/pickingupnoncorplexindy.wav",
|
||||
"npc/metropolice/vo/ten97suspectisgoa.wav",
|
||||
"npc/metropolice/vo/stillgetting647e.wav",
|
||||
"npc/metropolice/vo/404zone.wav",
|
||||
"npc/metropolice/vo/standardloyaltycheck.wav",
|
||||
"npc/metropolice/vo/anyonepickup647e.wav",
|
||||
"npc/metropolice/vo/blockisholdingcohesive.wav",
|
||||
"npc/metropolice/vo/checkformiscount.wav",
|
||||
"npc/metropolice/vo/catchthatbliponstabilization.wav",
|
||||
"npc/metropolice/vo/clearandcode100.wav",
|
||||
"npc/metropolice/vo/clearno647no10-107.wav",
|
||||
"npc/metropolice/vo/classifyasdbthisblockready.wav",
|
||||
"npc/metropolice/vo/control100percent.wav",
|
||||
"npc/metropolice/vo/cprequestsallunitsreportin.wav",
|
||||
"npc/metropolice/vo/dispreportssuspectincursion.wav",
|
||||
"npc/metropolice/vo/wegotadbherecancel10-102.wav",
|
||||
"npc/metropolice/vo/localcptreportstatus.wav",
|
||||
"npc/metropolice/vo/novisualonupi.wav",
|
||||
"npc/metropolice/vo/loyaltycheckfailure.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_IdleDialogue = self.SoundTbl_Idle
|
||||
|
||||
self.SoundTbl_IdleDialogueAnswer = {
|
||||
"npc/metropolice/vo/rodgerthat.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_Investigate = {
|
||||
"npc/metropolice/vo/requestsecondaryviscerator.wav",
|
||||
"npc/metropolice/vo/goingtotakealook.wav",
|
||||
"npc/metropolice/vo/movetoarrestpositions.wav",
|
||||
"npc/metropolice/vo/investigating10-103.wav",
|
||||
"npc/metropolice/vo/readytoamputate.wav",
|
||||
"npc/metropolice/vo/readytojudge.wav",
|
||||
"npc/metropolice/vo/preparingtojudge10-107.wav",
|
||||
"npc/metropolice/vo/prepareforjudgement.wav",
|
||||
"npc/metropolice/vo/possible10-103alerttagunits.wav",
|
||||
"npc/metropolice/vo/possible404here.wav",
|
||||
"npc/metropolice/vo/possiblelevel3civilprivacyviolator.wav",
|
||||
"npc/metropolice/vo/possible647erequestairwatch.wav",
|
||||
"npc/metropolice/vo/positiontocontain.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_CombatIdle = {
|
||||
"npc/metropolice/vo/airwatchsubjectis505.wav",
|
||||
"npc/metropolice/vo/assaultpointsecureadvance.wav",
|
||||
"npc/metropolice/vo/breakhiscover.wav",
|
||||
"npc/metropolice/vo/covermegoingin.wav",
|
||||
"npc/metropolice/vo/destroythatcover.wav",
|
||||
"npc/metropolice/vo/firingtoexposetarget.wav",
|
||||
"npc/metropolice/vo/lockyourposition.wav",
|
||||
"npc/metropolice/vo/holdthisposition.wav",
|
||||
"npc/metropolice/vo/teaminpositionadvance.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_Alert = {
|
||||
"npc/metropolice/vo/allunitscloseonsuspect.wav",
|
||||
"npc/metropolice/vo/allunitsmovein.wav",
|
||||
"npc/metropolice/vo/contactwith243suspect.wav",
|
||||
"npc/metropolice/vo/criminaltrespass63.wav",
|
||||
"npc/metropolice/vo/get11-44inboundcleaningup.wav",
|
||||
"npc/metropolice/vo/unlawfulentry603.wav",
|
||||
"npc/metropolice/vo/malcompliant10107my1020.wav",
|
||||
"npc/metropolice/vo/level3civilprivacyviolator.wav",
|
||||
"npc/metropolice/vo/ivegot408hereatlocation.wav",
|
||||
"npc/metropolice/vo/ihave10-30my10-20responding.wav",
|
||||
"npc/metropolice/vo/readytoprosecute.wav",
|
||||
"npc/metropolice/vo/priority2anticitizenhere.wav",
|
||||
"npc/metropolice/vo/gota10-107sendairwatch.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_WeaponReload = {
|
||||
"npc/metropolice/vo/runninglowonverdicts.wav",
|
||||
"npc/metropolice/vo/backmeupimout.wav",
|
||||
"npc/metropolice/vo/movingtocover.wav",
|
||||
"npc/metropolice/vo/finalverdictadministered.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_OnDangerSight = {
|
||||
"npc/metropolice/vo/lookout.wav",
|
||||
"npc/metropolice/vo/shit.wav",
|
||||
"npc/metropolice/vo/takecover.wav",
|
||||
"npc/metropolice/vo/getdown.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_OnGrenadeSight = {
|
||||
"npc/metropolice/vo/thatsagrenade.wav",
|
||||
"npc/metropolice/vo/grenade.wav"
|
||||
}
|
||||
|
||||
self.SoundTbl_OnKilledEnemy = {
|
||||
"npc/metropolice/vo/chuckle.wav",
|
||||
"npc/metropolice/vo/suspectisbleeding.wav",
|
||||
"npc/metropolice/vo/sentencedelivered.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_AllyDeath = {
|
||||
"npc/metropolice/vo/11-99officerneedsassistance.wav",
|
||||
"npc/metropolice/vo/wehavea10-108.wav",
|
||||
"npc/metropolice/vo/reinforcementteamscode3.wav",
|
||||
"npc/metropolice/vo/officerneedshelp.wav",
|
||||
"npc/metropolice/vo/officerunderfiretakingcover.wav",
|
||||
"npc/metropolice/vo/officerneedsassistance.wav",
|
||||
"npc/metropolice/vo/officerdowniam10-99.wav",
|
||||
"npc/metropolice/vo/officerdowncode3tomy10-20.wav",
|
||||
"npc/metropolice/vo/cpiscompromised.wav",
|
||||
"npc/metropolice/vo/cpisoverrunwehavenocontainment.wav",
|
||||
"npc/metropolice/vo/minorhitscontinuing.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_LostEnemy = {
|
||||
"npc/metropolice/vo/hidinglastseenatrange.wav",
|
||||
"npc/metropolice/vo/hesgone148.wav",
|
||||
"npc/metropolice/vo/searchingforsuspect.wav",
|
||||
"npc/metropolice/vo/suspectlocationunknown.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_Death = {
|
||||
"npc/metropolice/die1.wav",
|
||||
"npc/metropolice/die2.wav",
|
||||
"npc/metropolice/die3.wav",
|
||||
"npc/metropolice/die4.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_Hurt = {"npc/metropolice/vo/help.wav"}
|
||||
self.SoundTbl_Pain = {
|
||||
"npc/metropolice/pain1.wav",
|
||||
"npc/metropolice/pain2.wav",
|
||||
"npc/metropolice/pain3.wav",
|
||||
"npc/metropolice/pain4.wav",
|
||||
"npc/metropolice/vo/help.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_RadioOn = {
|
||||
"npc/metropolice/vo/on1.wav",
|
||||
"npc/metropolice/vo/on2.wav",
|
||||
}
|
||||
|
||||
self.SoundTbl_RadioOff = {
|
||||
"npc/metropolice/vo/off1.wav",
|
||||
"npc/metropolice/vo/off2.wav",
|
||||
"npc/metropolice/vo/off3.wav",
|
||||
"npc/metropolice/vo/off4.wav",
|
||||
}
|
||||
|
||||
end
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
function ENT:DeployManhack()
|
||||
if self.DeployingManhack then return end
|
||||
self.DeployingManhack = true
|
||||
|
||||
local manhack_grab_time = 0.33
|
||||
local manhack_deploy_time = 1.25
|
||||
|
||||
self:VJ_ACT_PLAYACTIVITY("deploy", true, manhack_deploy_time, false)
|
||||
|
||||
timer.Simple(manhack_grab_time, function() if IsValid(self) then
|
||||
self.manhackprop = ents.Create("prop_dynamic")
|
||||
self.manhackprop:SetModel("models/manhack.mdl")
|
||||
self.manhackprop:SetParent(self, 4)
|
||||
self.manhackprop:SetAngles(self:GetAngles())
|
||||
self.manhackprop:SetPos(self:GetAttachment(4).Pos)
|
||||
self.manhackprop:Spawn()
|
||||
self:SetBodygroup(1,0)
|
||||
end end)
|
||||
|
||||
timer.Simple(manhack_deploy_time, function() if IsValid(self) then
|
||||
self.manhackprop:Remove()
|
||||
self.DeployingManhack = false
|
||||
|
||||
local manhack = ents.Create("npc_manhack")
|
||||
manhack:SetPos(self:GetPos() + Vector(0,0,90))
|
||||
manhack:SetAngles(self:GetAngles())
|
||||
manhack:SetKeyValue("spawnflags",tostring(bit.bor(256,65536,262144)))
|
||||
manhack:Spawn()
|
||||
manhack.VJ_NPC_Class = self.VJ_NPC_Class
|
||||
end end)
|
||||
|
||||
end
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
function ENT:Controller_IntMsg(ply, controlEnt)
|
||||
|
||||
ply:ChatPrint("ALT (walk key): Deploy Manhack (if available)")
|
||||
|
||||
end
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
function ENT:CustomOnThink_AIEnabled()
|
||||
if self.IsBeingDroppedByDropship then return end
|
||||
|
||||
local enemy = self:GetEnemy()
|
||||
|
||||
if self:GetBodygroup(1) == 1 && IsValid(enemy) then
|
||||
if (!self.VJ_IsBeingControlled && self:Visible(enemy) && !self:IsNearDropshipDropPoint()) or (self.VJ_IsBeingControlled && self.VJ_TheController:KeyDown(IN_WALK)) then
|
||||
self:DeployManhack()
|
||||
end
|
||||
end
|
||||
end
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
14
lua/entities/npc_vj_civil_protection_z/shared.lua
Normal file
14
lua/entities/npc_vj_civil_protection_z/shared.lua
Normal file
@@ -0,0 +1,14 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
ENT.Base = "npc_vj_overwatch_soldier_z"
|
||||
ENT.PrintName = "Civil Protection"
|
||||
ENT.Type = "ai"
|
||||
ENT.Author = "Zippy"
|
||||
Reference in New Issue
Block a user