4ªU>nutscripts/vscriptsdirector_base_addon· ˜ÿÅÿÿ::Throwhit <- function() { local nades = ["molotov_projectile", "pipe_bomb_projectile", "vomitjar_projectile"] foreach (n in nades) { local p = null while ((p = Entities.FindByClassname(p, n)) != null) { if (!p.IsValid()) continue; p.ValidateScriptScope() local s = p.GetScriptScope() if (!("hit" in s)) s.hit <- false if (s.hit) continue; local pos = p.GetOrigin() local vel = p.GetVelocity() local owner = ("GetOwnerEntity" in p) ? p.GetOwnerEntity() : null local guy = null while ((guy = Entities.FindByClassname(guy, "player")) != null) { if (guy.IsValid() && guy.IsSurvivor() && !guy.IsDead() && !guy.IsIncapacitated() && guy != owner) { local gPos = guy.GetOrigin() local zDiff = pos.z - gPos.z if (zDiff >= 0 && zDiff <= 65) { local xDiff = pos.x - gPos.x local yDiff = pos.y - gPos.y //I just farted if you're reading this if ((xDiff * xDiff) + (yDiff * yDiff) <= 784) { guy.TakeDamage(2, 0, p) local shove = pos - (gPos + Vector(0, 0, 40)) if (shove.Length() > 0.1) { shove.Norm() p.SetVelocity(shove * (vel.Length() * 0.15)) } s.hit = true EmitSoundOn("Flesh.ImpactHard", guy) break } } } } } } } local t = Entities.FindByName(null, "throw_tracker") if (t == null) { t = SpawnEntityFromTable("info_target", { targetname = "throw_tracker" }) t.ValidateScriptScope() t.GetScriptScope().Think <- function() { try { if ("Throwhit" in getroottable()) ::Throwhit() } catch(e) {} return 0.01 } AddThinkToEnt(t, "Think") }