--[[
| 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/
--]]

if (!file.Exists("autorun/vj_base_autorun.lua","LUA")) then return end
AddCSLuaFile("shared.lua")
include('shared.lua')
/*--------------------------------------------------
	*** 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.
--------------------------------------------------*/
ENT.PainSoundT = 0

util.AddNetworkString("vj_testentity_onmenuopen")
util.AddNetworkString("vj_testentity_runtextsd")
---------------------------------------------------------------------------------------------------------------------------------------------
function ENT:Initialize()
	self:SetModel("models/humans/group01/male_0" .. math.random(1, 9) .. ".mdl")
	self:SetSpawnEffect(false)
	self:SetHullType(HULL_HUMAN)
	self:SetHullSizeNormal()
	self:SetNPCState(NPC_STATE_SCRIPT)
	self:SetSolid(SOLID_BBOX)
	self:SetUseType(SIMPLE_USE) -- Makes the ENT.Use hook only get called once at every use.
	self:DropToFloor()
	self:SetMaxYawSpeed(20)
	self:CapabilitiesAdd(bit.bor(CAP_ANIMATEDFACE, CAP_TURN_HEAD, CAP_MOVE_GROUND, CAP_OPEN_DOORS, CAP_AUTO_DOORS, CAP_MOVE_JUMP))
end
---------------------------------------------------------------------------------------------------------------------------------------------
function ENT:SelectSchedule()
	for _, v in ipairs(ents.FindInSphere(self:GetPos(), 150)) do
		if v:IsPlayer() && v:Alive() then
			self:SetSchedule(SCHED_IDLE_STAND)
			self:SetSchedule(SCHED_TARGET_FACE)
			return
		end
	end
	self:SetSchedule(SCHED_IDLE_WANDER)
end
---------------------------------------------------------------------------------------------------------------------------------------------
function ENT:OnTakeDamage()
	if CurTime() > self.PainSoundT then
		self:EmitSound("vo/npc/male01/pain0"..math.random(1,9)..".wav")
		self.PainSoundT = CurTime() + 1
		self:SetSchedule(SCHED_RUN_FROM_ENEMY)
	end
	return 0
end
---------------------------------------------------------------------------------------------------------------------------------------------
function ENT:AcceptInput(key, activator, caller)
	if key == "Use" && activator:IsPlayer() && activator:IsValid() && activator:Alive() then
		net.Start("vj_testentity_onmenuopen")
		net.Send(activator)
		self:EmitSound("vj_misc/illuminati_confirmed.mp3", 75)
		self:EmitSound("vo/npc/male01/hi0"..math.random(1,2)..".wav")
		self:SetTarget(activator)
		self:SetSchedule(SCHED_IDLE_STAND)
		self:SetSchedule(SCHED_TARGET_FACE)
	end
end
---------------------------------------------------------------------------------------------------------------------------------------------
net.Receive("vj_testentity_runtextsd", function(len, ply)
	local msgType = net.ReadBool()
	if (ply:IsPlayer() && ply:SteamID() == "STEAM_0:0:22688298") or (game.SinglePlayer() == true) then
		msg = (msgType == true and "Are you thirsty?") or "DrVrej is in this server, be aware!"
		sdFile = (msgType == true and "vj_misc/areyouthristy.wav") or "vj_misc/illuminati_confirmed.mp3"
		PrintMessage(HUD_PRINTTALK, msg)
		PrintMessage(HUD_PRINTCENTER, msg)
		local filter = RecipientFilter()
		filter:AddAllPlayers()
		local sd = CreateSound(game.GetWorld(), sdFile, filter)
		sd:SetSoundLevel(0)
		sd:Play()
	end
end)