--[[ | 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/ --]] local model_orb = Model("models/Combine_Helicopter/helicopter_bomb01.mdl") function EFFECT:Init(data) self:SetPos(data:GetOrigin()) self.Radius = data:GetRadius() local rh = self.Radius self:SetRenderBounds(Vector(-rh, -rh, -rh), Vector(rh, rh, rh)) self.EndTime = CurTime() + data:GetScale() self.FadeTime = data:GetMagnitude() self.FadeIn = CurTime() + self.FadeTime self.FadeOut = self.EndTime - self.FadeTime self.Alpha = 0 self.Orb = ClientsideModel(model_orb, RENDERGROUP_TRANSLUCENT) self.Orb:SetPos(data:GetOrigin()) self.Orb:AddEffects(EF_NODRAW) local r = 28 / 2 -- hardcoded because stuff like :BoundingRadius won't work here self.EndScale = self.Radius / r end function EFFECT:Think() if self.EndTime < CurTime() then SafeRemoveEntity(self.Orb) return false end if self.FadeIn > CurTime() then self.Alpha = 1 - ((self.FadeIn - CurTime()) / self.FadeTime) elseif self.FadeOut < CurTime() then self.Alpha = 1 - ((CurTime() - self.FadeOut) / self.FadeTime) end self.Orb:SetModelScale(self.EndScale * self.Alpha, 0) local ang = self.Orb:GetAngles() ang.y = ang.y + 500 * FrameTime() self.Orb:SetAngles(ang) return IsValid(self.Orb) end local mat_orb = Material("models/effects/splodearc_sheet") function EFFECT:Render() render.MaterialOverride(mat_orb) render.SuppressEngineLighting( true ) render.SetColorModulation(0, 0, 1) render.SetBlend(0.8 * self.Alpha) self.Orb:DrawModel() render.SetBlend(1) render.SetColorModulation(1, 1, 1) render.SuppressEngineLighting(false) render.MaterialOverride() end