64 lines
1.5 KiB
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
|