//made by lite then repurposed for yoovy foreach (k, v in NetProps.getclass()) if (k != "IsValid") getroottable()[k] <- NetProps[k].bindenv(NetProps); //////////////////////////////////////////////////////////////// // ::multitrace <- [ [-1,1], [-0.5,1], [0,1], [0.5,1], [1,1], [-1,0.5], [-0.5,0.5], [0,0.5], [0.5,0.5], [1,0.5], [-1,0], [-0.5,0], [0,0], [0.5,0], [1,0], [-1,-0.5], [-0.5,-0.5], [0,-0.5], [0.5,-0.5], [1,-0.5], [-1,-1], [-0.5,-1], [0,-1], [0.5,-1], [1,-1] ] // //////////////////////////////////////////////////////////////// // addthink/scriptscope related local maxplayers = MaxClients().tointeger() for(local i = 1; i<=maxplayers; i++) { local player = PlayerInstanceFromIndex(i) if(!player)continue player.TerminateScriptScope() AddThinkToEnt(player,null) } ClearGameEventCallbacks() function OnGameEvent_player_spawn(args) { local player = GetPlayerFromUserID(args.userid) if(GetPropBool(player,"m_bIsABot")) EntFireByHandle(player,"runscriptcode","if(self.HasBotTag(`bot_swapper`))AddThinkToEnt(self,`Range_Think`)",-1,null,null) // bot tags get applied a frame too late for player_spawn to identify them } function OnGameEvent_player_death(args) { local player = GetPlayerFromUserID(args.userid) AddThinkToEnt(player,null) player.TerminateScriptScope() } __CollectGameEventCallbacks(this) // //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// // CHANGE THESE // ::bossrange <- 350 //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// // no longer BEEFY think function ::Range_Think <- function() { local gss = self.GetScriptScope() if(!("form" in gss)) { gss.form <- [1,1] gss.saveddist <- null } local eyepos = self.EyePosition() local eyeang = self.EyeAngles() local fwd = eyeang.Forward() local lft = eyeang.Left()*0.06 local up = eyeang.Up()*0.06 local player local playerdist foreach(k in multitrace) { local trace = { start = eyepos end = (fwd+(lft*k[0])+(up*k[1]))*(1<<30) ignore = self } TraceLineEx(trace) // DebugDrawLine(trace.start,trace.pos,0,255,255,false,0.03) // debug if("enthit" in trace&&trace.enthit.GetClassname()=="player"&&trace.enthit.GetTeam()!=self.GetTeam()) { local dist = (trace.enthit.GetOrigin()-eyepos).Length() if(playerdist==null||dist