Files
wnsrc/gamemodes/terrortown/entities/entities/ttt_carry_handler.lua
lifestorm df294d03aa Upload
2024-08-04 23:54:45 +03:00

163 lines
3.8 KiB
Lua

--[[
| 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/
--]]
AddCSLuaFile()
ENT.Type = "anim"
ENT.Carried = nil
ENT.CarriedMass = 0
ENT.PrevThink = 0
ENT.TargetPos = Vector(0,0,0)
ENT.TargetAng = Angle(0,0,0)
ENT.Owner = nil
function ENT:Initialize()
if SERVER and IsValid(self.Carried) then
-- self:SetModel("models/weapons/w_bugbait.mdl")
self:SetModel(self.Carried:GetModel())
-- self:SetSkin(self.Carried:GetSkin())
-- self:SetColor(se.Carried:GetColor())
end
self:PhysicsInit( SOLID_VPHYSICS )
self:SetMoveType( MOVETYPE_VPHYSICS )
self:SetSolid( SOLID_VPHYSICS )
self:SetCollisionGroup(COLLISION_GROUP_NONE)
-- self:SetSolid(SOLID_NONE)
self:SetNoDraw(true)
-- self:SetHealth(9999)
-- local ply = self:GetOwner()
-- self.Owner = ply
-- if IsValid(ply) then
-- self.TargetPos = ply:GetShootPos() + (ply:GetAimVector() * 70)
-- self.TargetAng = ply:GetAimVector()
-- end
if SERVER and IsValid(self.Carried) then
local phys = self:GetPhysicsObject()
local carphys = self.Carried:GetPhysicsObject()
if IsValid(phys) and IsValid(carphys) then
phys:Wake()
carphys:Wake()
phys:SetMass(9999)
phys:SetDamping(0, 1000)
carphys:SetDamping(0, 1000)
-- if not carphys:IsPenetrating() then
-- phys:SetPos(carphys:GetPos())
-- phys:SetAngle(carphys:GetAngle())
-- carphys:SetPos( phys:GetPos() )
-- carphys:SetAngle( phys:GetAngle() )
-- end
end
self.Carried:SetGravity(false)
self.Carried:SetOwner(self:GetOwner())
-- self.Carried:SetNoDraw(true)
-- self.Carried:SetSolid(SOLID_NONE)
end
end
function ENT:OnRemove()
if IsValid(self.Carried) then
self.Carried:SetGravity(true)
self.Carried:SetOwner(nil)
-- self.Carried:SetNoDraw(false)
-- self.Carried:SetSolid(SOLID_VPHYSICS)
self.Carried:SetMoveType(MOVETYPE_VPHYSICS)
local carphys = self.Carried:GetPhysicsObject()
if IsValid(carphys) then
carphys:SetDamping(0,0)
end
self.Carried:PhysWake()
end
end
--function ENT:Think()
-- if CLIENT then return end
--
-- -- Check on all entities involved
--
-- local obj = self.Carried
-- local ply = self:GetOwner()
-- if not IsValid(obj) or not IsValid(ply) or not ply:Alive() then
-- self:Remove()
-- return
-- end
--
--
--
-- -- Check some other requirements
-- local spos = ply:GetShootPos()
-- if ply:GetGroundEntity() == obj or obj:NearestPoint(spos):Distance(spos) > 150 then
-- self:Remove()
-- return
-- end
--
--
-- self.TargetPos = spos + (ply:GetAimVector() * 70)
-- self.TargetAng = ply:GetAimVector()
--
-- local phys = self:GetPhysicsObject()
-- local carryphys = obj:GetPhysicsObject()
-- if IsValid(phys) and IsValid(carryphys) then
-- if phys:IsPenetrating() then
-- self:Remove()
-- return
---- self.TargetPos = phys:GetPos() + Vector(0,0,5)
---- phys:SetPos(self.TargetPos)
-- end
--
-- carryphys:SetPos(phys:GetPos())
-- carryphys:SetAngle(phys:GetAngles())
-- carryphys:SetVelocity(phys:GetVelocity())
-- end
--
--end
--function ENT:PhysicsSimulate(phys, delta)
-- phys:Wake()
--
-- local p = {}
-- p.pos = self.TargetPos
-- p.angle = self.TargetAng
-- p.secondstoarrive = 0.05
-- p.maxangular = 100
-- p.maxangulardamp = 10000
-- p.maxspeed = 100
-- p.maxspeeddamp = 1000
-- p.dampfactor = 0.8
-- p.teleportdistance = 0
-- p.deltatime = delta
--
-- phys:ComputeShadowControl(p)
--end
function ENT:OnTakeDamage(dmg)
-- do nothing
end