Super-Nostalgia-Zone/Tools/Slingshot/PelletScript/init.server.lua

64 lines
1.5 KiB
Lua

local debris = game:service("Debris")
pellet = script.Parent
damage = 8
local allowTeamDamage = false
local ServerStorage = game:GetService("ServerStorage")
if ServerStorage:FindFirstChild("TeamDamage") then
allowTeamDamage = ServerStorage.TeamDamage.Value
end
function tagHumanoid(humanoid)
-- todo: make tag expire
local tag = pellet:findFirstChild("creator")
if tag ~= nil then
-- kill all other tags
while(humanoid:findFirstChild("creator") ~= nil) do
humanoid:findFirstChild("creator").Parent = nil
end
local new_tag = tag:clone()
new_tag.Parent = humanoid
debris:AddItem(new_tag, 1)
end
end
function onTouched(hit)
local hitChar = hit:FindFirstAncestorWhichIsA("Model")
local humanoid = hitChar:FindFirstChild("Humanoid")
if humanoid ~= nil then
local canDamage = true
local tag = pellet:FindFirstChild("creator")
if tag then
local creator = tag.Value
local player = game.Players:GetPlayerFromCharacter(hitChar)
if creator and player then
if creator.Team and player.Team and creator.Team == player.Team then
canDamage = allowTeamDamage
end
end
end
if canDamage then
tagHumanoid(humanoid)
humanoid:TakeDamage(damage)
end
else
damage = damage / 2
if damage < 1 then
connection:disconnect()
pellet.Parent = nil
end
end
end
connection = pellet.Touched:connect(onTouched)
r = game:service("RunService")
t, s = r.Stepped:wait()
d = t + 2.0 - s
while t < d do
t = r.Stepped:wait()
end
pellet.Parent = nil