Super-Nostalgia-Zone/Tools/PaintballGun/Paintball/init.server.lua

84 lines
1.7 KiB
Lua

local ball = script.Parent
local damage = 20
function onTouched(hit)
if not (hit.CanCollide and hit.Parent) then
return
end
local humanoid = hit.Parent:findFirstChild("Humanoid")
if hit:GetMass() < 1.2 * 200 then
hit.BrickColor = ball.BrickColor
end
-- make a splat
for i = 1, 3 do
local s = Instance.new("Part")
s.Shape = 1 -- block
s.formFactor = 2 -- plate
s.Size = Vector3.new(1,.4,1)
s.BrickColor = ball.BrickColor
local cleanup = ball.BrickCleanup:Clone()
cleanup.Disabled = false
cleanup.Parent = s
local v = Vector3.new(math.random(-1, 1), math.random(0, 1), math.random(-1, 1))
s.Velocity = 15 * v
s.CFrame = CFrame.new(ball.Position + v, v)
s.Parent = workspace
end
if humanoid ~= nil then
local canDamage = true
local tag = ball:FindFirstChild("creator")
local char = humanoid:FindFirstAncestorWhichIsA("Model")
if tag and char then
local creator = tag.Value
local player = game.Players:GetPlayerFromCharacter(char)
if creator and player then
if creator.Team and player.Team and creator.Team == player.Team then
canDamage = false
end
end
end
if canDamage then
tagHumanoid(humanoid)
humanoid:TakeDamage(damage)
wait(2)
untagHumanoid(humanoid)
end
end
connection:disconnect()
ball.Parent = nil
end
function tagHumanoid(humanoid)
-- todo: make tag expire
local tag = ball:findFirstChild("creator")
if tag ~= nil then
local new_tag = tag:clone()
new_tag.Parent = humanoid
end
end
function untagHumanoid(humanoid)
if humanoid ~= nil then
local tag = humanoid:findFirstChild("creator")
if tag ~= nil then
tag.Parent = nil
end
end
end
connection = ball.Touched:Connect(onTouched)
wait(8)
ball:Destroy()