/*------------------------------------------------------------------------------ ogniK wrote the base of this Kilburn helped solve the matrix issue because we were dumb and used a string -CBB */------------------------------------------------------------------------------ matproxy.Add( { name = "CarbonHealthModulate", init = function( self, mat, values ) -- Store the name of the variable we want to set self.ResultTo = values.resultvar end, bind = function( self, mat, ent ) if not IsValid( ent ) then return end local m = Matrix() --m:Scale(Vector(1, 0.5, 1)) --m:Translate(Vector(0, 0.1, 0)) -- If entity is a ragdoll try to convert it into the player -- ( this applies to their corpses ) if ( ent:IsRagdoll() ) then local owner = ent:GetRagdollOwner() ent = IsValid(owner) and owner or ent m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, 0, 0)) end local plhp = ent:Health() / ent:GetMaxHealth() * 100 if ent:IsPlayer() or ent:IsNPC() then if plhp == 100 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, 0, 0)) elseif plhp >= 95 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.1, 0)) elseif plhp >= 90 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.15, 0)) elseif plhp >= 85 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.2, 0)) elseif plhp >= 80 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.25, 0)) elseif plhp >= 75 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.3, 0)) elseif plhp >= 70 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.35, 0)) elseif plhp >= 65 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.4, 0)) elseif plhp >= 60 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.45, 0)) elseif plhp >= 55 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.5, 0)) elseif plhp >= 50 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.55, 0)) elseif plhp >= 45 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.6, 0)) elseif plhp >= 40 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.65, 0)) elseif plhp >= 35 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.7, 0)) elseif plhp >= 30 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.75, 0)) elseif plhp >= 25 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.8, 0)) elseif plhp >= 20 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.85, 0)) elseif plhp >= 15 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -0.9, 0)) elseif plhp >= 10 then m:Scale(Vector(1, 0.51, 1)) m:Translate(Vector(0, -0.95, 0)) elseif plhp > 0 then m:Scale(Vector(1, 0.52, 1)) m:Translate(Vector(0, -1.0, 0)) elseif plhp <= 0 then m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, -1.02, 0)) else m:Scale(Vector(1, 0.5, 1)) m:Translate(Vector(0, 0, 0)) end end mat:SetMatrix( self.ResultTo, m ) end } )