add sborka

This commit is contained in:
2026-03-31 10:27:04 +03:00
commit f5e5f56c84
2345 changed files with 382127 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
ENT.Type = "anim"
ENT.Base = "base_entity"
ENT.PrintName = "Nuclear Radiation"
ENT.Author = ""
ENT.Information = ""
ENT.Spawnable = false
ENT.AdminSpawnable = false
ENT.Life = 10
ENT.MaxRadius = 7500
AddCSLuaFile()
function ENT:Initialize()
if SERVER then
self:SetModel( "models/weapons/w_eq_smokegrenade_thrown.mdl" )
self:SetMoveType( MOVETYPE_NONE )
self:SetSolid( SOLID_NONE )
self:DrawShadow( false )
end
self.SpawnTime = CurTime()
self.dt = CurTime() + self.Life
util.ScreenShake(self:GetPos(), 16, 30, self.Life, self.MaxRadius)
if CLIENT then return end
for i, k in pairs(ents.FindInSphere(self:GetPos(), self.MaxRadius)) do
if k:GetClass() == "func_breakable_surf" then
k:Fire("shatter", "", 0)
elseif k:GetClass() == "func_breakable" then
k:Fire("break", "", 0)
end
local phys = k:GetPhysicsObject()
if IsValid(phys) then
local vec = (k:GetPos() - self:GetPos()) * 500
phys:ApplyForceCenter(vec)
end
end
end
function ENT:RadiationAttack()
local d = (CurTime() - self.SpawnTime) / self.Life
local radius = self.MaxRadius * d
local dmg = DamageInfo()
dmg:SetDamage((1 - d) * 5000)
dmg:SetDamageType(DMG_RADIATION)
dmg:SetDamagePosition(self:GetPos())
dmg:SetAttacker(self:GetOwner() or self.Attacker)
dmg:SetInflictor(self)
for i, k in pairs(ents.FindInSphere(self:GetPos(), radius)) do
if !IsValid(k) then continue end
constraint.RemoveAll(k)
k:TakeDamageInfo(dmg)
end
end
function ENT:Think()
if SERVER then
if !self:GetOwner():IsValid() then self:Remove() return end
self:RadiationAttack()
self:NextThink(CurTime() + 1)
if self.dt < CurTime() then
SafeRemoveEntity(self)
end
end
return true
end
function ENT:Draw()
return false
end